wp-ops-mcp
Provides safe parsing and editing of Gutenberg block-based page content, with round-trip verification to avoid corrupting blocks.
Allows reading and editing WordPress sites over the REST API, including pages, settings, options, menus, taxonomies, users, comments, media, ACF fields, plugin activation, and theme files, with draft-based editing and publish-swap workflows.
Integrates with Yoast to read and write SEO metadata such as title, description, canonical URL, and noindex settings on WordPress pages.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@wp-ops-mcpCan you update the Services page heading to 'Our Services' as a draft and show me a preview?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
wp-ops-mcp
An MCP server that lets an AI assistant read and edit WordPress sites over the REST API - including Divi 4 (shortcode-based), Divi 5 (block-based) and Gutenberg page content.
Works with any MCP client: Claude Code, Claude Desktop, Cursor, OpenCode.
45 tools · 1014 tests · HTTPS only, no SSH
Why this is interesting
Letting an LLM edit a page builder's content is mostly a safety problem. Divi 4 stores layouts as deeply nested shortcodes and Divi 5 as block comments; both are easy to parse approximately and very easy to corrupt. This server is built around not corrupting them.
The round-trip gate. Content is parsed to a tree and re-serialized before any edit is attempted. If the output is not byte-identical to the input, the tool refuses the page entirely. The parser is not trusted to be complete - it is only trusted to be honest about what it fully understands.
Edits never touch the live page. wp_edit_page duplicates the page to a draft, edits
the draft, and verifies by reading back. A separate wp_publish_swap promotes it, and
WordPress keeps a revision. A failed edit leaves the live page untouched.
Writes are preview-first. Every mutating tool defaults to dry_run=true and returns
what would change. Production sites additionally require an explicit allow_prod=true.
Theme file writes route through WordPress core. wp_edit_theme_plugin_file()
loopback-requests the site after writing and restores the file if the site fatals. This
was verified by deliberately writing broken PHP to a live staging site: the tool errored,
the file reverted byte-identically, and the site stayed up.
Related MCP server: WordPress MCP Server
What it can do
Area | Tools |
Content | find/read/extract pages, structural edits, draft duplicate, publish swap, slugs |
Builders | Divi 4 shortcodes, Divi 5 blocks, Gutenberg - auto-detected per site |
SEO | title/description/canonical/noindex across SEOPress, Rank Math and Yoast |
Site | settings, arbitrary options, health, discovery |
Structure | menus, taxonomies, terms, users, comments, media |
Advanced | ACF fields, plugin activation, theme file read/write |
Design notes worth reading
A page that cannot be round-tripped is refused, not "best-efforted". A fleet scan of 125 real pages found 120 with no builder markup at all - those parse to a single text node, so structural ops correctly find nothing to target rather than guessing.
The site-side plugin is deliberately tiny (~350 lines, 7 routes, every one capability-gated). Core REST does the heavy lifting; the plugin only adds what core cannot do - draft duplication, builder/SEO meta, ACF, options, cache purge, theme files.
Two independent verification nets on writes: the plugin reports which keys it applied and the value is re-read from the site. A partial apply is an error, not a silent success.
Environment is explicit, not guessed. Deriving "is this production?" from the install name misread real staging installs, so an explicit value always wins.
Setup
git clone https://github.com/<you>/wp-ops-mcp && cd wp-ops-mcp
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[dev]"
pytest -qZip
wp_ops_mcp/plugin/wp-ops-connect/and install it on the target site.Create an administrator user there and generate an Application Password (administrator is required for
unfiltered_html, or WordPress strips iframes and inline styles from content you write).Copy
data/wp_ops_mcp/credentials.example.jsontocredentials.jsonand fill it in.Register the server:
claude mcp add wp-ops \
--env WPOPS_TRANSPORT=rest \
--env WPOPS_CREDENTIALS=/abs/path/to/data/wp_ops_mcp/credentials.json \
-- python -m wp_ops_mcp.serverDocker: docker build -t wp-ops-mcp . && docker run --rm -i -v /abs/creds:/creds:ro wp-ops-mcp
Configuration
Variable | Default | Purpose |
|
|
|
|
| Use an absolute path - the default is relative to the working directory, which your MCP client chooses |
|
| Seconds. Divi 5 pages are large; raise it if you see timeouts |
|
| Override per site if a CDN rule blocks or redirects it |
Known limits
Classic (non-builder) pages are append-only - they round-trip safely but expose no addressable elements, so only insert operations apply.
Theme files cannot be created, only edited - core's self-reverting editor only handles files a theme already registers.
Rank Math
noindexwrites the whole robots array, so clearing it drops anynofollow/noarchiveon that page.No plugin/theme updates, cache purge, or snapshot/rollback yet. Cache purge is the most useful missing piece: a correct write can look like a failure while a host serves a cached page.
Tests
pytest -q - 1014 pass. Two round-trip regression tests skip because their fixtures are
real site content and are not distributed.
Unit tests do not catch REST contract drift or PHP errors; anything touching the
site-side plugin needs a live staging test. See CONTRIBUTING.md.
Licence
MIT.
Available Tools
45 toolswp_activate_pluginA
Activate one already-installed plugin.
ACTIVATING AN UNTESTED PLUGIN CAN BREAK A LIVE SITE: the activation hook runs
immediately and can fatal, and the plugin starts filtering the site's output the
moment it loads. Activate on staging first. plugin may be a slug ('akismet'), a
plugin file ('akismet/akismet') or its .php path - all three resolve to the same
plugin, and a slug matching two installed plugins is refused with the candidates
rather than guessed. A plugin that is already active comes back as a no-op, not an
error. DEFAULTS TO dry_run=true (returns a preview naming the plugin and its current
status; changes nothing). Pass dry_run=false to apply - the change is verified by
re-reading the plugin's status. Requires the REST transport. Prod writes require
allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| plugin | Yes | ||
| dry_run | No | ||
| install | Yes | ||
| allow_prod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses critical behavioral details: the activation hook runs immediately and can cause fatal errors, dry_run defaults to true and changes nothing, allow_prod defaults to false to protect production, and activating an already-active plugin is a no-op. It clearly states side effects and default behaviors, compensating for the lack of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is informative but slightly repetitive, with the 'DEFAULTS TO' phrasing used twice. It is structured in clear sentences and covers essential warnings without excessive verbosity. The repetition is minor and does not hinder comprehension, but a more concise version could improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers activation behavior, dry-run semantics, production protection, and plugin name formats, but it omits the meaning of the required `install` parameter and does not describe the output or return value (though no output schema is provided). This missing information leaves a significant gap for an agent to safely invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the `plugin` parameter (accepts slug, file, or .php path), `dry_run` (preview vs. apply), and `allow_prod` (production guard). However, the required `install` parameter is not mentioned at all, leaving users to guess its meaning (likely a site identifier). This gap reduces the overall parameter coverage despite explanations for three of four parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Activate one already-installed plugin.' It uses a specific verb and resource, distinguishing it from sibling tools like wp_deactivate_plugin and wp_list_plugins. The purpose is immediately identifiable without needing to inspect the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides practical usage warnings, such as the risk of breaking a live site and the recommendation to test on staging first. It also explains the dry_run and allow_prod flags, giving clear guidance on safe execution. It does not explicitly compare with alternatives, but the actionable advice is sufficient for most use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_change_slugA
Rename one page/post's URL slug (the old URL usually starts 404ing - read on).
CHECK old_url_redirects IN THE RESULT. WordPress only 301s the old URL for
published POSTS; for PAGES (hierarchical, and what most site URLs are) it does not,
so the old URL 404s until a redirect is added elsewhere. Both the preview and the
result say which case this is, with a warning when the old URL will break.
post_id comes from wp_find_page / wp_get_content. new_slug is sanitized to
WP-safe form (lowercase, a-z 0-9 and hyphens; anything else becomes a hyphen) - a
value with nothing usable left is refused rather than sent. If the slug is already
taken, WP stores a uniquified one (about -> about-2): that still succeeds and comes
back with uniquified: true and the ACTUAL slug, so check it. DEFAULTS TO
dry_run=true (returns a preview with the current slug; writes nothing). Pass
dry_run=false to apply - the rename is verified by reading the post back. Requires
the REST transport. Prod writes require allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| install | Yes | ||
| post_id | Yes | ||
| new_slug | Yes | ||
| allow_prod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure — and it excels. It discloses mutation side effects (old URL 404 behavior), the uniquification behavior for duplicate slugs (still succeeds with `uniquified: true`), sanitization rules, the safe default (dry_run=true), and verification via read-back. No annotation contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long (11 sentences) but dense with critical operational information for a side-effectful mutation tool. Key warnings are front-loaded (old URL 404s) and emphasized via ALL-CAPS markers (CHECK, DEFAULTS TO). Minor redundancy: sentence 4 partially restates the warning already given in sentences 2-3.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex mutation tool with no output schema, no annotations, 5 parameters, and 0% schema coverage, the description is remarkably complete. It covers side effects, result fields to inspect, parameter semantics, defaults, environment constraints, and verification. Nothing critical is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates. It explains dry_run's default and effect, where post_id comes from, new_slug's sanitization and refusal behavior, and allow_prod's requirement. Only `install` is left implicit, but it is a common identifier pattern across sibling tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb ('Rename'), a precise resource ('one page/post's URL slug'), and immediately flags the key side effect (old URL 404s). This clearly differentiates it from siblings like wp_edit_page (content editing) and wp_find_page (lookup). No ambiguity about what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Extremely explicit. It tells the agent to check `old_url_redirects` in the result, explains exactly when the old URL 404s (pages vs. posts), names the source of `post_id` (wp_find_page / wp_get_content), flags the dry_run default, and states environment prerequisites (REST transport, allow_prod for prod). Little is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_create_contentA
Bulk-create posts/pages, rendered into the site's builder (Divi 4 / Gutenberg).
Each item: {title, blocks:[...], slug?, status?}. Blocks are builder-agnostic:
{kind:'heading',level,text} | {kind:'paragraph',text} | {kind:'button',text,url} |
{kind:'image',url,alt?} (use the url returned by wp_upload_media).
Optional seo (an object: title/description/canonical/noindex) is applied to every
created item's meta (REST transport only). DEFAULTS TO dry_run=true (returns a
per-item plan + a seo_preview; writes nothing). Pass dry_run=false to apply.
Idempotent: existing slugs are skipped. Requires a profile (run wp_discover_site
first). Prod writes require allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| seo | No | ||
| items | Yes | ||
| dry_run | No | ||
| install | Yes | ||
| post_type | No | page | |
| allow_prod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full safety burden. It explicitly states that dry_run writes nothing, that existing slugs are skipped (idempotent), and that prod writes require allow_prod=true. This is strong transparency for a tool that can create content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well organized, with each sentence serving a clear purpose. The block type enumeration is necessary detail and does not feel padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the critical workflow: dry-run behavior, item structure, SEO mapping, idempotence, and production safety. It does not describe the non-dry-run success response shape or elaborate on post_type, but it gives enough context for an agent to invoke the tool safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains items, seo, dry_run, and allow_prod in detail, and connects install to the required profile discovery. It does not explicitly define post_type beyond the schema default of 'page', leaving a small semantic gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool bulk-creates posts/pages and even specifies the builder context (Divi 4 / Gutenberg). It is distinct from sibling tools like wp_edit_page or wp_get_content by focusing on creation and bulk behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives practical usage guidance: run wp_discover_site first, dry_run is the default, and allow_prod is required for production writes. It does not explicitly name an alternative tool for single-item creation, but the context of bulk creation is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_create_termA
Create one term (a category, tag, or any custom taxonomy term).
taxonomy is a slug from wp_list_taxonomies. slug is derived from the name when
omitted. parent (a term id from wp_list_terms, 0 = top level) only applies to a
HIERARCHICAL taxonomy - WordPress ignores it on tags. Creating a term does not
assign it to anything: use wp_set_post_terms for that. DEFAULTS TO dry_run=true
(returns a preview; writes nothing). Pass dry_run=false to apply - the create is
verified by reading the term back. Requires the REST transport. Prod writes require
allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| slug | No | ||
| parent | No | ||
| dry_run | No | ||
| install | Yes | ||
| taxonomy | Yes | ||
| allow_prod | No | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: dry_run defaults to true and writes nothing, false performs the create, and the result is verified by reading the term back. It also warns that prod writes require allow_prod=true and that parent is ignored for tags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is focused and uses backticks to highlight terms, with safety caveats placed clearly. It is slightly repetitive around dry_run and prod requirements but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers preconditions, side effects, and verification, but because there is no output schema it does not state what is returned beyond the implied reading back of the term. The missing install parameter also prevents full operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The prose explains taxonomy, slug, parent, dry_run, and allow_prod, but the required 'install' parameter and the 'description' parameter are not explained. Since the schema has no per-parameter descriptions, this leaves gaps for two of eight parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Create one term' and specifies the resource as 'a category, tag, or any custom taxonomy term', making the action and target unambiguous. It also distinguishes from assignment by pointing to wp_set_post_terms.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides practical guidance: taxonomy should come from wp_list_taxonomies, parent only applies to hierarchical taxonomies, and assignment should use wp_set_post_terms. It also explains dry_run and allow_prod flags, though it does not contrast with update/delete term tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_create_userA
Create a WordPress user with a role and a password.
username cannot be changed later (WordPress forbids it) and email must not
already be in use. roles is a role slug or a list of them ('subscriber',
'editor', 'administrator', ...); omit it and WP applies the site's default role.
THE PASSWORD IS NEVER ECHOED BACK - it is sent to the site and replaced by a marker
in every preview and result, so it does not end up in this transcript. Choose a
strong one and record it in your password manager BEFORE calling: this server
cannot show it to you afterwards. DEFAULTS TO dry_run=true (returns a preview;
creates nothing). Pass dry_run=false to create. Requires the REST transport and an
administrator app password. Prod writes require allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| Yes | |||
| roles | No | ||
| dry_run | No | ||
| install | Yes | ||
| password | Yes | ||
| username | Yes | ||
| allow_prod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description transparently discloses important behavioral details: the password is never echoed back and must be recorded beforehand, dry_run creates nothing by default, and the tool requires specific credentials and flags. This fully informs the agent about side effects and preconditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat long but every sentence adds valuable information. It is well-structured with clear emphasis on critical warnings. No filler or redundancy, though it could be slightly trimmed without loss of meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides good safety and requirement context, but it lacks details about the 'install' parameter and does not mention what the tool returns (e.g., user ID or success object). Given the absence of an output schema and annotations, these gaps reduce completeness for an agent deciding to call it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the semantics for username, email, roles, password, dry_run, and allow_prod, but omits two parameters: 'name' (likely a display name) and the required 'install' parameter, which specifies the target WordPress installation. This is a significant gap since 'install' is required and not mentioned at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: creating a WordPress user with role and password. It uses a specific verb and resource, and the context distinguishes it from siblings like wp_update_user, wp_delete_user, and wp_list_users.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit usage instructions: dry_run defaults to true and must be set to false to actually create, prod writes require allow_prod=true, and it requires REST transport and an administrator app password. This provides clear guidance on when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_deactivate_pluginA
Deactivate one plugin: this can take site functionality OFFLINE immediately.
DEACTIVATING A LIVE PLUGIN TAKES WHATEVER IT PROVIDES OFFLINE the instant it lands -
forms stop submitting, caching stops serving, security rules stop applying, and
page builders stop rendering their layouts (a Divi/Elementor page can come back as
raw shortcodes). Check what the plugin does before calling this, and prefer staging.
Deactivating wp-ops-connect is REFUSED outright: it is the control-plane plugin this
tool reaches the site through, so deactivating it would sever this tool's own
connection to the site and nothing here could re-activate it. plugin may be a slug
('akismet'), a plugin file ('akismet/akismet') or its .php path; a slug matching two
installed plugins is refused with the candidates rather than guessed. A plugin that
is already inactive comes back as a no-op, not an error. DEFAULTS TO dry_run=true
(returns a preview naming the plugin, its current status and what would change;
changes nothing). Pass dry_run=false to apply - the change is verified by re-reading
the plugin's status. Requires the REST transport. Prod writes require allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| plugin | Yes | ||
| dry_run | No | ||
| install | Yes | ||
| allow_prod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is exceptionally transparent about side effects, including immediate downtime, refusal to deactivate wp-ops-connect, no-op behavior for already-inactive plugins, dry-run default, verification after applying, and the prod write gate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense but repetitive, especially the all-caps warning about deactivating a live plugin that restates the opening sentence. It could be tightened without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a safety-critical mutation, the description covers the necessary context: destructive effects, protected plugin, dry-run default, prod guard, verification, transport requirement, and return behavior. It is sufficient for an agent to use the tool responsibly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains plugin formats, dry_run, and allow_prod in detail. However, the required 'install' parameter is not described at all, leaving a significant gap for agents deciding what value to pass.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb-object statement: 'Deactivate one plugin.' It also explains the consequence (taking functionality offline), making the tool's purpose unmistakable and distinct from activation or listing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides strong guidance: use dry_run first, prefer staging, pass dry_run=false to apply, and require allow_prod=true for prod writes. It does not explicitly contrast with wp_activate_plugin, but the inverse relationship is obvious from the name and sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_delete_commentA
Delete a comment: force=true is PERMANENT; the default trashes it (recoverable).
By default the comment goes to the trash and can be restored from wp-admin -
that comes back as action: "trashed", which is a success. With force=true it is
erased from the database and nothing here can bring it back. Prefer
wp_moderate_comment with 'spam' for spam: it trains the filters, where a delete
teaches them nothing. comment_id comes from wp_list_comments. DEFAULTS TO
dry_run=true (returns a preview stating which of the two outcomes you would get;
deletes nothing). Pass dry_run=false to apply. Requires the REST transport. Prod
writes require allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| dry_run | No | ||
| install | Yes | ||
| allow_prod | No | ||
| comment_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the difference between trashing (recoverable) and force-deleting (permanent), explains dry_run behavior with a preview, and warns that force deletion cannot be undone. With no annotations, this full disclosure is essential and well done.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Information is front-loaded with the main action and then details. Slight redundancy (e.g., repeating trash/permanent distinction) but overall well-structured and not excessive.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the primary behaviors and side effects, including dry_run output preview and permanent delete warning. Lacks explicit error-handling or return format details, but for a deletion tool with no output schema, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaning to force, dry_run, and comment_id (source from wp_list_comments). Does not explain install or allow_prod in detail, but the overall semantics are significantly enhanced beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States clearly it deletes a comment and distinguishes between trash and permanent delete. Also differentiates from wp_moderate_comment for spam handling, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises to prefer wp_moderate_comment for spam, explains the dry_run default and allow_prod requirement, and notes the REST transport constraint. Provides clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_delete_optionA
Delete a wp_options row entirely (not "set it to empty").
Whatever reads that option falls back to its default - which for a plugin's settings
row means every setting it holds is gone at once, and for a core option can change
how the site behaves. Read it with wp_get_option and keep the value first: nothing
here can restore it. Deleting an option that was never set is reported as
action: "noop" (nothing to delete), not an error. DEFAULTS TO dry_run=true
(returns a preview with the current value; deletes nothing). Pass dry_run=false to
delete. Requires the REST transport, wp-ops-connect 1.3.0+ and an administrator app
password. Prod writes require allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| dry_run | No | ||
| install | Yes | ||
| allow_prod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden of disclosing side effects, and it does so thoroughly. It explains irreversibility, impact on plugin settings and site behavior, the no-op result for nonexistent options, dry-run behavior, and production safeguards.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but mostly well-structured, leading with the core action and then covering important caveats and usage details. Some phrasing, such as 'Read it with wp_get_option and keep the value first,' is slightly awkward but not confusing enough to hurt clarity significantly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description provides substantial context: destructive consequences, dry-run behavior, no-op reporting, required permissions, and production guard. It does not describe the output format in detail, but it covers the information most needed to use the tool safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains dry_run and allow_prod clearly, but the required parameters name and install are not explicitly described. While name is fairly inferable as the option name and install may be contextually understood, the description does not fully compensate for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes a wp_options row entirely and explicitly contrasts it with setting the option to empty, which distinguishes it from wp_set_option and other option-related tools. The verb and resource are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides practical usage guidance by warning against using this for setting an empty value, pointing to wp_get_option for reading values first, and explaining the dry_run default and the need to pass dry_run=false to actually delete. It also mentions required environment and permission conditions, though it does not explicitly say 'use this when permanent deletion is intended'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_delete_termA
Delete a term: this PERMANENTLY deletes it and unassigns it from every post.
There is NO TRASH for terms - WordPress requires force on this call and nothing
here can restore it. The posts keep their content but quietly lose that filing, and
the term's archive URL (/category/news/) starts 404ing, which is usually noticed
long after the fact. Check wp_list_terms for the term's post count first, and
prefer re-filing those posts with wp_set_post_terms before deleting. term_id
comes from wp_list_terms. DEFAULTS TO dry_run=true (returns a preview stating that
outcome; deletes nothing). Pass dry_run=false to apply. Requires the REST
transport. Prod writes require allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| install | Yes | ||
| term_id | Yes | ||
| taxonomy | Yes | ||
| allow_prod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description thoroughly explains the consequences: permanent deletion, no trash, force is required, posts keep their content but lose the term, and the term's archive URL 404s. It also explicitly mentions the dry_run default and the allow_prod requirement, making the behavior highly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is slightly verbose with repeated warnings (e.g., 'DEFAULTS TO' in caps) but every sentence contributes relevant safety context. The structure is acceptable for a destructive operation, focusing on warnings and prerequisites.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking annotations and an output schema, the description gives comprehensive context: consequences, safety defaults, related tools (wp_list_terms, wp_set_post_terms), and reminders about production protection. This is sufficient for an agent to safely decide when and how to invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions that term_id comes from wp_list_terms and states the defaults for dry_run and allow_prod, but it does not explain the install or taxonomy parameters. Since the input schema has no descriptions and coverage is 0%, the description only partially compensates for the missing parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states clearly 'Delete a term' and emphasizes the permanent nature of the operation, distinguishing it from update or list operations. It also notes that the term is unassigned from every post, leaving no ambiguity about the tool's core function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides actionable guidance: check the term's post count with wp_list_terms first, prefer re-filing posts with wp_set_post_terms before deletion, and defaults to dry_run=true to avoid accidental deletion. This gives the agent a clear safe workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_delete_userA
PERMANENTLY delete a user; their content goes to reassign (0 = deleted too).
There is no trash and no undo for a user: WordPress's REST API only deletes with
force, so this cannot be reversed from here. reassign decides what happens to
everything they authored - posts, pages, media: the DEFAULT of 0 DELETES THEIR
CONTENT WITH THEM, while any other user id transfers authorship to that user (get
one from wp_list_users). If the account wrote anything you want to keep, pass a
reassign target. DEFAULTS TO dry_run=true (returns a preview that spells out which
of the two outcomes you are about to get; deletes nothing). Pass dry_run=false to
delete. Requires the REST transport and an administrator app password. Prod writes
require allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| install | Yes | ||
| user_id | Yes | ||
| reassign | No | ||
| allow_prod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full responsibility. It thoroughly discloses permanence, force-delete behavior, no undo, content deletion risk, reassign semantics, dry-run behavior, and production safeguards.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is focused and well-structured, with important safety warnings. Minor redundancy exists around permanence and deletion guarantees, but each statement contributes useful context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers side effects, safety defaults, and reassign behavior thoroughly. However, the required install parameter is not addressed, and the return value for a successful delete is not described, leaving the description incomplete for a 5-parameter tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero descriptions, and the description compensates well for reassign, dry_run, allow_prod, and user_id implicitly. However, the required 'install' parameter is never explained, leaving a meaningful gap in parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool permanently deletes a user and how content is handled via reassign. The verb-resource relationship is explicit and distinguishes it from user-related sibling tools like wp_update_user and wp_create_user.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear operational guidance: dry_run defaults to true, pass false to delete, use allow_prod for production, and reassign to preserve authored content. Does not explicitly contrast with sibling tools, but the conditions and prerequisites are clearly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_discard_draftA
Delete a staged wpops draft without publishing. Prod writes require allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| install | Yes | ||
| draft_id | Yes | ||
| allow_prod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The word 'Delete' indicates destructive behavior, and the mention of 'Prod writes require allow_prod=true' provides a safety guard. While it does not detail permanence or side effects, the key behavioral aspects are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that conveys the core action and the critical safety condition without any fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple delete action but lacks context about what 'staged' means, what happens after deletion, and how install relates to the operation. The missing parameter details contribute to a moderate completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description only touches on allow_prod (in the context of prod writes) and does not explain install or draft_id. With zero parameter descriptions in the schema, the description fails to compensate for the missing semantics of two out of three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action (Delete) on a specific resource (staged wpops draft) and explicitly contrasts it with publishing, making the purpose clear and distinct from sibling tools like wp_publish_swap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool (for drafts that should not be published) and includes a key condition for production writes (allow_prod=true). However, it does not explicitly name alternative tools for cases like publishing or editing, leaving some inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_discover_siteA
Fingerprint an install (active theme, builder + Divi major version, WP/PHP versions, plugin count, multisite) and persist the profile. Transport-aware: an install with REST credentials is fingerprinted over the plugin /info endpoint (no SSH); otherwise over one SSH/WP-CLI session.
This is the learning entrypoint: content/settings tools expect a profile to exist.
install is the WP Engine install name.
| Name | Required | Description | Default |
|---|---|---|---|
| install | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool persists a profile and explains the two transport modes. It does not cover error cases or permissions, but for a discovery tool the key behaviors are stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight paragraphs: the first states purpose and method, the second adds the prerequisite context and parameter explanation. No fluff, key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, operational method, and its role as a prerequisite. It doesn't specify return values, but there is no output schema and the tool's purpose is clear. Slightly more detail on what the profile looks like would help, but it's not essential for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage, but the description explicitly defines `install` as 'the WP Engine install name', providing essential meaning beyond the bare string type. It lacks format examples, but this is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'fingerprint' and the resource 'install', enumerating exactly what is captured (active theme, builder + Divi version, WP/PHP versions, plugin count, multisite). It also distinguishes itself from siblings by being the 'learning entrypoint' that other content/settings tools depend on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly positions the tool as the prerequisite: 'This is the learning entrypoint: content/settings tools expect a profile to exist.' It also describes the transport-aware behavior (REST vs SSH/WP-CLI), giving clear context for when it is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_edit_pageA
Edit an existing page via a draft duplicate (the live post is never written).
Ops (list of dicts): update_element, set_attr, insert_section, insert_module, remove_element, duplicate_element. DEFAULTS TO dry_run=true (returns a preview, writes nothing). Pass dry_run=false to stage the edit onto a draft duplicate; promote it later with wp_publish_swap. Requires a profile (wp_discover_site) and an editable builder (Divi 4/5 or Gutenberg). Prod writes require allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| ops | Yes | ||
| dry_run | No | ||
| install | Yes | ||
| post_id | Yes | ||
| allow_prod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of explaining side effects. It clearly discloses that the default behavior writes nothing, that dry_run=false only stages changes to a draft duplicate, that the live post is never directly written, and that prod writes require allow_prod=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient, packing workflow, safety defaults, and prerequisites into a few sentences without redundant fluff. The parenthetical format keeps related information together and aids readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides strong workflow context, including the draft-duplicate mechanism, promotion via wp_publish_swap, builder requirements, and production safety guard. It does not describe the return value or error behavior, but this is partially mitigated by the detailed operational guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no parameter descriptions, and the description only partially compensates. It explains dry_run, allow_prod, and enumerates the ops operation types, but it does not describe the structure of the operation dicts, nor does it explicitly explain install or post_id beyond their names. This leaves important parameter details unspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool edits an existing page via a draft duplicate and explicitly notes the live page is never written. It distinguishes itself from related tools like wp_publish_swap and wp_create_content by describing the edit-and-promote workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete usage conditions: it requires a discovered profile (wp_discover_site) and an editable builder (Divi or Gutenberg), defaults to dry_run=true for previews, and explains that dry_run=false stages changes for later promotion with wp_publish_swap. This gives clear guidance on when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_extract_pageA
Parse one page into an editable element tree (read-only, no writes).
Returns {builder, roundtrip_ok, tree} where tree is a recursive summary of element nodes: address (index path for edit targeting), tag, admin_label, text_preview (first 80 chars), children. Requires a profile (wp_discover_site).
| Name | Required | Description | Default |
|---|---|---|---|
| install | Yes | ||
| post_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. It explicitly states 'read-only, no writes', which is a key behavioral trait. It also mentions the prerequisite of a profile via wp_discover_site, adding transparency about required setup. No contradictory annotations exist, so no false claims.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise, consisting of two sentences that pack essential information: purpose, read-only nature, return structure, and a prerequisite. No unnecessary words or repetition. It is well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the return value structure in detail (builder, roundtrip_ok, tree with node attributes) and mentions the prerequisite profile. It does not discuss error cases or edge conditions, but given the simplicity of a parse operation and the read-only declaration, the provided information is largely sufficient for an agent to invoke the tool correctly. Slightly more detail on parameter semantics would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no descriptions for the two required parameters, install and post_id. The description does not explain 'install' at all, leaving ambiguity about what it refers to (likely a WordPress installation identifier). 'post_id' is somewhat self-explanatory but still lacks explicit context. Since schema coverage is 0%, the description needed to compensate but only partially does so.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Parse one page into an editable element tree'. It identifies the specific verb 'Parse' and resource 'one page', and distinguishes it by emphasizing the 'editable element tree' structure and 'read-only' nature, which sets it apart from content-fetching or editing tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides usage context by noting it is 'read-only, no writes' and that it 'Requires a profile (wp_discover_site)'. While it does not explicitly compare to sibling tools like wp_get_content or wp_edit_page, the focus on an 'editable element tree' implies its use case for structure-aware inspection before editing. This is sufficient guidance but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_find_pageA
Find pages AND posts matching query, merged (id, title, slug, status, type).
Read-only. Use this to locate the post_id to feed wp_extract_page / wp_edit_page.
install is the WP Engine install name; query is a simple search term.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| install | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Explicitly declares 'Read-only', which is the most important behavioral trait and there are no annotations to rely on. It does not mention authentication, rate limits, or error behavior, but no destructive behavior is implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and well structured, with the core purpose first, a read-only note, workflow guidance, and parameter definitions. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description includes the return fields (id, title, slug, status, type) and names the follow-up tools, which is useful given there is no output schema. It omits details like result limits or empty-result behavior, but the essential context for using this finder is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite having no schema descriptions, the text explains both parameters: install is the WP Engine install name, and query is a simple search term. This fully compensates for the 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool finds pages and posts matching a query, returning a merged set of id, title, slug, status, and type. It also explicitly positions the tool as a read-only locator for post_id to feed wp_extract_page or wp_edit_page, distinguishing it from related operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete usage direction: use it to locate the post_id for downstream extraction/edit tools and notes it is read-only. It does not explicitly enumerate when to avoid this tool in favor of alternative search/retrieval siblings, but the intended workflow is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_get_acfA
Read a page/post's ACF (Advanced Custom Fields) values as a JSON object.
Returns every ACF field value on the post, keyed by field name - strings, numbers,
booleans, and lists (repeaters/galleries) pass through untouched. Read-only.
Requires the REST transport AND ACF active on the site (ACF free or Pro); a site
without ACF comes back as an error, not a crash. install is the WP Engine install
name; get post_id from wp_find_page / wp_get_content.
| Name | Required | Description | Default |
|---|---|---|---|
| install | Yes | ||
| post_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states the operation is read-only, which implies no side effects, and describes the error behavior for missing ACF. It does not detail further side effects or error codes, but for a simple read operation this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise but includes a slightly redundant second sentence about return types. Overall it is well-structured, focused, and avoids unnecessary filler, though a minor trim could improve clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description covers the essential context: it specifies the output format, the types of values, prerequisites, and error behavior. It does not address edge cases like pagination, but these are less relevant for a simple ACF retrieval.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no descriptions, but the tool description explains that 'install' is the WP Engine install name and instructs the agent to obtain 'post_id' from wp_find_page or wp_get_content. This adds meaningful semantics beyond the bare parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (read), the resource (page/post's ACF values), and the output format (JSON object). It also distinguishes this read operation from the sibling wp_set_acf tool by explicitly noting 'Read-only'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides practical guidance by specifying the prerequisite that the REST transport and ACF must be active, and explains that a site without ACF returns an error rather than crashing. It effectively tells the agent when and how to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_get_contentA
List posts/pages on an install (lean: id, title, slug, status, type).
post_type defaults to 'page'. query is an optional simple search term.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| install | Yes | ||
| post_type | No | page |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral burden. It discloses that the result is a lean list (id, title, slug, status, type), explains defaults for post_type, and notes query is an optional search term. However, it does not mention pagination, sorting, permissions, or the exact return format beyond the field list. For a simple listing tool, this is acceptable but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two sentences—and front-loads the primary purpose. Every sentence adds value: the first states the action and result fields, the second clarifies parameter defaults. There is zero fluff, and the structure is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a lean list tool with no output schema and no annotations, the description covers the core purpose, returned fields, and parameter defaults. It omits details such as pagination, sorting, filtering beyond post_type, and any rate limits or auth requirements. These are not critical for a simple list, but the absence means the description is not fully comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains that post_type defaults to 'page' and query is an optional simple search term, adding meaning to two of the three parameters. The 'install' parameter is not described, leaving its meaning (likely the install identifier) to inference. This is partial compensation, not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (List) and resource (posts/pages on an install) and specifies the returned fields (lean: id, title, slug, status, type). It is distinguishable from siblings like wp_find_page (which likely finds a specific page) and wp_extract_page (which extracts content), though it does not explicitly name them. The purpose is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (listing content) and gives parameter defaults, but it does not explicitly state when to use this tool versus alternatives such as wp_find_page for finding a specific page or wp_create_content for creating content. There is no mention of when not to use it or exclusions. The guidance is adequate but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_get_optionA
Read one wp_options row by exact name (works for non-autoloaded options too).
Read-only. CHECK exists, not the value: an option may legitimately hold '', 0 or
false, so a falsy value on its own does not mean "not set". Values come back as
the site stores them (WordPress serializes everything to a string, so a number can
read back quoted). Requires the REST transport, wp-ops-connect 1.3.0+ and an
administrator app password.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| install | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite lacking annotations, the description discloses that the operation is read-only, explains how to interpret falsy values, and notes response values are returned as stored. It does not explicitly describe error behavior or the full response shape, but the key behavioral caveats are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: it opens with the core purpose, then provides important caveats, and ends with prerequisites. Every sentence adds value and no unnecessary detail is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential usage context, including the existence check, serialization behavior, and access prerequisites. It does not describe the output schema or error cases, but for a simple read operation the guidance is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The `name` parameter is clearly implied as the exact option name, but the required `install` parameter is never explained. With no schema descriptions or enums, this leaves a significant gap in parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads one wp_options row by exact name and explicitly notes it works for non-autoloaded options. This distinguishes it from sibling tools like wp_list_options, wp_set_option, and wp_delete_option.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides concrete guidance: check the `exists` field rather than the value, be aware that serialized values may come back as strings, and that administrator credentials and a specific transport/plugin version are required. This is actionable and specific.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_get_seoA
Read a page/post's SEO meta: title, description, canonical, noindex.
Maps the active SEO plugin's meta (SEOPress / Rank Math / Yoast) to generic fields.
Read-only. Requires the REST transport (the wpcli/SSH gateway has no SEO support).
install is the WP Engine install name; get post_id from wp_find_page / wp_get_content.
| Name | Required | Description | Default |
|---|---|---|---|
| install | Yes | ||
| post_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the transparency burden. It explicitly labels the operation read-only, notes the REST transport requirement, and explains that SEO plugin metadata is normalized from SEOPress/Rank Math/Yoast; however, it does not mention behavior when no SEO plugin is active.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, leading with the action and resource, then adding mapping behavior, constraints, and parameter provenance in three concise sentences. No redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It lists the expected output fields (title, description, canonical, noindex) and prerequisites, which is enough for a simple read tool. Since there is no output schema, a note on failure/empty cases would make it fully complete, but the core context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are explicitly explained: install is identified as the WP Engine install name and post_id is given a source (wp_find_page / wp_get_content). The schema itself provides only names and types, so the description adds substantial semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Read') and a specific resource ('a page/post's SEO meta'), listing the exact fields returned. This clearly distinguishes it from content retrieval tools like wp_get_content and the write counterpart wp_set_seo.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the tool is read-only, which implies the write counterpart wp_set_seo should be used for modifications. It also tells the agent that REST transport is required and explains where to obtain post_id, but it does not explicitly contrast with all nearby alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_get_settingsA
Read a site's editable settings: title, description, timezone, posts_per_page, show_on_front, page_on_front, page_for_posts.
Read-only, and deliberately narrow: only those seven fields are returned (the site URL, admin email and language are never exposed or editable through this server). Requires the REST transport, and an ADMINISTRATOR app password - WP's settings endpoint refuses lesser roles.
| Name | Required | Description | Default |
|---|---|---|---|
| install | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description alone must convey behavioral traits. It clearly states 'Read-only' and explains that only the seven listed fields are returned, while explicitly noting exclusions (site URL, admin email, language). It also mentions the required authentication level and transport. This fully discloses the tool's effects and limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively concise but includes slight redundancy, such as repeating 'editable settings' and then saying 'deliberately narrow: only those seven fields are returned'. It is still well-organized and not overly verbose, earning a strong score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description covers auth requirements, field exclusions, and read-only behavior, it omits any explanation of the 'install' parameter and provides no output format details. Since there is no output schema, this missing context makes the tool incomplete for a new user.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, 'install', is completely unexplained in the description and the schema provides no description (coverage 0%). A user cannot infer what value to pass (e.g., site ID, URL, or name) without external knowledge. This is a significant gap in usability.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to read a site's editable settings, and explicitly lists the seven fields it returns. This distinguishes it from sibling tools like wp_get_option or wp_set_setting, making its function unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (to retrieve the specified settings) and notes its narrow scope, implying that other settings would require different tools. However, it does not explicitly name alternative tools or state 'use this instead of X', so it falls short of a perfect 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_get_theme_fileA
Read one theme file (PHP/CSS/JS) from the ACTIVE theme.
file is a path RELATIVE to the theme directory, e.g. "functions.php" or
"css/custom.css". Absolute paths and ".." are refused. Defaults to the active
(child) theme; pass theme for a specific stylesheet directory. Requires the REST
transport, wp-ops-connect 1.4.0+, and an app password whose user has edit_themes.
Sites with DISALLOW_FILE_EDIT set refuse this by design.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | ||
| theme | No | ||
| install | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses permission requirements, path restrictions, default theme behavior, and the refusal condition under DISALLOW_FILE_EDIT. It also implies read-only semantics via 'Read', but does not mention behavior on missing files or whether raw contents are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
All sentences contribute necessary information without redundancy. The description is about 60 words and stays focused on usage, constraints, and prerequisites. No filler or irrelevant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description does not specify the return format (e.g., raw text, JSON, escaped HTML) or error handling (e.g., file-not-found). It also omits the meaning of `install`, which is a required parameter in the schema. These gaps leave the agent uncertain about expected output and the role of one parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains `file` (relative path, restrictions) and `theme` (defaults to active child, pass for specific theme), but provides no explanation for the required `install` parameter. Since the schema has zero parameter descriptions, the description only partially compensates for two of three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (read) and the resource (theme file), and explicitly distinguishes from the sibling write operation `wp_set_theme_file`. The emphasis on ACTIVE theme is clarified by noting that a specific theme can be passed via the `theme` parameter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete usage constraints: relative path required, absolute paths and '..' refused, default to active child theme, and an optional theme parameter. Also lists prerequisites (REST transport, plugin version, app password with `edit_themes`) and a known blocker (DISALLOW_FILE_EDIT), which effectively tells the agent when this tool will fail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_get_userA
Read one WordPress user by id (username, name, email, roles, url).
Read-only. Get user_id from wp_list_users. Requires the REST transport and an
administrator app password.
| Name | Required | Description | Default |
|---|---|---|---|
| install | Yes | ||
| user_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Explicitly declares read-only behavior and states auth requirements. With no annotations, this covers the key side-effect and access constraints, though it doesn't mention failure/not-found behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence adds useful information and there is no redundancy. The description is compact and front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Missing parameter semantics for install and no output schema or error behavior are provided. While the read-only nature and returned fields are mentioned, the call cannot be made confidently without knowing what 'install' refers to.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no parameter descriptions, and the text only explains where user_id comes from. The 'install' parameter is never described, so the agent cannot fully understand how to fill both required arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States exactly what the tool does: reads one WordPress user by id, and lists the fields returned. Clearly distinct from sibling list/create/update/delete user tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides practical context: read-only, obtains user_id from wp_list_users, and requires REST transport with an administrator app password. Doesn't explicitly contrast with alternative single-user lookup tools, but the prerequisites and source of user_id give enough direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_list_commentsA
List comments (id, post, author, content, status, date).
Read-only. Filter by post_id (from wp_find_page / wp_get_content) and/or status
one of approved, hold (awaiting moderation), spam, trash. Omit both to see the most recent comments across the site. Requires the REST transport and an app password with moderate_comments.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| install | Yes | ||
| post_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description correctly carries the burden of declaring side effects by stating 'Read-only'. It also discloses the required app password capability. It does not mention output pagination or error behavior, but the key behavioral guarantee of not modifying data is explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, well-structured, and free of redundant text. Each line adds necessary information about fields, filters, defaults, or requirements.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers filters, defaults, and permissions, but lacks output format/pagination details and leaves the required install parameter unexplained. Given there is no output schema and no annotations, these omissions leave some ambiguity for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains status values and the source of post_id, but the required install parameter is not described at all. Since the schema has zero parameter descriptions, the missing explanation for a required parameter is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as listing comments, identifies the returned fields, and explicitly marks it as read-only. This distinguishes it from sibling moderation/deletion tools like wp_moderate_comment and wp_delete_comment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete usage guidance: how to filter by post_id and/or status, what happens when both are omitted, and the required permission and transport. It does not explicitly name alternative tools for comment moderation, but the read-only label and filter instructions are sufficient for most use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_list_optionsA
List the site's AUTOLOADED option names (names only, no values).
Read-only. LIMITATION, and it matters: this lists autoloaded options only (WP's wp_load_alloptions). An option that is not autoloaded is ABSENT FROM THIS LIST but still readable with wp_get_option - so a missing name here does NOT prove the option does not exist. Requires the REST transport, wp-ops-connect 1.3.0+ and an administrator app password (the endpoint gates on manage_options).
| Name | Required | Description | Default |
|---|---|---|---|
| install | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since there are no annotations, the description carries the full burden of behavioral transparency. It discloses the limitation that only autoloaded options are listed and emphasizes that a missing name does NOT prove the option does not exist. It also mentions the permission requirement (manage_options), making the behavior fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat verbose but well-structured, with a clear statement of purpose, a limitation section, and a requirements section. Each sentence adds value, and the use of capitalization (AUTOLOADED, LIMITATION) helps draw attention to key points. It could be slightly more concise but is not overly wordy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is complete for the tool's simplicity. It covers what the tool returns (option names only), what it excludes (non-autoloaded options), how it relates to wp_get_option for missing names, and the necessary runtime and permission context. No critical information about when or how to use this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'install' is not described in the tool description, and the schema provides no description either. With schema description coverage at 0%, the description must compensate but does not mention what 'install' refers to (likely a site installation ID). Agents may be uncertain about what value to pass for this parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and the specific resource ('the site's AUTOLOADED option names') with explicit detail that only names are returned, not values. It also distinguishes this tool from wp_get_option by noting the absence of non-autoloaded options, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: it is read-only, limited to autoloaded options, and explicitly points to wp_get_option for non-autoloaded options. It also states the prerequisites (REST transport, wp-ops-connect 1.3.0+, and administrator app password) which tells the agent when and how to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_list_pluginsA
List every installed plugin (id, name, status, version, requirements).
Read-only. Start here: the plugin id it returns ('akismet/akismet') is what the
two activation tools take, and status tells you whether a toggle is even needed.
Counts come back as active / inactive. Installing, updating and deleting
plugins are deliberately NOT offered by this server - use the fleet's plugin-audit
and MainWP rollout process for those. Requires the REST transport (the wpcli/SSH
gateway has no plugin support) and WordPress 5.5+.
| Name | Required | Description | Default |
|---|---|---|---|
| install | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description declares the tool is read-only and explicitly lists what operations it does not perform (install/update/delete). It also mentions the REST transport prerequisite. However, it does not discuss potential error conditions, pagination, or output size, which would provide fuller transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and mostly front-loaded, but the sentence 'Counts come back as `active` / `inactive`' is confusing—likely a typo for 'Status'—and detracts from clarity. The rest is straightforward, but this error lowers the score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must fully describe the return shape; it lists fields but not the structure (array/object). More critically, the required 'install' parameter is completely unexplained, making it impossible for an agent to know how to invoke the tool correctly. The description covers purpose and usage but fails on parameter and response details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema defines one required parameter named 'install' but the description provides no explanation of its meaning or format. The parameter name is ambiguous (could be a path, slug, or something else) and there is zero schema description coverage, leaving the agent without any guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool lists all installed plugins with fields (id, name, status, version, requirements). It also differentiates itself from sibling tools by noting that it is read-only, that the returned plugin id feeds the activation tools, and that install/update/delete are not offered here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent to start here before toggling plugins, explains how the returned `status` field indicates whether a toggle is needed, and directs install/update/delete actions to the separate plugin-audit/MainWP process. The transport requirement (REST) is also stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_list_sitesA
List fleet sites (install, account, environment, domain).
Filter by account (hostacct1-6), environment (prod|staging), or query
(case-insensitive substring of install name or domain). Returns ids + count only.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| account | No | ||
| environment | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The verb 'List' implies a read-only operation, and the description explicitly states that it returns 'ids + count only,' setting clear expectations about the response. It does not explicitly mention side effects, authentication, or rate limits, but the read-only nature is strongly implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, uses a clear structure with a main statement and filter details, and avoids unnecessary words. It is easy to scan and matches the schema parameter names.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the output shape and filters, but it does not clarify whether multiple filters are combined with AND/OR, how results are ordered, or whether pagination is supported. It also omits behavior for empty results or invalid filter values, leaving some context gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters are described in the prose: account, environment, and query. The query substring behavior is clear, and environment values are given as prod|staging, though the 'account' value 'hostacct1-6' is somewhat ambiguous and lacks a concrete format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('List') and resource ('fleet sites'), and enumerates the fields involved. It also distinguishes the output as 'ids + count only,' making the tool's function unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the available filters and their accepted values, which is useful for how to use the tool. However, it does not explicitly mention when to prefer this tool over sibling tools or when not to use it, so the usage guidance is only partially complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_list_taxonomiesA
List a site's taxonomies (slug, name, rest_base, hierarchical, post types).
Read-only. Start here: the slug it returns ('category', 'post_tag', or any
custom taxonomy a plugin/theme registers) is what every other term tool takes as
taxonomy. Only taxonomies registered with show_in_rest appear. Requires the REST
transport (the wpcli/SSH gateway has no taxonomy support).
| Name | Required | Description | Default |
|---|---|---|---|
| install | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose read-only behavior plus transport and visibility constraints. It does not mention error conditions or return envelope details, but the core behavioral expectations are clearly communicated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the main purpose, then adds essential usage and constraint details in three sentences. No filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple list operation and lack of output schema, the description covers the key output fields, the relationship to term tools, and operational constraints. It is slightly incomplete only because the install parameter is unexplained, but overall context is strong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, install, has no schema description and the tool description does not explain it at all. Since schema coverage is 0%, the description should compensate, but it provides no guidance on what install means or how to specify it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool lists a site's taxonomies and names the key returned fields (slug, name, rest_base, hierarchical, post types). It also distinguishes its role as the starting point for term tools by explaining the returned slug is used as the taxonomy parameter elsewhere.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to 'start here' and explains that the slug returned is what every other term tool expects as the taxonomy parameter. It also notes important constraints: only taxonomies with show_in_rest appear, and the tool requires the REST transport rather than the wpcli/SSH gateway.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_list_termsA
List the terms in one taxonomy (id, name, slug, parent, post count).
Read-only. taxonomy is a slug from wp_list_taxonomies. search is an optional
simple filter on the term name. parent comes back as None on a flat taxonomy
(tags) - that means "no hierarchy", not "top level", which WordPress reports as 0.
Requires the REST transport.
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | ||
| install | Yes | ||
| taxonomy | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining side effects. It explicitly states 'Read-only' and provides a notable behavioral nuance: the parent field returns None for flat taxonomies, contrasting with WordPress's 0 for top-level. It does not detail error cases, but this is sufficient for a read-only list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It front-loads the core purpose, lists returned fields, and then expands on the taxonomy and search parameters. The parent None vs 0 explanation is valuable and not verbose, adding clarity without unnecessary length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description indirectly outlines the return structure (id, name, slug, parent, post count) and explains an important edge case. It does not mention pagination, sorting, or error responses, but for a straightforward read-only list tool, the information provided is sufficient for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains taxonomy (a slug from wp_list_taxonomies) and search (optional simple filter on term name), but does not explain the 'install' parameter at all. Since the schema provides no parameter descriptions, this gap leaves a required parameter undefined, limiting the agent's ability to correctly invoke the tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: listing terms in a taxonomy, and enumerates the fields returned (id, name, slug, parent, post count). It also clarifies the taxonomy parameter, making the intended use unambiguous even without annotations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a prerequisite (requires REST transport) and explains that search is an optional filter. It does not explicitly compare with sibling tools like wp_list_taxonomies or wp_create_term, but the read-only nature and simple listing behavior are clear enough for an agent to decide when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_list_usersA
List a site's WordPress users (id, username, name, email, roles).
Read-only. search is an optional substring WordPress matches against the login,
name and email. Start here: the id it returns is what you pass to wp_get_user /
wp_update_user / wp_delete_user. Requires the REST transport AND an ADMINISTRATOR
app password - WP's user endpoints refuse lesser roles (that comes back as an error,
not a crash).
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | ||
| install | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, description discloses read-only behavior, required permissions, and error-vs-crash outcome. It doesn't discuss pagination or rate limits, but with no annotation burden the description carries the main behavioral load well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and key constraints are front-loaded and compact, though the parenthetical '(that comes back as an error, not a crash)' is slightly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description includes output fields, permissions, and integration with sibling user tools, enough for a simple list. It lacks explicit install parameter description and pagination/limits, but remains largely self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Search is fully explained as an optional substring matched against login/name/email, but the required install parameter is not explicitly defined beyond implying site context, leaving a gap with 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists a site's WordPress users with specific fields, and orients the caller to use returned IDs with wp_get_user/wp_update_user/wp_delete_user, distinguishing it from related user tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly notes read-only nature, describes search parameter behavior, and states admin app password requirement and failure mode, giving concrete conditions for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_moderate_commentA
Set one comment's moderation status: approved, hold, spam or trash.
Those four strings are WordPress's own vocabulary and anything else is refused
('approve' and 'APPROVED' are NOT accepted). 'approved' publishes the comment,
'hold' returns it to the moderation queue, 'spam' teaches the spam filters, 'trash'
removes it recoverably. comment_id comes from wp_list_comments. DEFAULTS TO
dry_run=true (returns a preview; writes nothing). Pass dry_run=false to apply - the
result is checked against the status the site reports back. Requires the REST
transport. Prod writes require allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| status | Yes | ||
| dry_run | No | ||
| install | Yes | ||
| allow_prod | No | ||
| comment_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so excellently. It discloses the default dry_run=true (writes nothing), the need to pass dry_run=false to apply, the verification against site-reported status, the transport requirement, and the prod safety flag. It also explains the behavioral effect of each status (publish, return to queue, teach spam filters, recoverable trash). No contradictions; all critical behavioral traits are transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, then expands into essential details without redundancy. Every sentence adds value: allowed statuses, effects, comment_id source, dry_run default, prod safety, transport requirement. No fluff, well-structured, and appropriately detailed for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (moderation with dry-run safety, prod restrictions, transport dependency) and the absence of an output schema, the description covers all necessary information for correct invocation: status vocabulary, default behavior, how to apply changes, safety flags, and where to obtain the comment ID. Nothing critical is missing for an agent to use it properly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains status values (with explicit allowed strings and rejected examples), dry_run default and behavior, comment_id source (wp_list_comments), and allow_prod requirement. It does not explicitly describe the 'install' parameter, but it is a common site identifier across sibling tools and likely inferred. Overall, it adds significant meaning beyond the bare schema for 4 of 5 parameters, making it quite helpful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Set one comment's moderation status') and resource (a comment), and enumerates the exact statuses allowed. It clearly distinguishes itself from siblings like wp_delete_comment (which permanently removes) and wp_list_comments (which lists) by focusing on moderation actions. The verb+resource is precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use the tool: to moderate a single comment, with statuses explained. It also gives operational guidance (requires REST transport, prod writes need allow_prod=true, dry_run default). However, it does not explicitly name alternatives or conditions for using a different tool (e.g., when to choose wp_delete_comment over trash), though the recoverable nature of trash is implied. Missing explicit exclusions, but usage context is solid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_publish_swapA
Promote a staged draft onto the live post (WP keeps a revision), then verify.
Copies the draft's content onto live_id, purges cache (Divi), deletes the
draft, and probes the public URL. Prod writes require allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| install | Yes | ||
| live_id | Yes | ||
| draft_id | Yes | ||
| allow_prod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden and does disclose key side effects: copies content onto live_id, purges cache, deletes the draft, and probes the public URL. It also notes the prod guard (allow_prod=true), but it does not mention authentication, error behavior, or what happens if verification fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with the main purpose in the first sentence and supporting operational details in the second. It contains no redundant or irrelevant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It covers the main workflow and side effects, but it omits output/return behavior, error/verification failure handling, and the meaning of install. Given the absence of an output schema and annotations, these gaps reduce completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no parameter descriptions, but the narrative explains live_id as the target live post, draft_id as the draft being copied/deleted, and allow_prod as a production-write guard. The install parameter remains unexplained, so coverage is not complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Promote a staged draft onto the live post' and clarifies the scope by mentioning draft deletion and verification. It is distinguishable from sibling tools like wp_discard_draft and wp_edit_page, though it does not explicitly name an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case ('Promote a staged draft') and describes the sequence of operations, but it does not explicitly state when to choose this tool over alternatives such as wp_edit_page or wp_discard_draft.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_set_acfA
Set a page/post's ACF field VALUES (not the field-group schema).
fields is an object of {field_name: value}; values are arbitrary JSON (string,
number, bool, or a list for a repeater/gallery) and are written through ACF's own
update_field so the field-key linkage is correct. Leading-underscore selectors are
rejected by the site and reported under skipped (the rest still apply, and the
result comes back as 'partial' rather than 'applied'). DEFAULTS TO dry_run=true
(returns a preview; writes nothing). Pass dry_run=false to apply - the write is
verified by reading each value back (ACF's storage normalization, e.g. a true/false
stored as 1, is tolerated). Only fields on an ACF field group already registered for
the post take effect. Requires the REST transport and ACF active. Prod writes require
allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | ||
| dry_run | No | ||
| install | Yes | ||
| post_id | Yes | ||
| allow_prod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden and does so well. It discloses that dry_run writes nothing, that apply mode writes and verifies values, that leading-underscore selectors are rejected and reported as skipped, and that prod writes require allow_prod=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and then adds dense, useful caveats in a logical order. Each sentence earns its place, covering side effects, verification, constraints, and safety guards without unnecessary padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main behavioral edge cases, prerequisites, and result statuses like 'applied' and 'partial'. It lacks explicit detail about the 'install' parameter and does not describe the full response shape, but since there is no output schema, the most important calling context is still provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does a good job explaining fields, dry_run, and allow_prod, but the required 'install' parameter is never described, and post_id is only indirectly implied by 'page/post's'. Since schema coverage is 0%, the description needs to compensate more fully for all parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Set a page/post's ACF field VALUES') and identifies the exact resource, while also distinguishing this from the field-group schema. It is easy to tell this tool writes ACF field values rather than reading them or editing core content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains important usage constraints such as dry_run defaults, registered-field requirements, and the prod guard, but it does not explicitly state when to choose this tool over alternatives like wp_get_acf or wp_edit_page. The intended use is implied by the name and first sentence rather than directly contrasted with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_set_optionA
Write ANY wp_options row - including siteurl/home, where a wrong value can take the site offline.
There is NO allowlist here: this reaches every option a plugin or theme reads,
including the ones that decide where WordPress thinks it lives. Setting siteurl
or home to a wrong value takes the site offline and locks you out of wp-admin
(recovery needs database or wp-config access, not this server). Treat unfamiliar
options the same way - many are serialized plugin settings where a partial write
corrupts the whole structure. READ IT FIRST with wp_get_option and keep the old
value. The dry-run preview shows the option's CURRENT value next to the new one so
an overwrite is visible before it happens. DEFAULTS TO dry_run=true (writes
nothing). Pass dry_run=false to write - the write is verified by re-reading the
option, tolerating WordPress's storage casts (25 vs '25', true vs 1, '&' escaped to
'&'), and the result carries the site's ACTUAL stored value next to what you
requested. Requires the REST transport, wp-ops-connect 1.3.0+ and an administrator
app password. Prod writes require allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| value | Yes | ||
| dry_run | No | ||
| install | Yes | ||
| allow_prod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description fully discloses the tool's behavior: it writes any option, potential offline consequences, storage cast tolerances, and that the result includes the actual stored value. Since no annotations are provided, the description carries the full burden and does so thoroughly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the critical warning, but it contains some redundancy (e.g., the dry_run default and the siteurl/home warning are repeated). It is slightly verbose, but the complexity of the tool justifies most of the detail, and the repetition reinforces safety without significant confusion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all essential aspects for an agent: the action, risks, prerequisite conditions, return behavior, and safety defaults. It doesn't mention error handling, but that is not necessary for a complete understanding of how to invoke the tool. The context is rich enough to make an informed decision.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema defines all five parameters, but the description adds meaningful context for dry_run (default true, writes nothing), allow_prod (required for prod writes), and value (tolerates casts). The 'install' parameter is not explicitly explained but its name and role are straightforward from the context. Overall, the description supplements the schema well, though a minor gap remains for 'install'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Write ANY wp_options row.' It also identifies the resource (wp_options), the potential risk with siteurl/home, and the overall purpose. There is no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides extensive guidance: it warns about the lack of an allowlist, advises reading the option first with wp_get_option, emphasizes the dry_run default and how to actually write, and specifies prerequisites (REST transport, wp-ops-connect version, admin app password, allow_prod for production). This leaves no doubt about when and how to safely use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_set_post_termsA
Set a post's terms for one taxonomy - REPLACES them, never appends.
term_ids is the COMPLETE list the post should end up with (ids from
wp_list_terms); anything not in it is unassigned, and an empty list clears the
taxonomy on that post. Read the post's current terms first if you mean to add one.
post_id comes from wp_find_page / wp_get_content. The write is verified against
what the site reports it stored: WordPress silently drops ids the taxonomy does not
own, and assigning a taxonomy that is not registered for that post's type stores
NOTHING while still answering 200 - both come back as a TermAssignmentMismatch
error rather than a false success. DEFAULTS TO dry_run=true (returns a preview;
writes nothing). Pass dry_run=false to apply. Requires the REST transport. Prod
writes require allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| install | Yes | ||
| post_id | Yes | ||
| taxonomy | Yes | ||
| term_ids | Yes | ||
| allow_prod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full transparency. It discloses replacement semantics, the verification of writes, error behavior on mismatched term IDs, the dry_run default, the need for REST transport, and prod write restrictions (allow_prod).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat verbose and repetitive, with multiple caveats and instructions crammed into a single paragraph. It could be streamlined without losing key details, but the structure is still readable and logically ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description covers major behaviors: replacement, error verification, dry_run, and prod safeguards. However, it omits explanation of the install and taxonomy parameters, which are part of the required input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage. The description explains term_ids (complete list, empty clears), post_id (from wp_find_page/wp_get_content), dry_run (default true), and allow_prod (required for prod). It does not explain install or taxonomy, leaving two parameters under-described.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb and resource: 'Set a post's terms for one taxonomy' and explicitly warns 'REPLACES them, never appends.' This distinguishes it from sibling tools like wp_list_terms or wp_create_term.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides actionable guidance: 'Read the post's current terms first if you mean to add one' and explains the dry_run default and how to apply. It does not explicitly contrast with alternatives, but the replacement semantics make the appropriate usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_set_seoA
Set a page/post's SEO meta (title/description/canonical/noindex).
Pass only the fields to change; omitted (None) fields are left untouched, and supplying none at all is refused. Writes to the active SEO plugin's meta (SEOPress / Rank Math / Yoast) and is verified by readback. DEFAULTS TO dry_run=true (returns a preview; writes nothing). Pass dry_run=false to apply. Requires the REST transport. Prod writes require allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | ||
| dry_run | No | ||
| install | Yes | ||
| noindex | No | ||
| post_id | Yes | ||
| canonical | No | ||
| allow_prod | No | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that changes are written to the active SEO plugin, verified by readback, default dry_run behavior (preview only), and the allow_prod guard for production. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, covering essential details in two sentences. It front-loads the purpose and then efficiently conveys behavioral nuances without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description provides sufficient context for correct usage: what is affected (SEO meta), how changes are applied (via specified plugin), safety defaults, and required transport. It answers the key questions an agent would have.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains the purpose of all parameters: title, description, canonical, noindex are SEO fields; post_id and install are context; dry_run and allow_prod define behavior. It also clarifies that omitted fields are left unchanged, adding meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: setting a page/post's SEO meta (title/description/canonical/noindex). It is distinct from sibling tools like wp_get_seo, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates when to use it (when SEO meta needs to be set) and provides critical usage constraints (dry_run default, allow_prod requirement, REST transport). It sufficiently differentiates from alternatives like wp_get_seo by contrast of action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_set_settingA
Change ONE site setting (see wp_get_settings for the current values).
key must be one of: title, description, timezone (e.g. 'America/Denver'),
posts_per_page (int), show_on_front ('posts' or 'page'), page_on_front (page id),
page_for_posts (page id). Any other key is refused - the site URL and admin email
are not editable here by design. page_on_front is NOT checked against the site's
pages: a wrong id blanks the homepage, so read it back with wp_get_settings and look
at the site. DEFAULTS TO dry_run=true (returns a preview; writes nothing). Pass
dry_run=false to apply - the write is verified against what the site reports back,
and the result carries the site's ACTUAL stored value next to what you
requested (WordPress escapes text as it stores it, so a title with '&' or an
apostrophe comes back encoded - that is the site behaving normally). Requires the
REST transport and an administrator app password. Prod writes require
allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| value | Yes | ||
| dry_run | No | ||
| install | Yes | ||
| allow_prod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses important behaviors: dry_run defaults to true, value verification against actual stored value, and the encoding of special characters. No annotations are present, so the description carries the full burden and handles it well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized, using line breaks and backticks for clarity. Each sentence adds meaningful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the essential edge cases (dry-run, production safety, encoding, invalid keys) and the write verification behavior. No output schema is provided, but the description hints at the response shape by mentioning the actual stored value is returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the semantics of key, value, dry_run, and allow_prod in detail. However, the 'install' parameter is never mentioned in the description, leaving a gap for that required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it changes one site setting, distinguishing from wp_get_settings. The specific verb 'Change' is appropriate and the resource is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes accepted keys, the dry_run default behavior, and the allow_prod requirement for production writes. Sibling tools like wp_get_settings are implied context, though not directly named as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_set_theme_fileA
Write one theme file. THIS EXECUTES CODE ON THE SITE - the highest-risk tool here.
A theme file is PHP. A syntax error does not break a layout, it takes the SITE down. Mitigations, in order:
the write goes through WordPress core's own theme editor, which makes a loopback request after writing and AUTOMATICALLY REVERTS the file if the site fatals;
the result carries
previous, the exact prior contents, so you can revert with a second call - KEEP IT;the write is verified by re-reading the file, and a mismatch is an error, never a success;
path traversal, absolute paths, and non-code extensions are refused, and a non-active theme needs allow_other_theme=true (editing a parent theme is how changes get lost on the next update - prefer the child theme). DEFAULTS TO dry_run=true, which writes nothing and returns the file's CURRENT contents next to what you propose. Read it and diff before setting dry_run=false. Prod writes require allow_prod=true. CREATING files is not supported - core's self-reverting editor only edits files the theme already has; add new files by deploy/SFTP first.
allow_createis accepted but cannot make creation work.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | ||
| theme | No | ||
| dry_run | No | ||
| install | Yes | ||
| contents | Yes | ||
| allow_prod | No | ||
| allow_create | No | ||
| allow_other_theme | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It details the write mechanism (core editor), the automatic revert on fatal errors, the verification via re-reading, the return of previous contents, and the limitation on creation. These are critical behavioral characteristics that are fully disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively long but every sentence conveys essential safety or usage information. The bullet-point format improves readability. It could potentially be trimmed, but given the high risk and number of caveats, the detail is justified and not redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the most important contextual aspects: risk, safety nets, defaults, constraints (no creation, prod guard), and a comparison to the read sibling. It does not specify the exact success/error response format, but it does mention what dry_run returns, which is sufficient for an agent to anticipate outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema has no field descriptions, the tool description explains several parameters: dry_run, allow_prod, allow_create, and allow_other_theme. 'file' and 'contents' are self-explanatory, and 'theme' is implicitly covered by the allow_other_theme note. However, 'install' is not explicitly described, leaving a minor gap in full parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Write one theme file' and explicitly contrasts it with the reading sibling wp_get_theme_file. It also highlights the high-risk nature of the operation, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete usage guidance: defaults to dry_run=true, advises reading before writing, explains the allow_prod and allow_other_theme flags, and explicitly states that file creation is not supported, directing the user to deploy/SFTP instead. This is actionable and prevents misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_site_healthB
Check one install's reachability: WP REST (if a domain is known) + SSH/WP-CLI.
install is the WP Engine install name (e.g. 'daytonplas1stg').
| Name | Required | Description | Default |
|---|---|---|---|
| install | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description uses the verb 'check', implying a read-only operation, but it does not explicitly state that no changes are made. There are no annotations (e.g., readOnlyHint) to clarify side effects, and the description does not mention permissions, rate limits, or any potential consequences. The agent is left without explicit assurance of non-destructiveness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and free of extraneous information. It conveys the essential purpose and parameter meaning in two short sentences. There is no repetition or unnecessary detail, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the basic purpose and parameter, but it lacks details about the output format or the meaning of the results. For a health check tool, an agent might expect to know what kind of response to anticipate (e.g., status codes, success criteria). Without an output schema, this information is missing, which could leave the agent uncertain about how to interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the 'install' parameter as the WP Engine install name and provides a concrete example ('daytonplas1stg'). This gives the agent enough context to understand what value to pass. However, it does not elaborate on constraints (e.g., format, allowed characters), which could be inferred from the example but is not explicitly stated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: checking the reachability of an install via WP REST and SSH/WP-CLI. It identifies the resource (install) and the method of checking. It could be more specific about what 'reachability' entails, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. It does not mention any conditions that would make this tool preferable to other tools, nor does it indicate when it should not be used. This leaves the agent to infer usage context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_update_termA
Rename or re-parent one existing term.
fields is an object of field -> value; only name, slug, parent and description
can be changed and anything else is refused. CHANGING A SLUG CHANGES THAT TERM'S
ARCHIVE URL (/category/old/ starts 404ing), so treat it like wp_change_slug.
Passing no fields at all is refused rather than reported as a no-op success.
term_id comes from wp_list_terms. DEFAULTS TO dry_run=true (returns a preview of
the exact fields; writes nothing). Pass dry_run=false to apply. Requires the REST
transport. Prod writes require allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | ||
| dry_run | No | ||
| install | Yes | ||
| term_id | Yes | ||
| taxonomy | Yes | ||
| allow_prod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility and does well: it explains slug changes affect archive URLs, dry-run previews exact changes, production writes require allow_prod, and invalid field sets are refused.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence serves a purpose and adds critical operational detail. The formatting with backticks and line breaks improves scannability without sacrificing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's behavior, safety defaults, production safeguards, and what a dry run returns. Given the absence of an output schema, it provides enough context for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no property descriptions, but the description compensates for most parameters: fields allowed values, dry_run behavior and default, term_id source, and allow_prod guard. It does not explicitly describe install or taxonomy, though taxonomy is inferable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool renames or re-parents one existing term, distinguishing it from creation or deletion tools. It also identifies the resource as an existing term and references wp_list_terms for obtaining the ID.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides strong usage guidance: allowed field values, no-op refusal, dry-run default, REST transport requirement, and the allow_prod guard. It does not explicitly name alternative sibling tools, but the 'existing term' wording makes the intended use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_update_userA
Change an existing user's fields.
fields is an object; the editable keys are name, email, roles, password, url,
description - ANY OTHER KEY IS REFUSED (WordPress silently ignores unknown fields,
which would report a change that never happened). username is not editable.
Setting roles REPLACES the user's roles, so passing ['subscriber'] on an
administrator demotes them. A password here is a real password reset: the user's
old password stops working immediately, and the new one is masked in the preview
exactly as in wp_create_user. An empty fields is refused rather than reported as
a successful no-op. DEFAULTS TO dry_run=true (returns a preview; writes nothing).
Pass dry_run=false to apply. Requires the REST transport and an administrator app
password. Prod writes require allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | ||
| dry_run | No | ||
| install | Yes | ||
| user_id | Yes | ||
| allow_prod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden and does well: it discloses side effects (role replacement, password invalidation), refusal of unknown or empty fields, and dry-run vs. apply behavior. This gives the agent an accurate model of what will happen.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence adds critical operational detail. There is no redundant or irrelevant content, and the information is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers behavioral expectations, defaults, permissions, and production safeguards. It does not describe the return value or error conditions, but since there is no output schema, some output guidance would have been helpful for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero descriptions, but the tool description compensates for fields, dry_run, and allow_prod. install and user_id are not explicitly explained, though their names are strongly self-explanatory and user_id is clearly the target user. Overall, key parameters are sufficiently covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool changes an existing user's fields, which distinguishes it from create/delete/list user sibling tools. The verb and target resource are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides concrete usage constraints: field allowlist, username non-editable, roles replacement, password reset behavior, empty-fields refusal, dry_run default, and allow_prod requirement for production writes. It does not explicitly contrast with wp_create_user, but the intent is clear from the wording.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wp_upload_mediaA
Upload a LOCAL image file into a site's media library, with optional alt text.
file_path is a path on the machine running this server (not a URL). Images only:
.png/.jpg/.jpeg/.gif/.webp, max 10 MB; .svg is refused (script vector). The
filename is sanitized and the directory dropped. DEFAULTS TO dry_run=true (returns
a preview: filename/mime/bytes; uploads nothing). Pass dry_run=false to upload -
the returned url is what you feed to an {kind:'image'} block in wp_create_content
or wp_edit_page. Requires the REST transport. Prod writes require allow_prod=true.
| Name | Required | Description | Default |
|---|---|---|---|
| alt | No | ||
| dry_run | No | ||
| install | Yes | ||
| file_path | Yes | ||
| allow_prod | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the default dry_run=true behavior, the filename sanitization and directory drop, file type restrictions (including the refusal of .svg for security), the size limit, the REST transport requirement, and the allow_prod guard. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose, then uses a compact bullet-like structure for constraints and usage. Every sentence adds value—no filler. The length is justified by the safety and workflow nuances.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, no annotations, and no output schema, the description provides all essential context: what the tool does, how to invoke it safely, what the dry_run preview returns, and how to use the resulting URL. It covers file validation, prod protection, and integration points. Only a minor install parameter omission, but that is likely self-evident from the WordPress context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains file_path (local path, not URL), alt, dry_run (with default), and allow_prod. It does not explicitly explain the install parameter, which is required and likely refers to the WordPress site installation. This is a minor gap given the otherwise rich coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Upload), a precise resource (local image file into a site's media library), and adds the optional alt text. It also names the downstream consumers (wp_create_content / wp_edit_page), distinguishing it from the sibling WordPress tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use it: to upload a local image, with clear constraints (file types, size, dry_run default). It explains the dry_run vs. real upload workflow and the allow_prod requirement, and implies the alternative (using a URL instead of a local path) is not for this tool. The integration with content creation is explicitly described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
45 tool updates
v1.4.0- First observed
wp_activate_plugin - First observed
wp_add_menu_item - First observed
wp_change_slug - First observed
wp_create_content - First observed
wp_create_term - First observed
wp_create_user - First observed
wp_deactivate_plugin - First observed
wp_delete_comment - First observed
wp_delete_option - First observed
wp_delete_term - First observed
wp_delete_user - First observed
wp_discard_draft - First observed
wp_discover_site - First observed
wp_edit_page - First observed
wp_extract_page - First observed
wp_find_page - First observed
wp_get_acf - First observed
wp_get_content - First observed
wp_get_option - First observed
wp_get_seo - First observed
wp_get_settings - First observed
wp_get_theme_file - First observed
wp_get_user - First observed
wp_list_comments - First observed
wp_list_menus - First observed
wp_list_options - First observed
wp_list_plugins - First observed
wp_list_sites - First observed
wp_list_taxonomies - First observed
wp_list_terms - First observed
wp_list_users - First observed
wp_moderate_comment - First observed
wp_publish_swap - First observed
wp_remove_menu_item - First observed
wp_set_acf - First observed
wp_set_option - First observed
wp_set_post_terms - First observed
wp_set_seo - First observed
wp_set_setting - First observed
wp_set_theme_file - First observed
wp_site_health - First observed
wp_update_menu_item - First observed
wp_update_term - First observed
wp_update_user - First observed
wp_upload_media
TDQS
Each tool targets a distinct resource and action (e.g., users, options, theme files, comments, taxonomies). Even closely related tools like wp_get_settings vs wp_get_option or wp_get_seo vs wp_get_acf have clear, non-overlapping scopes. No two tools appear to perform the same operation.
Most tools follow a `wp_<verb>_<entity>` pattern (wp_get_user, wp_list_users, wp_create_user), but there are notable exceptions like wp_edit_page instead of wp_update_page, wp_get_content as a listing tool rather than wp_list_posts, and wp_site_health as a noun phrase. The mix of get/list and the occasional unique verbs (extract, discover, moderate) makes naming slightly inconsistent overall.
With 38+ tools, the set is large but justified for a comprehensive WordPress operations server covering content, users, options, theme files, comments, taxonomies, plugins, settings, ACF, SEO, and menus. The count is on the high end but not excessive given the domain breadth; only a few redundant or overly niche tools could be trimmed.
The server covers many core WordPress areas, but has notable gaps: there is no tool for deleting posts/pages directly (only comment/user/term/option deletion), no media upload tool despite references to wp_upload_media, and no plugin activation/deactivation (deliberately omitted but still a functional gap). These absences leave some common workflows incomplete.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Live-checks whether a WordPress site is ready to be safely operated by AI agents.
Security-first WordPress MCP server. 129 tools for Claude, ChatGPT, Gemini. Free on wp.org.
Secure MCP Server for WordPress connects AI assistants and agents to WordPress with secure, controlled access. It lets AI interact with WordPress through MCP while helping organizations manage access, enforce policies, protect non-human identities (NHI), and require human approval for sensitive actions. Use it to securely connect tools such as ChatGPT, Claude, and Cursor with WordPress. Marketplace Link: https://wordpress.org/plugins/miniorange-secure-mcp-server/ Official website: https://plugins.miniorange.com/mcp-server-ai-policy-enforcement-wordpress
Publish to self-hosted WordPress from AI agents: markdown, images, SEO, and Notion sync.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with WordPress sites through the REST API. Supports multiple WordPress sites with secure authentication, enabling content management, post operations, and site configuration through natural language.42MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with WordPress sites through REST APIs, allowing programmatic management of posts, users, comments, categories, and tags with secure authentication.2948MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to manage WordPress sites through natural conversation, supporting post creation, content updates, site queries, and draft-to-publish workflows via the WordPress REST API.9MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to manage WordPress sites via ~74 capabilities including content, media, plugins, themes, and more.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ad02/wp-ops-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server