{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"bluesky-mcp-server","slug":"bluesky-mcp-server","name":"Bluesky MCP Server","type":"mcp","url":"https://github.com/keturiosakys/bluesky-context-server","page_url":"https://unfragile.ai/bluesky-mcp-server","categories":["mcp-servers"],"tags":["bluesky","social-media","atproto","community"],"pricing":{"model":"free","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"bluesky-mcp-server__cap_0","uri":"capability://tool.use.integration.at.protocol.native.post.creation.with.rich.text.formatting","name":"at protocol-native post creation with rich text formatting","description":"Creates posts on Bluesky using the AT Protocol's native post creation endpoint, supporting rich text formatting through facet-based markup (mentions, hashtags, links, embedded media). The implementation directly interfaces with the Bluesky PDS (Personal Data Server) API, handling text segmentation and facet coordinate calculation to map formatted text spans to byte offsets, enabling structured social content creation without manual coordinate management.","intents":["Create automated posts on Bluesky from LLM outputs or external data sources","Build bots that post with proper mention and hashtag formatting","Integrate Bluesky publishing into multi-platform content workflows","Generate posts with embedded links and media references"],"best_for":["Bot developers building Bluesky automation","Content creators integrating Bluesky into publishing pipelines","Teams building social media orchestration tools"],"limitations":["Requires valid AT Protocol session token with post creation permissions","Facet coordinate calculation is byte-offset dependent — Unicode handling must be precise or posts fail validation","No built-in rate limiting — caller must implement backoff to avoid PDS throttling","Media embedding requires pre-uploaded blob references; direct file upload not exposed"],"requires":["Bluesky account with valid credentials","AT Protocol session token (obtained via login)","MCP client supporting tool invocation","Network connectivity to Bluesky PDS endpoint"],"input_types":["text (post content)","structured facets (mentions, hashtags, links)","blob references (for media)"],"output_types":["structured post record (URI, CID, timestamp)","error response with validation details"],"categories":["tool-use-integration","social-media-automation"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"bluesky-mcp-server__cap_1","uri":"capability://search.retrieval.timeline.feed.retrieval.with.cursor.based.pagination","name":"timeline feed retrieval with cursor-based pagination","description":"Fetches paginated timeline feeds (home, author, or custom algorithm feeds) from Bluesky using AT Protocol's cursor-based pagination mechanism. The implementation maintains cursor state across requests, allowing efficient incremental fetching of posts without re-downloading previously seen content. Supports filtering by feed algorithm and handles the Bluesky feed generator protocol for custom feed subscriptions.","intents":["Retrieve and monitor a user's home timeline for analysis or archival","Fetch all posts from a specific author for content analysis","Implement custom feed aggregation by combining multiple timeline sources","Build real-time monitoring systems that poll timelines incrementally"],"best_for":["Data analysts building Bluesky content analysis pipelines","Developers creating feed aggregation or curation tools","Researchers collecting social media datasets","Bot developers that need to monitor timelines for triggers"],"limitations":["Cursor pagination is opaque — cannot jump to arbitrary timestamps, only iterate forward/backward","Feed generators (custom algorithms) require explicit subscription; not all feeds are accessible without following","No built-in deduplication — caller must track seen posts if re-fetching overlapping ranges","Rate limits apply per-feed; high-frequency polling will trigger backoff"],"requires":["Valid AT Protocol session token","Bluesky account with feed access permissions","MCP client with streaming or pagination support"],"input_types":["feed identifier (home, author DID, feed URI)","cursor string (for pagination)","limit parameter (posts per request)"],"output_types":["array of post records with metadata (author, timestamp, engagement metrics)","cursor string for next page","feed metadata (algorithm name, description)"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"bluesky-mcp-server__cap_2","uri":"capability://search.retrieval.user.and.post.search.with.full.text.indexing","name":"user and post search with full-text indexing","description":"Performs full-text search across Bluesky's indexed content (users, posts, hashtags) using the AT Protocol's search endpoints. The implementation queries Bluesky's search service which maintains inverted indices over post text and user profiles, returning ranked results with relevance scoring. Supports filtering by content type (users vs posts) and handles pagination of search results.","intents":["Find users by name, handle, or bio keywords","Search for posts containing specific topics or keywords","Discover trending hashtags or discussion threads","Build search-driven discovery features into applications"],"best_for":["Developers building Bluesky search or discovery UIs","Researchers analyzing discussion trends and topics","Content moderation teams finding problematic content","Bot developers that need to find relevant posts or users"],"limitations":["Search index has latency — newly posted content may not appear in results for several seconds","Relevance ranking is opaque; no control over result ordering beyond Bluesky's algorithm","Search is limited to public content; private posts and DMs are not searchable","Query syntax is limited — no boolean operators or advanced query language support"],"requires":["Valid AT Protocol session token","Network connectivity to Bluesky search service","MCP client supporting tool invocation"],"input_types":["search query string (text)","search type filter (users, posts, or both)","limit and offset for pagination"],"output_types":["array of user profiles (handle, display name, bio, follower count)","array of posts (author, text, engagement metrics, timestamp)","total result count"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"bluesky-mcp-server__cap_3","uri":"capability://tool.use.integration.follow.unfollow.relationship.management.with.graph.updates","name":"follow/unfollow relationship management with graph updates","description":"Manages follow relationships by creating or deleting follow records in the user's graph, using AT Protocol's graph operations. The implementation updates the user's follow list (a special graph collection) by adding or removing DID references, with changes immediately reflected in the user's social graph. Supports batch operations and handles graph consistency across the distributed AT Protocol network.","intents":["Automatically follow users matching certain criteria (e.g., new followers, topic experts)","Unfollow users based on engagement or content filters","Build automated account setup workflows that follow recommended users","Implement follow-back bots or community management automation"],"best_for":["Bot developers building community management tools","Account automation workflows","Social graph analysis and relationship management","Teams building Bluesky account onboarding flows"],"limitations":["Graph updates are asynchronous — follow may not be immediately visible across all Bluesky servers","No built-in rate limiting — excessive follows/unfollows will trigger account restrictions","Cannot follow private accounts without their approval (if privacy settings enforce it)","Batch operations not natively supported; must iterate individual follow/unfollow calls"],"requires":["Valid AT Protocol session token with graph write permissions","Target user DID (not handle — must resolve handle to DID first)","MCP client supporting tool invocation"],"input_types":["target user DID","action (follow or unfollow)"],"output_types":["confirmation record (follow URI, timestamp)","error response if operation fails (user not found, already following, etc.)"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"bluesky-mcp-server__cap_4","uri":"capability://search.retrieval.notification.feed.monitoring.with.filtering","name":"notification feed monitoring with filtering","description":"Retrieves and monitors a user's notification feed (likes, reposts, replies, follows) from the AT Protocol's notification service. The implementation fetches paginated notification records with metadata about the action type, actor, and timestamp, supporting filtering by notification type (e.g., only likes, only follows). Handles cursor-based pagination to efficiently track new notifications without re-fetching.","intents":["Monitor engagement on posts (likes, reposts, replies) in real-time","Track new followers and follow-backs","Build notification dashboards or alert systems","Implement engagement-triggered automation (e.g., reply to replies)"],"best_for":["Developers building Bluesky notification or engagement dashboards","Bot developers that respond to engagement events","Content creators monitoring post performance","Community managers tracking mentions and interactions"],"limitations":["Notification feed is not real-time — there is latency between action and notification appearance","Filtering is client-side; no server-side filtering reduces bandwidth but requires post-processing","Notifications are ephemeral — old notifications may be pruned from the feed after a retention period","No webhook support — must poll the notification endpoint for updates"],"requires":["Valid AT Protocol session token","MCP client supporting pagination","Network connectivity to Bluesky notification service"],"input_types":["cursor string (for pagination)","limit parameter (notifications per request)","optional filter type (likes, reposts, replies, follows)"],"output_types":["array of notification records (action type, actor DID, target post/user, timestamp)","cursor string for next page","notification count"],"categories":["search-retrieval","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"bluesky-mcp-server__cap_5","uri":"capability://search.retrieval.handle.to.did.resolution.with.caching","name":"handle-to-did resolution with caching","description":"Resolves Bluesky user handles (e.g., @user.bsky.social) to their underlying Decentralized Identifiers (DIDs) using AT Protocol's identity resolution. The implementation queries the Bluesky directory service or PLC (Public LEDGER Consortium) to map handles to DIDs, with optional caching to reduce repeated lookups. Handles both Bluesky-hosted handles and custom domain handles via DNS TXT records.","intents":["Convert user handles to DIDs for API operations that require DIDs","Validate that a handle exists and is active","Build user lookup features that accept handles as input","Implement handle-to-DID mapping caches for performance"],"best_for":["Developers building Bluesky user lookup or profile features","Bot developers that accept user handles as input","Applications that need to resolve handles to DIDs for graph operations","Systems that cache identity mappings for performance"],"limitations":["Handle resolution has latency — DNS or directory lookups may take 100-500ms","Handles can be reassigned — cached mappings may become stale if a user changes their handle","Custom domain handles require DNS TXT record lookups which are slower than directory lookups","No bulk resolution API — must resolve handles one at a time"],"requires":["Network connectivity to Bluesky directory service or PLC","MCP client supporting tool invocation","Optional: DNS resolver for custom domain handles"],"input_types":["user handle string (e.g., user.bsky.social or user.example.com)"],"output_types":["DID string (did:plc:...)","error response if handle not found or invalid"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"bluesky-mcp-server__cap_6","uri":"capability://tool.use.integration.mcp.tool.schema.exposure.for.llm.function.calling","name":"mcp tool schema exposure for llm function calling","description":"Exposes all Bluesky operations (post creation, timeline fetching, search, follows, notifications) as MCP tools with JSON schema definitions, enabling LLM agents to invoke them via function calling. The implementation defines tool schemas with input parameters, output types, and descriptions, allowing Claude and other LLM clients to understand and call Bluesky operations as part of agentic workflows. Handles parameter validation and error translation back to the LLM.","intents":["Enable Claude and other LLMs to autonomously post, search, and manage follows on Bluesky","Build LLM agents that interact with Bluesky as part of multi-step workflows","Create conversational interfaces that can query Bluesky data on behalf of users","Integrate Bluesky into LLM-powered automation and decision-making systems"],"best_for":["LLM application developers building Bluesky-integrated agents","Teams using Claude or other LLMs to automate Bluesky workflows","Developers building conversational interfaces to Bluesky","Researchers exploring LLM-driven social media automation"],"limitations":["LLM may hallucinate or misuse tools — requires guardrails and validation","Tool schemas must be kept in sync with underlying API changes","No built-in rate limiting at the MCP layer — LLM may trigger excessive API calls","Error handling depends on LLM's ability to interpret error messages and retry"],"requires":["MCP-compatible LLM client (Claude, etc.)","Valid AT Protocol session token passed to MCP server","MCP server running and accessible to LLM client"],"input_types":["tool invocation with parameters (from LLM function calling)"],"output_types":["tool result (structured data or error message)","JSON schema definitions for tool discovery"],"categories":["tool-use-integration","planning-reasoning"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"bluesky-mcp-server__cap_7","uri":"capability://tool.use.integration.at.protocol.session.management.with.token.refresh","name":"at protocol session management with token refresh","description":"Manages AT Protocol authentication by handling login, session token generation, and token refresh. The implementation exchanges Bluesky credentials for session tokens (access and refresh tokens), stores them securely, and automatically refreshes expired access tokens using the refresh token. Supports both password-based login and pre-existing token injection for stateless operation.","intents":["Authenticate with Bluesky using credentials or existing tokens","Maintain long-lived sessions without re-authenticating","Automatically refresh expired tokens to prevent authentication failures","Support both interactive and non-interactive authentication flows"],"best_for":["Bot developers building long-running Bluesky automation","MCP server operators that need persistent authentication","Applications requiring stateless token-based authentication","Teams managing multiple Bluesky accounts programmatically"],"limitations":["Refresh tokens have limited lifetime — long-running processes may eventually require re-authentication","Storing credentials or tokens requires secure storage (environment variables, secrets manager)","No built-in multi-account support — each session is tied to a single account","Token refresh is synchronous — may add latency to requests if token is expired"],"requires":["Bluesky account credentials (handle and password) OR pre-existing session tokens","Secure storage for tokens (environment variables, secrets manager, etc.)","Network connectivity to Bluesky PDS for token refresh"],"input_types":["handle (username)","password OR existing access/refresh tokens"],"output_types":["session object with access token, refresh token, and expiration","error response if authentication fails"],"categories":["tool-use-integration","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"bluesky-mcp-server__cap_8","uri":"capability://automation.workflow.batch.post.operations.with.transaction.like.semantics","name":"batch post operations with transaction-like semantics","description":"Supports creating multiple posts in sequence with optional reply threading, implementing transaction-like semantics where later posts can reference earlier posts created in the same batch. Uses AT Protocol's record creation with reply references (inReplyTo) to establish post relationships, enabling programmatic creation of threaded conversations or multi-post updates. Handles failures gracefully by continuing with subsequent posts and returning partial results.","intents":["Create multi-post threads or conversations programmatically","Publish coordinated updates across multiple posts","Build tools that generate threaded content automatically","Implement rollback-like behavior for failed posts in a sequence"],"best_for":["Bot developers creating threaded content","Content automation systems publishing multi-post updates","Agents that need to create structured conversations"],"limitations":["No true transactions; if a post fails, earlier posts are not rolled back","Reply references must be calculated manually; no automatic thread detection","Batch size limited by rate limiting; large batches may be throttled","No atomic guarantees; partial failures result in incomplete threads","Post ordering depends on server-side timestamps; client-side ordering is not guaranteed"],"requires":["Valid AT Protocol session token with write permissions","Array of post objects with optional reply references","MCP client supporting sequential tool calls"],"input_types":["JSON array (posts with text, facets, optional inReplyTo references)"],"output_types":["JSON array (created post records with URIs and CIDs)","JSON array (errors for failed posts, if any)"],"categories":["automation-workflow","tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"bluesky-mcp-server__headline","uri":"capability://tool.use.integration.mcp.server.for.bluesky.social.network","name":"mcp server for bluesky social network","description":"A community-driven MCP server designed specifically for the Bluesky social network, enabling users to create posts, read timelines, and manage interactions seamlessly within the AT Protocol framework.","intents":["best MCP server for Bluesky","MCP server for social media management","top community MCP servers for AT Protocol","Bluesky server for user engagement","MCP solutions for social networking"],"best_for":["Bluesky users","developers building on AT Protocol"],"limitations":[],"requires":[],"input_types":[],"output_types":[],"categories":["tool-use-integration"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":59,"verified":false,"data_access_risk":"high","permissions":["Bluesky account with valid credentials","AT Protocol session token (obtained via login)","MCP client supporting tool invocation","Network connectivity to Bluesky PDS endpoint","Valid AT Protocol session token","Bluesky account with feed access permissions","MCP client with streaming or pagination support","Network connectivity to Bluesky search service","Valid AT Protocol session token with graph write permissions","Target user DID (not handle — must resolve handle to DID first)"],"failure_modes":["Requires valid AT Protocol session token with post creation permissions","Facet coordinate calculation is byte-offset dependent — Unicode handling must be precise or posts fail validation","No built-in rate limiting — caller must implement backoff to avoid PDS throttling","Media embedding requires pre-uploaded blob references; direct file upload not exposed","Cursor pagination is opaque — cannot jump to arbitrary timestamps, only iterate forward/backward","Feed generators (custom algorithms) require explicit subscription; not all feeds are accessible without following","No built-in deduplication — caller must track seen posts if re-fetching overlapping ranges","Rate limits apply per-feed; high-frequency polling will trigger backoff","Search index has latency — newly posted content may not appear in results for several seconds","Relevance ranking is opaque; no control over result ordering beyond Bluesky's algorithm","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.7,"quality":0.8500000000000001,"ecosystem":0.52,"match_graph":0.25,"freshness":0.52,"weights":{"adoption":0.25,"quality":0.25,"ecosystem":0.15,"match_graph":0.23,"freshness":0.12}},"observed_outcomes":{"matches":0,"success_rate":0,"avg_confidence":0,"top_intents":[],"last_matched_at":null},"maintenance":{"status":"active","updated_at":"2026-06-17T09:51:04.690Z","last_scraped_at":null,"last_commit":null},"community":{"stars":null,"forks":null,"weekly_downloads":null,"model_downloads":null,"model_likes":null}},"distribution":{"claim_url":"https://unfragile.ai/submit?claim=bluesky-mcp-server","compare_url":"https://unfragile.ai/compare?artifact=bluesky-mcp-server"}},"signature":"prp99VF8pV9kN06fDufYMxZcUxUw3bdyI5v0NfJELNWHEA4sVWFvxLcleTz2GIbM+PHwDbsC8zmKZBk5cDuKBQ==","signedAt":"2026-06-21T14:13:42.809Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/bluesky-mcp-server","artifact":"https://unfragile.ai/bluesky-mcp-server","verify":"https://unfragile.ai/api/v1/verify?slug=bluesky-mcp-server","publicKey":"https://unfragile.ai/api/v1/trust-passport-public-key","spec":"https://unfragile.ai/trust","schema":"https://unfragile.ai/schema.json","docs":"https://unfragile.ai/docs"}}