Support / Royal MCP Pro / Cross-plugin Composers

Cross-plugin Composers

Complete reference for the 4 cross-plugin composer tools in Royal MCP Pro. These orchestrate multiple plugins (SiteVault, ForgeCache, SEO plugins, GuardPress) plus core WordPress in a single MCP call — publishing with backup + cache purge in one shot, site launch readiness rollups, monthly maintenance reports, and site-wide theme asset URL migration.

The compose_mode framework

Every composer accepts a compose_mode argument controlling how multi-step operations behave when one step fails. Three modes:

ModeWhat happens on step failureBest for
strictAbort the composer immediately. If reversible steps ran successfully before the failure, they get rolled back.Destructive workflows where partial completion is worse than nothing (e.g., publish-and-promote).
best_effortLog the failure, continue with remaining steps. Response's steps array reports per-step status.Read-only rollups where partial data is still useful (e.g., launch readiness, monthly reports).
report_onlyRun every step in dry-run / read-only fashion. Never writes; returns what WOULD happen.Previewing what a composer would do before committing.

Defaults per tool:

  • wp_publish_and_promote_pro → default strict
  • wp_prepare_for_launch → default best_effort
  • wp_monthly_maintenance_report → default best_effort
  • wp_migrate_theme_assets → default best_effort

Graceful degradation on missing plugin deps

Composers orchestrate multiple plugins — but they don't refuse when a plugin isn't installed. Instead, individual steps skip with a note in the response's per-step status. Examples:

  • wp_publish_and_promote_pro tries to fire a SiteVault pre-backup. If SiteVault isn't active, the step is skipped-with-note and the composer continues to the next step.
  • Same tool tries to purge ForgeCache after publish. If ForgeCache isn't active, skipped-with-note.
  • Same tool routes SEO meta to whichever SEO plugin is active (Yoast / Rank Math / AIOSEO / SEObolt) — auto-detects. If none is active, SEO meta step is skipped-with-note.
  • wp_prepare_for_launch tries to use SEObolt for the SEO audit step, falls back to native basic checks if SEObolt isn't installed.
  • wp_prepare_for_launch tries to use GuardPress for the security status step, falls back to native basic checks.

The composer response's per-step details always tell you which plugin was used (or which fallback was used, or which step was skipped entirely).

The 4 tools

wp_publish_and_promote_pro

Full publish workflow with rollback: SiteVault pre-backup (when available) → featured image sideload → create post → set featured → categories/tags → SEO meta (Yoast/Rank Math/AIOSEO/SEObolt auto-detect) → ForgeCache purge (when available).

Arguments

NameTypeDescription
title requiredstringPost title.
content requiredstringPost body content (HTML / blocks).
statusstringPublish state. One of publish (default) / draft / pending / private / future.
publish_datestringMySQL datetime (YYYY-MM-DD HH:MM:SS). If in the future + status=publish, WP auto-schedules it.
featured_image_urlstringOptional. Public URL to sideload as the post's featured image. Rolled back on strict-mode failure.
categorystringCategory name — created if it doesn't exist.
tagsarray<string>Tag names to attach. WP creates any that don't exist.
seo_titlestringSEO title tag (routed to Yoast / Rank Math / AIOSEO / SEObolt, whichever is active).
seo_descriptionstringMeta description (routed to detected SEO plugin).
seo_focus_keywordstringFocus keyword for the detected SEO plugin.
compose_modestringstrict (default) / best_effort / report_only.
pre_backupbooleanTrigger SiteVault snapshot before writing. Default true when SiteVault is active; skipped-with-note when absent.
post_purge_cachebooleanPurge ForgeCache after publishing. Default true when ForgeCache is active; skipped-with-note when absent.

Undo: 72h token — deletes the created post + attached media (sideloaded featured image).

wp_prepare_for_launch

Read-only site-readiness rollup: backup snapshot (SiteVault), SEO audit (SEObolt or native), broken-link scan of home-page same-origin refs, TTFB perf check, security status (GuardPress or native).

Arguments

