{"openapi":"3.0.3","info":{"title":"Gnist Context — Bluesky","description":"Bluesky social network — search posts, view profiles, browse feeds via the AT Protocol public API.\n\n- **MCP endpoint:** `https://context.gnist.ai/mcp/bluesky/`\n- **Toolkit page:** `/toolkits/bluesky`\n- **Full API spec:** `/api/openapi.json`\n- **Get an API key:** `/signup`","version":"1.0.0","contact":{"name":"GnistAI","url":"https://gnist.ai"}},"servers":[{"url":"https://context.gnist.ai","description":"Production"}],"paths":{"/rest/bluesky/search_posts":{"post":{"tags":["Media"],"summary":"search_posts","description":"Search Bluesky posts by keyword.\n\nReturns matching posts with author handles, text content, timestamps,\nand engagement counts (replies, reposts, likes). Use sort=\"top\" for\nmost popular results.","operationId":"bluesky_search_posts","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"query":{"description":"Search query for Bluesky posts (e.g. \"AI agents\", \"climate change\").","type":"string"},"limit":{"default":10,"description":"Max results to return (1-100). Default 10.","type":"integer"},"sort":{"default":"latest","description":"Sort order: \"latest\" or \"top\". Default \"latest\".","type":"string"}},"required":["query"],"type":"object"}}}}}},"/rest/bluesky/get_profile":{"post":{"tags":["Media"],"summary":"get_profile","description":"Get a Bluesky user profile by handle or DID.\n\nReturns display name, description, avatar URL, follower/following counts,\npost count, and account creation date.","operationId":"bluesky_get_profile","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"actor":{"description":"Bluesky handle (e.g. \"bsky.app\") or DID (e.g. \"did:plc:z72i7hdynmk6r22z27h6tvur\").","type":"string"}},"required":["actor"],"type":"object"}}}}}},"/rest/bluesky/get_author_feed":{"post":{"tags":["Media"],"summary":"get_author_feed","description":"Get recent posts from a Bluesky user.\n\nReturns the user's latest posts with text content, timestamps, and\nengagement counts. Use get_profile() first to verify the handle exists.","operationId":"bluesky_get_author_feed","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"actor":{"description":"Bluesky handle (e.g. \"bsky.app\") or DID.","type":"string"},"limit":{"default":10,"description":"Max posts to return (1-100). Default 10.","type":"integer"}},"required":["actor"],"type":"object"}}}}}},"/rest/bluesky/get_post_thread":{"post":{"tags":["Media"],"summary":"get_post_thread","description":"Get a post thread by AT URI, including replies.\n\nReturns the root post and a flattened list of replies. Use URIs from\nsearch_posts() or get_author_feed() results.","operationId":"bluesky_get_post_thread","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"uri":{"description":"AT Protocol URI of the post (e.g. \"at://did:plc:.../app.bsky.feed.post/abc123\").","type":"string"},"depth":{"default":6,"description":"Max reply depth to fetch (0-100). Default 6.","type":"integer"}},"required":["uri"],"type":"object"}}}}}},"/rest/bluesky/search_actors":{"post":{"tags":["Media"],"summary":"search_actors","description":"Search Bluesky users by name or handle.\n\nReturns matching user profiles with handles, display names, descriptions,\nand follower counts.","operationId":"bluesky_search_actors","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"query":{"description":"Search query for Bluesky users (e.g. \"bluesky\", \"journalist\").","type":"string"},"limit":{"default":10,"description":"Max results to return (1-100). Default 10.","type":"integer"}},"required":["query"],"type":"object"}}}}}},"/rest/bluesky/report_feedback":{"post":{"tags":["Media"],"summary":"report_feedback","description":"Report a bug, feature request, or general feedback for this data source.\n\nUse this when something doesn't work as expected, when you'd like\na new feature, or when you have suggestions for improvement.\n\nArgs:\n    feedback: Describe the issue or suggestion.\n    feedback_type: One of 'bug', 'feature_request', or 'general'.","operationId":"bluesky_report_feedback","responses":{"200":{"description":"Successful tool call","content":{"application/json":{"schema":{"type":"object"}}}},"404":{"description":"Server or tool not found"},"500":{"description":"Tool execution error"}},"security":[{"ApiKeyHeader":[]},{"ApiKeyQuery":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"feedback":{"type":"string"},"feedback_type":{"default":"general","type":"string"}},"required":["feedback"],"type":"object"}}}}}}},"tags":[{"name":"Media","description":"Data sources: Media"}],"components":{"securitySchemes":{"ApiKeyHeader":{"type":"apiKey","in":"header","name":"gnist-api-key","description":"API key passed via request header."},"ApiKeyQuery":{"type":"apiKey","in":"query","name":"gnist_api_key","description":"API key passed via query parameter."}}}}