{"passport":{"unfragile":{"@version":"1.0","version":"2026-05","artifact":{"id":"awesome-bluesky","slug":"bluesky","name":"Bluesky","type":"mcp","url":"https://github.com/keturiosakys/bluesky-context-server","page_url":"https://unfragile.ai/bluesky","categories":["mcp-servers"],"tags":[],"pricing":{"model":"open_source","free":true,"starting_price":null},"status":"active","verified":false},"capabilities":[{"id":"awesome-bluesky__cap_0","uri":"capability://search.retrieval.bluesky.feed.query.and.retrieval","name":"bluesky feed query and retrieval","description":"Queries Bluesky's public API to retrieve feed data by connecting to the AT Protocol endpoints, parsing JSON responses, and materializing feed posts with metadata (author, timestamp, engagement metrics). Implements direct HTTP client integration with Bluesky's REST API rather than using a third-party SDK wrapper, enabling low-latency feed access without abstraction overhead.","intents":["I need to fetch a user's home feed or timeline programmatically","I want to retrieve posts from a specific Bluesky feed algorithm","I need to get feed data with full post metadata for downstream processing"],"best_for":["developers building Bluesky integrations or bots","teams building context servers or MCP-compatible tools","builders creating Bluesky analytics or monitoring systems"],"limitations":["Rate-limited by Bluesky API (typically 100-300 requests/min depending on endpoint)","No built-in pagination state management — caller must track cursors manually","Requires valid Bluesky credentials or public API access; private feeds require authentication","Feed data is point-in-time snapshot; no streaming or real-time push support"],"requires":["Bluesky account or API credentials","Network connectivity to Bluesky API endpoints (api.bsky.app)","HTTP client library (likely built-in to language runtime)","Understanding of AT Protocol feed identifiers and cursor-based pagination"],"input_types":["feed identifier (string, e.g., 'home', 'discover', or custom feed URI)","optional pagination cursor (string)","optional limit parameter (integer, 1-100)"],"output_types":["JSON array of post objects","structured post metadata (author DID, URI, timestamp, like/repost counts)","pagination cursor for next batch"],"categories":["search-retrieval","social-media-integration"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-bluesky__cap_1","uri":"capability://search.retrieval.bluesky.post.search.and.filtering","name":"bluesky post search and filtering","description":"Implements search capability against Bluesky posts using the AT Protocol search endpoints, supporting keyword matching, author filtering, and temporal range queries. Returns ranked post results with relevance scoring and allows filtering by engagement metrics (likes, reposts) or post type (text, links, media). Uses query parameter composition to construct AT Protocol-compatible search requests.","intents":["I need to search for posts matching specific keywords or topics on Bluesky","I want to find posts from a specific author within a date range","I need to filter posts by engagement level or content type for curation"],"best_for":["developers building Bluesky search tools or discovery features","teams creating content curation or monitoring systems","builders implementing semantic search over Bluesky content"],"limitations":["Search is limited to public posts; private/unlisted content is not searchable","Search results may have 5-30 second latency due to indexing lag","No full-text semantic search (keyword-only); relevance ranking is basic","Search API has stricter rate limits than feed endpoints (typically 30-50 req/min)","No support for complex boolean queries (AND/OR/NOT operators)"],"requires":["Bluesky API access (public endpoints, no auth required for basic search)","Query string with at least one search term","Understanding of AT Protocol post URIs and author DIDs for filtering"],"input_types":["search query string (text, e.g., 'climate change')","optional author DID filter (string)","optional date range (ISO 8601 timestamps)","optional engagement threshold (integer, e.g., min_likes: 10)"],"output_types":["ranked JSON array of matching posts","post metadata with relevance score","author information and engagement metrics"],"categories":["search-retrieval","data-processing-analysis"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-bluesky__cap_2","uri":"capability://tool.use.integration.mcp.model.context.protocol.resource.exposure.for.bluesky.data","name":"mcp (model context protocol) resource exposure for bluesky data","description":"Exposes Bluesky feeds and posts as MCP resources that can be consumed by LLM agents and context servers. Implements MCP resource handlers that wrap feed/post queries and present results as structured, queryable resources with standardized schemas. Enables LLM agents to access Bluesky data through a unified MCP interface without direct API knowledge.","intents":["I want my LLM agent to access Bluesky feeds as MCP resources","I need to expose Bluesky posts as context for an AI assistant","I want to build an agent that can query and reason over Bluesky data"],"best_for":["developers building LLM agents with Bluesky context","teams integrating Bluesky into Claude or other MCP-compatible AI systems","builders creating multi-source context servers that include social media"],"limitations":["MCP resource schema must be predefined; dynamic schema generation is not supported","Resource materialization adds ~100-300ms per query due to MCP serialization","No built-in caching of MCP resources; each agent query triggers a fresh API call","MCP transport overhead limits throughput for high-frequency queries","Requires MCP-compatible client (Claude, custom LLM agents); not usable with standard REST clients"],"requires":["MCP server runtime (Node.js, Python, or language-specific MCP SDK)","MCP client that supports resource protocol (Claude, Cline, or custom agent)","Bluesky API credentials or public access","MCP schema definitions for feed and post resources"],"input_types":["MCP resource request with query parameters (feed ID, search terms, filters)","optional pagination tokens"],"output_types":["MCP resource response with structured post/feed data","JSON-LD or JSON schema-compliant resource representation","metadata for resource navigation and pagination"],"categories":["tool-use-integration","memory-knowledge"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-bluesky__cap_3","uri":"capability://memory.knowledge.context.materialization.and.caching.for.bluesky.data","name":"context materialization and caching for bluesky data","description":"Materializes Bluesky feed and post data into an in-memory or persistent cache, enabling fast repeated access without hitting rate limits. Implements TTL-based cache invalidation and optional persistent storage (file, database) for context that needs to survive server restarts. Supports cache warming by pre-fetching feeds on startup or on a schedule.","intents":["I want to cache Bluesky feed data to avoid rate limit exhaustion","I need persistent storage of Bluesky posts for offline analysis","I want to pre-warm context with popular feeds on server startup"],"best_for":["teams running context servers with high query volume","developers building Bluesky bots that need to minimize API calls","builders creating offline-capable Bluesky tools"],"limitations":["In-memory cache is lost on server restart unless persisted","Cache invalidation is time-based (TTL); no event-driven invalidation on Bluesky updates","Stale data risk: cached posts may be outdated if feed is updated frequently","Cache size grows linearly with number of feeds/posts cached; no automatic eviction policy","Persistent storage requires external dependency (file system, database); adds operational complexity"],"requires":["In-memory storage (built-in to runtime) or external cache store (Redis, SQLite, PostgreSQL)","TTL configuration (seconds or minutes)","Optional: persistent storage backend for durability"],"input_types":["feed identifier or post URI to cache","TTL value (integer, seconds)","optional cache key prefix (string)"],"output_types":["cached post/feed data (JSON)","cache hit/miss indicator","cache metadata (age, TTL remaining)"],"categories":["memory-knowledge","automation-workflow"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-bluesky__cap_4","uri":"capability://tool.use.integration.at.protocol.authentication.and.session.management","name":"at protocol authentication and session management","description":"Handles Bluesky/AT Protocol authentication by managing session tokens, refreshing credentials, and maintaining authenticated HTTP clients. Supports both user credentials (username/password) and app-specific tokens. Implements automatic token refresh to prevent session expiration during long-running operations.","intents":["I need to authenticate with Bluesky API using my credentials","I want to maintain an authenticated session for multiple API calls","I need to refresh my auth token before it expires"],"best_for":["developers building authenticated Bluesky integrations","teams running long-lived context servers that need persistent auth","builders creating Bluesky bots or automation tools"],"limitations":["Credentials must be stored securely; no built-in encryption or secrets management","Token refresh adds ~200-500ms latency on first call after expiration","No support for OAuth2 or delegated auth flows; requires direct credential storage","Session tokens are in-memory only; lost on server restart unless persisted","No audit logging of auth events; difficult to track credential usage"],"requires":["Bluesky username and password, or pre-generated app token","Secure credential storage (environment variables, secrets manager)","HTTP client with cookie/header management"],"input_types":["username (string)","password (string) or app token (string)"],"output_types":["authenticated HTTP client (ready for API calls)","session token (string, for manual reuse)","token expiration timestamp"],"categories":["tool-use-integration","safety-moderation"],"confidence":0.5,"matches":0,"success_rate":0},{"id":"awesome-bluesky__cap_5","uri":"capability://data.processing.analysis.post.metadata.extraction.and.normalization","name":"post metadata extraction and normalization","description":"Extracts and normalizes metadata from Bluesky posts (author, timestamp, engagement metrics, media attachments, reply chains) into a consistent schema. Handles AT Protocol's nested data structures and converts them to flat, queryable formats. Supports extraction of embedded links, hashtags, and mentions for downstream processing.","intents":["I need to extract structured metadata from Bluesky posts for analysis","I want to normalize post data across different API responses","I need to identify links, hashtags, and mentions in posts"],"best_for":["developers building Bluesky analytics or data pipelines","teams creating content analysis or moderation tools","builders implementing semantic indexing of Bluesky posts"],"limitations":["Extraction is schema-dependent; changes to AT Protocol may break parsers","Nested reply chains require recursive traversal; can be expensive for deep threads","Media attachment extraction is limited to metadata; does not download or process images/videos","Hashtag and mention extraction uses simple regex; may miss edge cases in AT Protocol syntax","No deduplication of extracted entities; caller must handle duplicates"],"requires":["Raw post JSON from Bluesky API","Knowledge of AT Protocol post schema (or use provided schema definitions)"],"input_types":["raw post JSON object from Bluesky API","optional schema version (string, for backward compatibility)"],"output_types":["normalized post object with flat structure","extracted metadata (author DID, timestamp, metrics)","list of embedded entities (links, hashtags, mentions)","reply chain information (parent post, thread root)"],"categories":["data-processing-analysis","text-generation-language"],"confidence":0.5,"matches":0,"success_rate":0}],"trust":{"score":25,"verified":false,"data_access_risk":"high","permissions":["Bluesky account or API credentials","Network connectivity to Bluesky API endpoints (api.bsky.app)","HTTP client library (likely built-in to language runtime)","Understanding of AT Protocol feed identifiers and cursor-based pagination","Bluesky API access (public endpoints, no auth required for basic search)","Query string with at least one search term","Understanding of AT Protocol post URIs and author DIDs for filtering","MCP server runtime (Node.js, Python, or language-specific MCP SDK)","MCP client that supports resource protocol (Claude, Cline, or custom agent)","Bluesky API credentials or public access"],"failure_modes":["Rate-limited by Bluesky API (typically 100-300 requests/min depending on endpoint)","No built-in pagination state management — caller must track cursors manually","Requires valid Bluesky credentials or public API access; private feeds require authentication","Feed data is point-in-time snapshot; no streaming or real-time push support","Search is limited to public posts; private/unlisted content is not searchable","Search results may have 5-30 second latency due to indexing lag","No full-text semantic search (keyword-only); relevance ranking is basic","Search API has stricter rate limits than feed endpoints (typically 30-50 req/min)","No support for complex boolean queries (AND/OR/NOT operators)","MCP resource schema must be predefined; dynamic schema generation is not supported","builder identity is not verified yet","no observed match outcomes yet"],"rank_breakdown":{"adoption":0.05,"quality":0.22,"ecosystem":0.39999999999999997,"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:02.371Z","last_scraped_at":"2026-05-03T14:00:15.503Z","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","compare_url":"https://unfragile.ai/compare?artifact=bluesky"}},"signature":"e5MjPtF4X5CiqtVgGDqVB3Dy+4FZAbSdyXV4okXn0ryRXyHPSjHI1T3Ezjv02lJMQ/piCFkS0Jzn6OPqOr9kBA==","signedAt":"2026-06-23T03:40:53.414Z","signedBy":"unfragile.ai","version":1},"_links":{"self":"https://unfragile.ai/api/v1/passport/bluesky","artifact":"https://unfragile.ai/bluesky","verify":"https://unfragile.ai/api/v1/verify?slug=bluesky","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"}}