NameTypeDescription
compose_modestringstrict / best_effort (default) / report_only.
skip_backupbooleanIf true, skip the SiteVault backup step. Useful when a backup was just taken or when SiteVault isn't installed.

No undo (read-only tool).

wp_monthly_maintenance_report

Read-only monthly rollup: pending plugin updates, WP_DEBUG_LOG tail, SiteVault last-backup status, Royal MCP Pro audit-log tool-call summary for the window, home-page perf snapshot.

Arguments

NameTypeDescription
compose_modestringstrict / best_effort (default) / report_only.
window_daysintegerHow many days back to summarize (audit-log rollup, backup recency, etc.). Range 1–365. Default 30.
Attachment gating for privacy

By default the response contains only the summary + an admin-view URL. The full report attachment (which can contain more sensitive data like error log contents) is gated behind the royal_mcp_pro_maintenance_report_include_attachment filter. Admins who want the full attachment inline in the MCP response can opt in via a small mu-plugin:

add_filter( 'royal_mcp_pro_maintenance_report_include_attachment', '__return_true' );

Without the filter, the attachment lives only at the admin-view URL (protected by admin authentication), not in the AI's chat log.

No undo (read-only tool).

wp_migrate_theme_assets

Rewrite theme-scoped asset URLs (/wp-content/themes/{from}//wp-content/themes/{to}/) across post_content on the specified post types. Handles both raw and JSON-escaped slash variants. Snapshots every touched post.

Arguments

NameTypeDescription
from_theme_slug requiredstringSource theme slug being replaced (as it appears in the /wp-content/themes/<slug>/ URL path).
to_theme_slug requiredstringDestination theme slug to substitute in.
dry_runbooleanIf true, report matches without writing. No undo token issued in dry_run.
compose_modestringstrict / best_effort (default) / report_only.
post_typesarray<string>Which post types to scan. Default [post, page]. Add custom types (e.g. product, elementor_library) to broaden the sweep.

Example

Do a dry run of wp_migrate_theme_assets from theme "twentytwentythree" to theme "custom-child" across post, page, and product post types.

If the dry run looks clean, commit with dry_run=false.

Undo: 72h token — restores prior post_content per touched post.

Still Stuck? Two-Step Support Path

If a composer isn't running the steps you expected, work through these two steps in order.

Step 1: Start with the Royal MCP Troubleshooting Guide

Royal MCP Troubleshooting — Start Here covers MCP-layer issues. If Claude can't reach your site, the composer never fires.

For Pro-specific patterns:

Step 2: Email priority support

If you've worked through Start Here and the relevant Pro-specific doc and the issue still isn't resolved, email priority support from your purchase email address at support@royalplugins.com. Priority email support is included with your license — typical response within 24 hours. Never include your license key in email; we look it up from your purchase address.

What to include in your email
  • Your hosting provider (SiteGround, Cloudways, Hostinger, Kinsta, WP Engine, Liquid Web, self-hosted VPS, etc.)
  • Royal MCP Pro version from WP Admin → Plugins
  • Which composer you called and the full args you passed (including compose_mode)
  • Which sibling Royal Plugins are active — SiteVault, ForgeCache, GuardPress, SEObolt, RAIF, Royal SMTP, etc. + version numbers
  • Which third-party plugins are active that a composer might touch — Yoast SEO, Rank Math, AIOSEO, WooCommerce, etc.
  • Active caching plugins (LiteSpeed Cache, WP Rocket, W3 Total Cache, SpeedyCache, Hummingbird, none)
  • Active security plugins (Wordfence, Defender Pro, Solid Security, NinjaFirewall, none)
  • Which MCP client — claude.ai web custom connector, Claude Desktop with mcp-remote, ChatGPT MCP, Cursor, or another MCP-compatible client
  • The composer's per-step response (the steps array showing which succeeded, which errored, which skipped)
  • Screenshot of the most recent oauth: row in Activity Log AND the most recent Pro tool row in Audit Log with View Details expanded (or confirmation that the logs are empty after a reproduced failure)