Bluesky

live Social

Read Bluesky social data — profiles, posts, feeds, and threads. Most tools are public; search requires BYO auth.

8 tools
0ms auth
free tier 50 calls/day
🔑 Authentication

Some tools (search_posts) require your own Bluesky credentials. Add your handle and an app password as query params on the gateway URL. Public tools work without any credentials.

Config with credentials
{
  "mcpServers": {
    "pipeworx-bluesky": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote@latest",
        "https://gateway.pipeworx.io/bluesky/mcp?bsky_handle=you.bsky.social&bsky_app_password=xxxx-xxxx-xxxx-xxxx"
      ]
    }
  }
}

Tools

get_profile public required: handle

Get a Bluesky user profile by handle (e.g., "alice.bsky.social")

Parameters
Name Type Description
handle req string Bluesky handle (e.g., alice.bsky.social)
Try it
get_posts public required: handle

Get recent posts from a Bluesky user's feed

Parameters
Name Type Description
handle req string Bluesky handle
limit opt number Number of posts (1-100, default 20)
Try it
search_posts auth required required: query

Search Bluesky posts by keyword. Requires bsky_handle and bsky_app_password in the gateway URL query params.

Parameters
Name Type Description
query req string Search query
limit opt number Number of results (1-100, default 25)
Try it
get_feed public

Get posts from a Bluesky feed (default: discover/whats-hot)

Parameters
Name Type Description
feed_uri opt string AT URI of the feed generator (default: whats-hot)
limit opt number Number of posts (1-100, default 20)
Try it
get_followers public required: handle

Get a user's followers

Parameters
Name Type Description
handle req string Bluesky handle
limit opt number Number of followers (1-100, default 50)
Try it
get_follows public required: handle

Get accounts that a user follows

Parameters
Name Type Description
handle req string Bluesky handle
limit opt number Number of follows (1-100, default 50)
Try it
get_thread public required: post_uri

Get a post thread by AT URI

Parameters
Name Type Description
post_uri req string AT URI of the post (at://did/app.bsky.feed.post/rkey)
Try it
resolve_handle public required: handle

Resolve a Bluesky handle to a DID

Parameters
Name Type Description
handle req string Bluesky handle to resolve
Try it

Test with curl

The gateway speaks JSON-RPC 2.0 over HTTP POST. You can test any pack directly from the terminal.

List available tools
bash
curl -X POST https://gateway.pipeworx.io/bluesky/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Call a tool
bash
curl -X POST https://gateway.pipeworx.io/bluesky/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_profile","arguments":{"handle": "example"}}}'

Use with the SDK

Install @pipeworx/sdk to call tools from any TypeScript/Node project.

TypeScript
import { Pipeworx } from '@pipeworx/sdk';
const px = new Pipeworx();
const result = await px.call("get_profile", {"handle":"example"});
ask_pipeworx
// Or ask in plain English:
const answer = await px.ask("read bluesky social data — profiles, posts, feeds, and threads");