Skip to main content
Glama
cameronrye

AT Protocol MCP Server

search_posts

Read-only

Search Bluesky posts by keyword with filters for author, language, date range, mentions, domain, and URL. Returns paginated results sorted by recency or engagement.

Instructions

Search for posts on Bluesky using full-text queries with optional filters for author, language, date range, mentions, domain, and URL. Returns a paginated list of matching posts sorted by recency or engagement. Requires authentication (app password). Use search_actors to find users instead of posts. Subject to per-tool rate limiting.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qYesFull-text search query string (1–300 characters). Supports keywords and hashtags (e.g. "#bluesky launch").
limitNoMaximum number of posts to return per page (1–100, default 25).
cursorNoOpaque pagination cursor from the previous response cursor field; omit for the first page.
sortNoSort order for results: "latest" returns newest posts first (default), "top" returns most-engaged posts first.latest
sinceNoISO 8601 datetime lower bound (inclusive) for post creation time (e.g. "2024-01-01T00:00:00Z"). Omit to search all time.
untilNoISO 8601 datetime upper bound (exclusive) for post creation time (e.g. "2024-12-31T23:59:59Z"). Omit for no upper bound.
mentionsNoFilter to posts that mention this handle or DID (e.g. "alice.bsky.social" or "did:plc:...").
authorNoFilter to posts authored by this handle or DID (e.g. "alice.bsky.social" or "did:plc:..."). Requires a non-empty q term.
langNoBCP-47 language tag to filter posts by language (e.g. "en", "en-US", "pt-BR").
domainNoFilter to posts containing links from this domain (e.g. "bsky.app"). Do not include protocol or path.
urlNoFilter to posts containing this exact URL (must be a fully-qualified URL, e.g. "https://example.com/article").

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
successYesWhether the search request completed successfully.
postsYesArray of posts matching the search query.
cursorNoOpaque pagination cursor to pass as cursor in the next call; absent when no further pages exist.
hasMoreYesTrue when a subsequent page of results is available.
searchQueryYesThe search query string that was executed.
totalResultsNoApproximate total number of matching posts reported by the API, if available.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds further behavioral context: authentication requirement, per-tool rate limiting, and paginated results sorted by recency or engagement. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences efficiently convey the core action, filters, pagination, authentication, sibling tool, and rate limiting. No redundant information; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (not shown but indicated), the description adequately covers the tool's purpose, filter capabilities, pagination, authentication, and rate limits. It is complete for a search tool of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by summarizing the types of filters (author, language, date range, mentions, domain, URL) and mentioning pagination (cursor), going beyond what the schema provides individually.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches for posts on Bluesky using full-text queries with optional filters. It distinguishes from sibling tools like search_actors by specifying the tool's scope (posts vs. users).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance: requires authentication (app password), subject to per-tool rate limiting, and suggests using search_actors to find users instead of posts. This helps the agent choose the right tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cameronrye/atproto-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server