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).