Skip to main content
Glama

royal-mcp__wp_update_seo_meta

Destructive

Update SEO meta fields on a post. Auto-routes title/description/focus_keyword/noindex to whichever SEO plugin is active (Yoast, Rank Math, AIOSEO, SEOPress, or SEObolt). og_title / og_description route to Yoast, Rank Math, and SEOPress; AIOSEO + SEObolt store OG data in different shapes so those fields fall through to unsupported_fields. twitter_title / twitter_description / twitter_image route to Yoast, Rank Math, SEOPress, and SEObolt; AIOSEO stores twitter data in its own database table so all three twitter fields fall through to unsupported_fields until a dedicated AIOSEO adapter lands. The slug field is a WordPress-native field and works regardless of SEO plugin. The response lists each field under fields with its value before, the value requested, the value saved and verified (true when saved matches requested). Requires edit_post capability on the target post. (site: demo.royalplugins.com) Through Royally: waits for a person to approve it in Royally; nothing on the site changes until then.

Input Schema

NameRequiredDescriptionDefault
slugNoURL slug (post_name). WordPress will sanitize and ensure uniqueness; the actually-saved value is returned in the response so the caller can confirm.
forceNoReplace a field that holds an SEO template (template variables such as %%title%%) with a value that has none. Without it such a write is refused (template_overwrite).
titleNoSEO title (replaces the meta title used in browser tabs and SERPs)
noindexNoTell search engines not to index this URL
post_idYes
site_idNoSite to run this tool on: 8ef2e52b-bd07-4671-a363-ebe8b480b65c (https://demo.royalplugins.com)
og_titleNoOpen Graph title (Facebook / Slack / LinkedIn previews). Yoast + Rank Math only.
descriptionNoSEO meta description (used in SERPs)
focus_keywordNoPrimary focus keyword for SEO scoring (AIOSEO stores this as focus_keyphrase internally)
twitter_imageNoTwitter card image URL. Routed to Yoast, Rank Math, and SEObolt; AIOSEO stores this in a custom table and returns as unsupported_field.
twitter_titleNoTwitter card title. Routed to the active SEO plugin's Twitter-title meta key (Yoast, Rank Math, AIOSEO, SEObolt).
og_descriptionNoOpen Graph description. Yoast + Rank Math only.
twitter_descriptionNoTwitter card description. Same per-plugin routing as twitter_title.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Goes well beyond the annotations (destructiveHint=true, idempotentHint=false) by disclosing the approval gate ('waits for a person to approve it in Royally; nothing on the site changes until then'), the template_overwrite refusal, per-plugin routing failures, and the before/requested/saved/verified response shape. That is exactly the operational context an agent needs for a destructive write.

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

Conciseness4/5

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

Purpose, routing rules, and the approval caveat are front-loaded before the field-by-field breakdown, and virtually every sentence carries a rule the agent must know. It is dense and repetitive in listing plugin names three times, which costs some tightness but not comprehensibility.

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

Completeness5/5

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

With 13 parameters, no output schema, and a destructive write, the description still covers return-value structure (before/requested/saved/verified per field), capability requirements, and the asynchronous approval flow. Nothing an agent must know to call this correctly is missing.

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

Parameters4/5

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

Schema coverage is already 92%, so the schema carries most parameter meaning. The description still adds value the schema does not fully convey: the noindex/title/description/focus_keyword auto-routing to the active plugin, and how slug is WordPress-native and works regardless of SEO plugin. Some overlap remains (the og_title 'Yoast + Rank Math only' note is repeated from the schema).

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

Purpose5/5

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

Opens with a specific verb+resource ('Update SEO meta fields on a post') and immediately enumerates the exact field set, which cleanly separates it from generic siblings like wp_update_post_meta or wp_update_post. An agent knows from sentence one that this is the SEO-plugin-aware writer, not a raw meta writer.

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

Usage Guidelines4/5

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

Gives concrete conditional guidance: per-field routing depends on the active plugin, and specific fields fall through to unsupported_fields on AIOSEO/SEObolt. It also states the edit_post capability requirement and that a templated field write is refused without force. It stops short of naming a sibling to use instead when a field is unsupported, so it is clear context without explicit alternative routing.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources