Search Posts
search_postsFinds posts by status (in_review is the review queue), channel, scheduled time range, angle, pillar, text, or website CMS delivery state. Returns each post's current rev, updatedAt, mediaCount (assets, a website cover and images from the CMS; 0 means no media, so finding posts without an image needs no get_post per post) and, for website posts, the buyer questions it answers (buyerQuestions). A refresh of a live website page Mark published carries refresh: { text, pageUrl }, the reason Mark queued it for review; refresh is null on every other post. An approved social post moves to scheduled within seconds while Mark hands it to the publisher; handoff says handing_off then, or stuck with the reason and fix when it can't go (no scheduled time, no connected account, or no progress 5 minutes after approval). An approved LinkedIn Article carries handoff publish_by_hand before its scheduled time and publish_now from it on, each with the reason (a person publishes it on LinkedIn). handoff is null on every other post. status: approved still matches handing-off, stuck, publish_by_hand and publish_now posts. rev is the frozen revision: it stays 0 on drafts and only advances when the post is submitted (or frozen). updatedAt confirms a draft save. from and to filter by scheduled time, not created or updated. Each accepts YYYY-MM-DD or a full ISO timestamp. A date-only to includes that whole day in the workspace timezone. Unscheduled drafts never match a date range. websiteState filters blog, FAQ and competitor posts by CMS delivery: preview (a pre-approval preview draft in the CMS, not live), queued, sent_to_cms (saved in the CMS, not live), published, taken_down, failed, removed, conflict, out_of_sync, or none: the same values as get_post's website.state. Optional timezone (IANA) renders scheduled and published times in that zone; it does not change stored data. Does not change anything. Related: get_post, approve_posts, review_post.
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
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Scheduled-to: YYYY-MM-DD (includes that whole day in the workspace timezone) or a full ISO timestamp. | |
| from | No | Scheduled-from: YYYY-MM-DD (start of that day in the workspace timezone) or a full ISO timestamp. | |
| text | No | Case-insensitive match in the body. | |
| limit | No | How many rows to return. Default 20, max 100. | |
| cursor | No | Opaque cursor from a previous call's nextCursor. | |
| status | No | Filter by status. in_review is the review queue. | |
| angleId | No | Angle id. | |
| channel | No | Channel id, e.g. linkedin. | |
| pillarId | No | Pillar id. | |
| timezone | No | IANA zone to render times in. Does not change stored data. Defaults to the workspace timezone. | |
| websiteState | No | Filter website posts by CMS delivery state: queued, sent_to_cms (saved in the CMS, not live), published, taken_down, failed, removed, conflict, out_of_sync, or none. Same values as get_post's website.state. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| more | Yes | ||
| items | Yes | ||
| nextCursor | Yes |