Skip to main content
Glama

Search Posts

search_posts
Read-onlyIdempotent

Finds posts by keyword across content and title, with optional filters (platforms, statuses, date range, campaign). Results are paginated: the opaque next_cursor, sent back as cursor, returns the next page. Concise rows carry scheduled_date, published_date and created_at, plus published_at and published_url for a published post and publish_error for a failed or held publish. Archived posts are left out unless a filter asks for them (statuses: ['archived']).

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "search_posts"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoMax results to return (default 25, max 100).
queryNoKeyword(s) to search content + title (case-insensitive).
cursorNoOpaque cursor returned by the previous page.
end_dateNoReturns posts scheduled on or before this date.
statusesNoLimits results to these statuses.
platformsNoLimits results to these platforms.
start_dateNoReturns posts scheduled on or after this date.
campaign_idNoLimits results to posts in this campaign.
response_formatNoconcise (default) returns previews; detailed returns full content.

Output Schema

NameRequiredDescriptionDefault
kindYes
countYes
resultsYes
next_cursorYes
response_formatYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds real behavior beyond that: pagination is cursor-based and the opaque next_cursor must be returned as cursor, archived posts are hidden by default unless filtered, and publish_error surfaces failed or held publishes — useful signals an agent could not infer from annotations alone.

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

Conciseness4/5

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

Four sentences, no filler, with the core search behavior front-loaded and pagination/return-shape details trailing. The final sentence listing row fields is dense and list-like, but each clause carries distinct information.

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

Completeness3/5

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

With 9 optional parameters, an output schema, and full annotation coverage, the description is largely sufficient — pagination and archived-filter behavior are the key gaps it fills. It does spend words describing returned row fields that an output schema already likely covers, and it omits any note on result ordering or what happens with an invalid/expired cursor.

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

Parameters3/5

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

Schema coverage is 100% and every parameter (limit, query, cursor, date bounds, statuses, platforms, campaign_id, response_format) is documented in the schema itself. The description mainly restates cursor round-tripping and the archived-status rule; it adds marginal semantics beyond that, so the baseline 3 applies.

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

Purpose4/5

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

Opens with a specific verb+resource ('Finds posts by keyword across content and title') and scopes it with the filter dimensions. It implicitly separates itself from get_post (single-record fetch) and create/update siblings, but never names an alternative explicitly, so the differentiation is inferential rather than stated.

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

Usage Guidelines3/5

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

Usage is implied by 'search by keyword with optional filters', and there is one genuine usage rule: archived posts are excluded unless statuses=['archived'] is passed. However, there is no explicit guidance on when to reach for this tool versus get_post, list_accounts, or performance-insight tools, and no note on whether keyword search supports operators or multiple terms.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources