Five fixes found by driving the abilities over the live MCP connection. All additive — no breaking changes. Every new input is optional and defaults to what the plugin did before.
Listing no longer forces the whole body down the wire
content/list-posts, content/list-pages and content/list-cpt-items returned every field of every item, including the complete post_content. Measured on ten real posts averaging 16 KB of body:
| bytes | |
|---|---|
| today (unchanged default) | 157,791 |
fields: "summary" | 4,367 |
36× smaller. summary returns what identifies an item — title, status, dates, slug, author, a trimmed excerpt — plus content_bytes, so the follow-up read is predictable. Then read the one you want with content/get-post.
The block outline reported the wrong total
Asking for 3 blocks of a 40-block post reported total: 3. It was counting what it returned, not what matched, because the walker abandoned the walk the moment it had enough.
It now reports total: 40 with a new returned: 3 alongside — so you can tell a small post from a truncated view of a large one. Each block also gains subtree_bytes next to bytes, which distinguishes a genuinely small block from a small wrapper around half the page.
Site Health can be read as text
The description and actions fields carried WordPress core's own markup — paragraph tags, icon spans that render as pictures and read as nothing, and screen-reader spans repeating every link's text. Pass format: "text" for plain sentences with link destinations kept as text (url). The default still returns the markup unchanged.
Every ability must declare what it does
readonly, destructive and idempotent are how an AI client decides whether something is safe to try, safe to retry, and safe to run without asking. A missing one reads as "not destructive" — the dangerous direction to be wrong in. Abilities missing them now fail the test suite, and are reported on screen while WP_DEBUG is on. Nothing changes on a production site.
Cache abilities point at the page cache
Clearing transients is not what a visitor sees. On a site running LiteSpeed, the transient and object-cache abilities now suggest litespeed/purge-cache for that — and say nothing on sites without it, rather than naming an ability that is not there.
Full changelog: changelog.txt
Quality gates: 2998 tests green · PHPCS clean · PHPStan level 8 clean · PHPCompatibility 8.1- clean.