Preview a change across sites
fleet__bulk_editPreview one content or design change across many client sites at once (up to 50), through each site's Royal MCP Pro: tool wp_bulk_find_and_replace replaces literal text (a phone number, an address, an old brand name) in posts and pages, with args {find, replace, case_insensitive?, scope: {post_types, post_status?, post_ids?, limit?}, targets?: {content?, excerpt?, title?, meta_keys?, elementor_data?}}; tool elementor_bulk_replace_widget_setting sets one setting on every widget of a type on one Elementor page, with args {post_id, widget_type, setting_key, new_value}; tool elementor_update_kit_global changes one global color or font in Elementor's Site Settings (every widget using it follows), with args {kind: color|font, id or title (as in Site Settings, for example primary or Brand Orange), color, or font_family and font_weight}; it needs a later Royal MCP Pro release, so sites without it are left out; tool apply_brand_kit brings each site in line with its client’s brand kit (fleet__get_brand_kit), with args {client_id}: Site Settings colours and fonts the site already has are changed to the kit’s (matched by title), Elementor 4 variables and classes are created or updated to the kit’s (matched by label), nothing is deleted, entries the site lacks are named, and sites that are not that client’s are left out; tool wp_bulk_replace_widget_content replaces literal text in every widget of a type (sidebars and footers), with args {widget_type (block, text or custom_html), find, replace, case_insensitive?}; each site must allow AI to modify theme appearance in Royal MCP's settings; tool wp_update_menu_item changes the text or link of existing menu items whose current text and/or link match exactly (a phone number or address in a footer menu, a legal link), with args {match_title?, match_url?, menu? (a menu name or slug), new_title?, new_url?}, at most 10 changes per site (a new text and a new link on one item count as two), never adding, removing or moving items; a link to a page keeps its link and its text and is named in the results; tool wp_update_custom_css adds, replaces or removes one named block of CSS that Royally keeps between its own marker comments in the site's custom CSS, never touching the CSS around it, with args {name (lowercase letters, digits, hyphens), action: set|remove, css (for set)}; the site must allow AI to modify theme appearance and Royally's account there must be allowed to save CSS, which Royally can only learn when applying, so such sites are refused then and left unchanged; tool elementor_import_template copies one Elementor library template (a page template, section, or Theme Builder header, footer or other part) and tool divi_library_create copies one Divi Library item, from one site to the others, with args {source_site_id (the site it comes from, never changed and left out of the sites), template_id (its id there, from elementor_list_local_templates or divi_list_local_templates on that site)}; Royally reads the template once on that site and again when applying, refusing if it changed; each site gets a new library item with the same title, next to any with that title (nothing is replaced or deleted), and sites without the page builder (Elementor, Elementor Pro for Theme Builder parts, or Divi) or the tool are left out with the reason; the copy is not shown on any page until someone applies it, and its display conditions and Elementor page settings are not copied; tool wp_update_plugin updates plugins and tool wp_update_theme updates themes to the version WordPress has waiting, with args {items: plugin files or folders, theme folders, or ["*"] for every waiting update}, at most 15 per site; each site's update policy, its ignored updates (an ignored update that fixes a known vulnerability is still included) and requirements decide what is offered, a site set to Never is left out, a backup is taken first where the site's settings ask (SiteVault, else UpdraftPlus; a site with neither is refused), an update that breaks the home page is rolled back at once, and Royal MCP itself is never updated this way; tool wp_update_core updates WordPress itself to the newest version each site is offered, with args {}, always taking a full backup first whatever the site's settings say, because WordPress cannot be rolled back automatically; tool raif_set_bot_policies sets AI bot policies in Royal AI Firewall, with args {changes: [{bot_id (as raif_get_bot_policies lists it, for example openai-gptbot), policy: allow|block|log-only|default, rate_limit_per_min?, paywall_url?}]} (1 to 100 bots), each bot keeping its rate limit and paywall unless given; a search engine is only blocked where Royal AI Firewall's search engine override is on, otherwise that bot is left as it is and named with the reason; sites without Royal AI Firewall or the tool are left out; tool royal_mcp_update_ai_permissions changes what AI agents may change on each site through Royal MCP Pro, with args {allow_option_writes?, allowed_options? (the full option allowlist, which replaces the site's, up to 200 names), allow_theme_writes?}; only sites set to Managed by Royally in Royal MCP Pro > Royally take it, and the others are left out with that reason; tool gp_set_hardening turns GuardPress hardening settings on or off, with args {changes: [{key: hardening|xml_rpc_disabled|force_strong_passwords|disable_directory_browsing|uploads_php_block, enabled: true|false}]} (xml_rpc_disabled and force_strong_passwords take effect only while hardening is on); GuardPress applies them one by one and may leave one as it was (PHP blocked in uploads when PHP files are found there, directory listing off when the site stops loading with it), and that setting is named with the reason; sites without GuardPress or the tool are left out; tool elementor_replace_text_sitewide replaces literal text on every Elementor page, post and library template (Theme Builder parts, saved sections, global widgets), in classic and Elementor 4 widgets alike, with args {find, replace (may be empty), case_insensitive?, post_types? (only these, for example ["page", "elementor_library"])}; the preview counts matches per page with the classic and Elementor 4 split, pages Royally's account may not edit are left out and named, applying refuses a site whose count changed since the preview, and a site whose pages hold too much Elementor data to keep an undo is refused; tools wp_install_plugin (args {slugs: WordPress.org slugs, activate?}), wp_activate_plugin, wp_deactivate_plugin and wp_delete_plugin (args {plugins: plugin files, folders or names as the sites list them}) install, activate, deactivate or delete up to 5 plugins per site; each site's own plugin list says which plugin a name means there, and its own preview says what would happen, so a plugin not installed, already in that state, needing a newer PHP or WordPress, or that other active plugins need is left out and named; activating or deactivating checks the home page and the site switches the plugin back at once if it stops loading; only inactive plugins are deleted, deleting is permanent (it cannot be undone, and the plugin's uninstall routine may remove its data), so the preview is approved as a permanent change; Royal MCP itself is never changed this way; tools wp_install_theme (args {slugs: WordPress.org slugs}, installed but not activated), wp_switch_theme (args {theme: a theme folder or name}, the home page is checked and the site switches back at once if it stops loading) and wp_delete_theme (args {themes: folders or names}) install, activate or delete up to 5 themes per site, never deleting the active theme or the theme it is built on; tool wp_create_user adds up to 5 users, with args {users: [{username, email, role: administrator|editor|author|contributor|subscriber, first_name?, last_name?}]}, and Royally never sends or sees a password (each site makes one and emails the user a link to set theirs); tools wp_set_user_role (args {users: display names as the sites list them, role}), wp_demote_user (args {users: display names, end_sessions? (default true)}, which takes a user's access away by making them a subscriber and signing them out everywhere) and wp_delete_user (args {users: display names, reassign_to: the display name of the user who gets their posts}) change, demote or delete up to 5 users per site, never the account Royally connects as and never a site's last administrator, and a name two users share on a site is left out; tool wp_set_maintenance_mode turns maintenance mode on or off, with args {enabled, message? (up to 300 characters)}; tool wp_optimize_database removes old revisions, auto-drafts, trashed posts, spam and trashed comments and expired temporary data, with args {items? (revisions, auto_drafts, trashed_posts, spam_comments, trashed_comments, expired_transients; every kind when left out), keep_revisions? (0 to 100, default 5)}, up to 500 of each kind per run; deleting themes or users and cleaning the database are permanent, take a backup first where the site's settings ask, and are approved as permanent changes. Pick the sites with site_filter (a saved group's selection_id from fleet__list_site_groups, tags with tag_match any or all, status, plugin_slug); omit it for every site. Returns, per site, what would change (counts and up to 20 before/after examples), the sites with nothing to change or that could not be previewed, approve_url and approve_before. Nothing is written by this tool: show the person the summary and give them approve_url, where they review it and apply it in Royally before approve_before (a preview applies once; from 10 sites they type the site count to confirm). You cannot apply it yourself. When every site is in a site group the team set to apply changes without approval (picked with site_filter; a change to every site always waits), the change can be undone, does not touch users, roles, sign-in links, AI permissions, security hardening or IP blocks, needs no typed confirmation and no two-person approval covers the sites, Royally applies it at once instead: state is success, applied_by_rule names the groups, and preview_url replaces approve_url. Applying changes each site only if it still matches the preview, gives each site a receipt, and returns one undo for every site, which the person uses from the preview page in Royally for 72 hours. For text and widget changes it puts each changed page or widget back as it was, so edits made to them since are lost, except where a site reports that its undo leaves pages edited since as they are (Royal MCP Pro 1.0.15 for find and replace and Elementor widget settings), and Elementor text replaced on every page, where a page edited since is left as it is and named; a Site Settings color or font changed again since is left as it is; a menu item or custom CSS changed again since is not undone, and that site is named; a copied template is deleted from each site's library; a bot policy or the AI permissions changed again since are left as they are; every GuardPress hardening setting the change turned on or off is put back, unless it was changed again since; an update is rolled back to its previous version where WordPress.org has it, and an update from elsewhere or of WordPress itself is named, with the backup taken first as the way back; an installed plugin is removed, an activated plugin deactivated and a deactivated plugin activated again; a deleted plugin cannot be put back; an installed theme is removed unless it was made active since, a theme switch goes back to the theme before unless the theme was changed again, an added user is removed unless they have written posts or comments since, a changed role goes back unless it was changed again (a user whose access was taken away gets their roles back, but sessions that were ended stay ended), and maintenance mode goes back as it was; deleted themes and users and removed database rows cannot be put back.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| args | Yes | The change itself, in the shape the chosen tool takes (see above). | |
| tool | Yes | The change to make on each site. | |
| site_filter | No |