Updating a post
Find it with list_content, change it with update_post.
Agents frequently do not offer to edit, simply because nobody told them they could. They can. update_post takes an existing post_id and applies whatever fields you pass — body, taxonomy, media or SEO.
Find the post first
Post ids are per-site and you rarely know them. list_content is how you find one. It returns date and modified for every post, which is what makes a request like "fix the post I published last Tuesday" answerable.
| Filter | Type | What it does |
|---|---|---|
| search | string | Free-text search across post titles and content. |
| category | string | Category name. |
| tag | string | Tag name. |
| status | string | Accepted, but list_content only returns published posts today. Drafts and scheduled posts are not listed. |
| published_after | ISO 8601 or YYYY-MM-DD | Only posts published on or after this moment. |
| published_before | ISO 8601 or YYYY-MM-DD | Only posts published before this moment. |
| order_by | date | title | modified | Sort field. |
| order | asc | desc | Sort direction. |
| page | number | 1-based page number. |
| limit | number | Results per page. |
list_content({
site: "myblog",
search: "pricing",
published_after: "2026-08-24",
published_before: "2026-08-26",
order_by: "date",
order: "desc"
})Then update it
Pass post_id plus only the fields you want changed. Fields you omit are left alone.
update_post({
site: "myblog",
post_id: 412,
markdown: "## Updated pricing\n\n...",
meta_description: "Our new pricing, explained in plain terms."
})Passing markdown replaces the whole body. There is no partial-body edit — the agent should fetch or reconstruct the full post content, not send a fragment.
Approvals and outcomes
Updates go through the same approval policy as new posts, and return the same per-component contract: image_status, taxonomy_status, seo_status, embed_status, inline_images and render_check. An update can be partial in exactly the same way a publish can.
What can go wrong
- wp_not_found — the post_id does not exist on that site, or it was deleted. Re-run list_content.
- Using an id from a different site. Ids do not carry across sites.
- Sending a summary as the markdown, which quietly truncates the post. Send the whole body.
- Adding categories expecting them to merge with the existing ones. Send the full set you want the post to have.

