Pod

Available as Markdown and JSON. Pod is also available over MCP.

Reported issues for bluesky-mcp-server

Pod holds 17 of 20 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.

Back to bluesky-mcp-server.

Most discussed

bug(bsky_search_posts): search is refused without credentials — add app-password auth and gate the tool

Server version

0.3.0

mcp-ts-core version

0.11.0

Runtime

Bun

Runtime version

Bun 1.3.x

Transport

HTTP (Streamable HTTP)

Description

Related: #3

Bluesky's edge now refuses unauthenticated app.bsky.feed.searchPosts with a 403 HTML page on both api.bsky.app and public.api.bsky.app, first pages included (24 of 25 probes on 2026-09-25), and the searchPosts lexicon…

Read the thread · 2026-08-21 · closed · 4 comments

feat(bsky_search_posts): add mentions, domain, and url filters

Use case

Researchers, journalists, and community teams need posts that mention one account, or that link to a domain or an exact URL. Bluesky search supports all three filters, but bsky_search_posts exposes none of them. Filtering broad results on the client cannot substitute: it spends result slots before filtering, and the normalized post output carries no rich-text facets to filter on.

Proposed behavior

// bsky_search_posts
mentions?: string; // handle or DID, same…

[Read the thread](https://github.com/cyanheads/bluesky-mcp-server/issues/29) · 2026-08-11 · closed · 3 comments

### bug(discovery): exhausted results can be reported as truncated

### Server version

0.3.0

### mcp-ts-core version

^0.11.0

### Runtime

Bun

### Runtime version

Bun 1.3.14

### Transport

HTTP (Streamable HTTP)

### OS

macOS 26.1

### Description

`bsky_get_trending` and `bsky_get_follows` set `truncated: true`, with guidance for getting more, when nothing more can be fetched. Trending keys on `trends.length >= limit`: it always fires at `limit: 25`, the endpoint's maximum, and below that whenever the trending pool equals the limit. The follows tool…

[Read the thread](https://github.com/cyanheads/bluesky-mcp-server/issues/25) · 2026-08-11 · closed · 3 comments

### bug(output): server metadata after a quoted post renders inside the user's blockquote

### Server version

0.5.0

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

stdio

### Description

In `renderPostLines()` and `renderEmbedLines()`, the server line that follows a user-text blockquote comes right after the last `> ` line, with no blank line between them. Examples: `*3 likes · …*`, `*Created: …*`, `🔗 Link card:`, `💬 Quoted post:`, `**Labels:**`. CommonMark reads that line as a lazy continuation of the quote's paragraph, so a…

[Read the thread](https://github.com/cyanheads/bluesky-mcp-server/issues/47) · 2026-09-25 · closed · 1 comment

### bug(output): an empty page that carries a cursor drops it from content[]

### Server version

0.4.0

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

stdio

### Description

When a page comes back empty but still carries a cursor, `bsky_get_follows`, `bsky_get_feed`, `bsky_get_author_feed` and `bsky_search_actors` render only a one-line notice in `content[]`. `structuredContent.cursor` and the `truncated` guidance ("pass the returned cursor") are still present. A client that reads only `content[]` is told to page and…

[Read the thread](https://github.com/cyanheads/bluesky-mcp-server/issues/45) · 2026-09-25 · closed · 1 comment

### bug(bsky_search_actors): a malformed cursor fails as a bare Status: 400 with no reason

### Server version

0.4.0

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

stdio

### Description

`app.bsky.actor.searchActors` answers a cursor it cannot decode with HTTP 400 `InvalidRequest` / `Invalid request`, which names no parameter. `bsky_search_actors` passes that through as the generic fetch failure, with no `reason` and no recovery. A caller can't tell a bad cursor from a bad query. #41 maps the 500 that `getAuthorFeed` and…

[Read the thread](https://github.com/cyanheads/bluesky-mcp-server/issues/44) · 2026-09-25 · closed · 1 comment

### feat(bsky_get_follows): rank the follow graph with sort

### Use case

Finding the most prominent accounts in a large follow graph means paging the whole list, although Bluesky can rank it itself. `bsky_get_follows` has no way to ask for that ranking.

Related: #29

### Proposed behavior

```typescript
// bsky_get_follows
sort?: 'latest' | 'top'; // omitted sends nothing; Bluesky's default is latest

Forward sort to app.bsky.graph.getFollows and app.bsky.graph.getFollowers in both directions.

Measured 2026-09-25 on keyless getFollows /…

Read the thread · 2026-09-25 · closed · 1 comment

feat(bsky_get_author_feed): posts_with_video filter and include_pins

Use case

Callers want an account's video posts, or its pinned post alongside its recent ones. bsky_get_author_feed's filter enum lacks posts_with_video, and the tool never requests pins.

Related: #29

Proposed behavior

// bsky_get_author_feed
filter?: 'posts_with_replies' | 'posts_no_replies' | 'posts_with_media'
       | 'posts_and_author_threads' | 'posts_with_video';
include_pins?: boolean; // default false, sent as includePins

Measured 2026-09-25, keyless…

Read the thread · 2026-09-25 · closed · 1 comment

Most recent

bug(bsky_get_author_feed): a malformed cursor becomes a retried upstream 500 with no reason

Server version

0.3.2

mcp-ts-core version

0.13.6

Runtime

Bun

Runtime version

Bun 1.4.0

Transport

HTTP (Streamable HTTP)

Description

A cursor the AppView can't decode makes app.bsky.feed.getAuthorFeed answer HTTP 500 (the same holds for app.bsky.feed.getQuotes; getFeed and getFollowers ignore a bad cursor and answer 200). The service treats the 500 as transient, retries it three times, and bsky_get_author_feed then fails with a bare `Fetch failed ……

Read the thread · 2026-09-25 · closed · 1 comment

feat(bsky_get_post_quotes): read the quote posts behind a post's quoteCount

Use case

Every post these tools return carries quoteCount, and on Bluesky quote posts are where most of the commentary on a post lives. Nothing retrieves them: bsky_get_post_thread returns replies only, and bsky_search_posts matches text and needs an app password. So for "how is this post being received" the count is where the analysis stops.

Proposed behavior

New read-only tool over…

Read the thread · 2026-09-25 · closed · 1 comment

feat(input): accept bsky.app post and profile URLs and a leading @ for AT-URI and actor inputs

Use case

People share Bluesky content as web URLs, so that's what a caller usually has in hand: https://bsky.app/profile/bsky.app/post/3l6oveex3ii2l, https://bsky.app/profile/bsky.app, or @bsky.app. Each maps one-to-one onto a value the tools accept, but today each is rejected at the schema, so the agent has to rewrite the value and call again.

Related: #4

Proposed behavior

Accept these forms and rewrite them in the handler, before any request:

| Input | Fields | Rewritten to…

Read the thread · 2026-09-25 · closed · 1 comment

bug(bsky_search_actors): working cursor pagination is described as 403-prone

Server version

0.3.2

mcp-ts-core version

0.13.6

Runtime

Bun

Runtime version

Bun 1.4.0

Transport

HTTP (Streamable HTTP)

Description

Related: #25

The cursor input and output descriptions on bsky_search_actors say an unauthenticated cursor "may return a 403" and that cursor pagination is reliable only for the author-feed and follows tools. The truncation notice tells the caller to refine the query instead of paging. The 403 in #3 was reproduced on…

Read the thread · 2026-09-25 · closed · 1 comment

bug(bsky_search_actors,bsky_get_follows): follower and following counts are declared but never populated

Server version

0.3.2

mcp-ts-core version

0.13.6

Runtime

Bun

Runtime version

Bun 1.4.0

Transport

HTTP (Streamable HTTP)

Description

app.bsky.actor.searchActors, graph.getFollows, and graph.getFollowers return app.bsky.actor.defs#profileView for every actor and for the follows subject. That view has no followersCount or followsCount; only profileViewDetailed…

Read the thread · 2026-09-25 · closed · 1 comment

feat(bsky_get_feed): read posts from a feed generator by AT-URI

Use case

An agent has no keyless way to read posts on a topic. bsky_search_posts is refused without credentials (#32), trends resolve to feed generators rather than search terms (#34), and a quoted record with recordKind: "generator" or a shared bsky.app/.../feed/... link hands the agent a feed it cannot open. app.bsky.feed.getFeed answers 200 without credentials for trend feeds and custom feeds such as whats-hot.

Proposed behavior

New read-only tool bsky_get_feed:


[Read the thread](https://github.com/cyanheads/bluesky-mcp-server/issues/35) · 2026-09-25 · closed · 1 comment

### bug(bsky_get_trending): trend topics are opaque feed IDs, so the documented drill-down is a dead end

### Server version

0.3.2

### mcp-ts-core version

0.13.6

### Runtime

Bun

### Runtime version

Bun 1.4.0

### Transport

HTTP (Streamable HTTP)

### Description

`app.bsky.unspecced.getTrends` returns each `topic` as a 12-hex feed-generator record key (e.g. `1d558a3bc9ff`), and `link` points at that feed, `/profile/<did>/feed/<topic>`, owned by `trending.bsky.app`. All 25 trends returned on 2026-09-25 had that shape, and `app.bsky.feed.getFeed` answered 200 without credentials for all 25…

[Read the thread](https://github.com/cyanheads/bluesky-mcp-server/issues/34) · 2026-09-25 · closed · 1 comment

### enhancement(output): escape Markdown and raw HTML in rendered user text

### Use case

Bluesky-authored text must stay visibly data in `content[]`, including in clients that render CommonMark or raw HTML. The blockquote keeps a post's headings inside the quote, but Markdown stays live there: emphasis, links, images, code, lists, setext headings, and raw HTML are interpreted. Inline values — display names, label values, trend names inside `###` and `**…**` — have the same gap.

### Proposed behavior

```typescript
quoteUserText('**###…

[Read the thread](https://github.com/cyanheads/bluesky-mcp-server/issues/31) · 2026-08-11 · closed · 1 comment

### enhancement(identity): surface Bluesky verification state on profiles, actor lists, and post authors

### Use case

Identity-sensitive workflows need to tell an account Bluesky has verified from a similar handle before citing its posts or walking its graph. The AppView returns `verification` on every actor view, and every tool drops it: `searchActors?q=nytimes` returns `nytimes.com` (verified, and a trusted verifier) beside unverified `nytimes.wtf`, and `bsky_search_actors` gives nothing to tell them apart.

Related: #22, #23

### Proposed behavior

```typescript
// bsky_get_profile and…

[Read the thread](https://github.com/cyanheads/bluesky-mcp-server/issues/30) · 2026-08-11 · closed · 1 comment

The remaining reports are on [the project's issue tracker](https://github.com/cyanheads/bluesky-mcp-server/issues).