Connect WordPress sites; create and update posts/pages with Gutenberg content, hierarchical categories and tags (create/list/update/delete, full parent/child tree), featured/inline images, and SEO fields; manage WooCommerce catalogues, guarded order operations, customers, coupons, and manual refunds; and work with content, health, SEO fields, and guarded point edits to Elementor/Bricks page-builder content.
connect_sitewriteConnect a WordPress site by URL, username, and Application Password.
sync_sites_to_registrywritePush every WordPress site already connected here into Sites Registry -- the platform-agnostic catalogue app. Fixes sites that were connected here before Sites Registry existed, or any time the two drift out of sync.
forget_sitedestructiveDisconnect a WordPress site and delete its stored credential.
add_sshwriteAdd SSH access to a connected WordPress site to enable WP-CLI features: PHP version, plugin/theme/core update counts, cron jobs, database size.
remove_sshwriteRemove SSH access from a connected WordPress site.
update_imperal_bridgewriteUpdate the installed Imperal Bridge companion plugin from Imperal's fixed, official release ZIP. This cannot update arbitrary plugins or accept a caller-provided URL; it only replaces Imperal Bridge after WordPress verifies the expected release version. Requires Imperal Bridge 2.17.0+ already installed once manually.
update_pluginwriteUpdate ONE already-installed WordPress plugin to its latest version. Reads through the Imperal Bridge plugin if it's installed (the same WordPress upgrader wp-admin's own 'Update Now' link uses), or falls back to SSH + WP-CLI (`wp plugin update <slug>`) if SSH is configured with add_ssh. Pass a slug from list_plugins/list_native_plugins โ never a guessed slug.
update_corewriteUpdate WordPress core to the latest version. Reads through the Imperal Bridge plugin if it's installed (the same WordPress upgrader wp-admin's own 'Update Now' link uses), or falls back to SSH + WP-CLI (`wp core update`) if SSH is configured with add_ssh. Runs the update immediately with no version pinning โ always the latest available core release.
run_wp_cronwriteForce every due WordPress cron event to run now. Reads through the Imperal Bridge plugin if it's installed (the same _get_cron_array()/do_action_ref_array() WordPress core itself uses), or falls back to SSH + WP-CLI (`wp cron event run --due-now`) if SSH is configured with add_ssh. Only events already past their scheduled time are run โ nothing is rescheduled early.
list_sitesreadList the WordPress sites the user has connected.
list_postsreadList recent posts on a connected WordPress site.
get_post_contentreadRead one post/page's raw rendered content (HTML), excerpt, and Polylang language (when exposed), straight from the site's native REST API -- no Bridge/SSH needed. Use to audit an already-published article, e.g. checking it for stray scaffolding headings ('Intro', 'CTA') or a wrong Polylang language before correcting it with update_post.
replace_post_content_textwriteFix ONE exact substring inside a post/page's raw content -- e.g. a CTA link that wrongly points to the wrong-language contact page -- without touching anything else in the article (no rebuild of blocks, so existing images/structure are never at risk). 'find' must match EXACTLY ONCE in the raw content; the call is rejected if it matches zero or multiple times, so you never guess which occurrence you meant.
list_pagesreadList pages on a connected WordPress site.
list_mediareadList media library items on a connected WordPress site.
update_media_altwriteSet the alt text of media library images on a connected WordPress site. Alt text is what screen readers announce and what Google Images indexes. Pass a list of {media_id, alt_text}. By default an image that already has alt text is skipped so existing wording is never overwritten.
preview_bulk_media_altreadPreview replacing alt text for 1-100 explicit media items. Makes no writes and returns the exact token required to apply.
apply_bulk_media_altwriteApply a previously previewed alt-text change to 1-100 explicit media items. Rechecks every item before any write and stops if any changed.
set_single_media_altwriteSet the alt text of ONE media library image โ a single-item convenience wrapper around update_media_alt for cases with just one attachment to fix (e.g. a form on the Media panel). Always overwrites, unlike the bulk version's default skip-if-already-set behaviour.
get_site_healthreadReport read-only health for a connected WordPress site.
refresh_sitewriteRe-check connectivity and auth for a connected WordPress site and update its stored status.
refresh_all_siteswriteRe-check connectivity for all connected WordPress sites at once.
list_commentsreadList comments on a connected WordPress site. Use status='hold' to see comments pending moderation, 'approved' for published, 'spam' for spam.
set_comment_statuswriteChange a comment's moderation status: 'approved' (publish it), 'hold' (send back to pending moderation), 'spam', or 'trash'. Use list_comments first to find the comment_id.
preview_bulk_comment_statusreadPreview changing moderation status for 1-100 explicit comments. Makes no writes and returns the exact token required to apply.
apply_bulk_comment_statusdestructiveApply a previously previewed comment moderation status change to 1-100 explicit comment ids. Stops before all writes if any comment changed.
reply_to_commentwritePost a reply to an existing comment, as the connected WordPress user. The reply is automatically attached to the same post and nested under the original comment. Use list_comments first to find the comment_id.
edit_comment_contentwriteOverwrite the text of an existing comment โ fixes a typo, redacts something, or corrects a misattributed comment without deleting and re-creating it. Use list_comments first to find the comment_id.
list_scheduledreadList posts scheduled for future publication on a connected WordPress site.
list_usersreadList recently registered users on a connected WordPress site.
list_pluginsreadList plugins installed on a WordPress site: active/inactive status, installed version, and an available update version. Reads through the Imperal Bridge plugin if it's installed (no SSH needed at all -- built from WordPress's own get_plugins()/is_plugin_active()/get_plugin_updates() calls, the same data wp-admin's own Plugins screen reads its update notices from), or falls back to SSH + WP-CLI (`wp plugin list`) if SSH is configured with add_ssh. Read-only.
purge_cachewritePurge the site's page cache. Auto-detects an active cache plugin (LiteSpeed Cache or W3 Total Cache) โ if none is found, reports that clearly instead of silently doing nothing. Reads through the Imperal Bridge plugin if it's installed (no SSH needed at all โ fires the cache plugin's own real purge hook, litespeed_purge_all / w3tc_flush_all), or falls back to SSH + WP-CLI if SSH is configured with add_ssh instead.
install_pluginwriteInstall a WordPress plugin from a WordPress.org slug or a direct https:// .zip URL, and optionally activate it immediately. Reads through the Imperal Bridge plugin if it's installed (no SSH needed at all โ uses the same Plugin_Upgrader API wp-admin's own 'Add New Plugin' screen uses), or falls back to SSH + WP-CLI (`wp plugin install`) if SSH is configured instead. Use this to install Imperal's own companion bridge plugin (Imperal Bridge โ SEO + builder + media in one) or any third-party plugin the site needs.
list_custom_postsreadList items of a custom post type on a connected WordPress site. Use post_type= with the REST base slug (e.g. 'products', 'events', 'portfolio'). Check the site's panel to see available post types.
get_server_infowriteGet server information for a WordPress site: PHP version, WordPress version, available plugin/theme/core updates, cron job count, database size. Reads it through the Imperal Bridge plugin when installed (no SSH needed at all); falls back to SSH + WP-CLI when the Bridge isn't there yet or doesn't answer.
get_woocommerce_statusreadCheck whether WooCommerce and its authenticated REST API are available on a connected WordPress site.
list_ordersreadList WooCommerce orders with optional status, date, page, and customer/order search filters.
get_orderreadRead one WooCommerce order in detail, including line items, totals, payment method, and customer note.
list_productsreadList WooCommerce products with prices, SKU, stock state, visibility, and optional search/status filters.
get_productreadRead one WooCommerce product in detail, including images, categories, attributes, variations, price, and stock.
list_customersreadList WooCommerce customers with email, order count, and total spend; addresses and phone numbers are omitted.
list_couponsreadList WooCommerce coupon codes with discount type, amount, expiry, and usage limits.
list_refundsreadList refunds recorded against one WooCommerce order, including amount, date, and reason.
get_store_summaryreadSummarise WooCommerce orders, sales, refunds, items, and customers for an optional ISO-8601 date range.
list_product_variationsreadList variants of one WooCommerce variable product, including attributes, SKU, prices, stock, and a state token for guarded updates.
create_product_variationwriteCreate a variation for an existing variable product using its existing attributes. Defaults to draft for safe review.
update_product_variationwriteUpdate selected price, SKU, stock, or status fields of one product variation only after its state token is rechecked.
preview_bulk_variation_changereadPreview a bulk change for 1-100 explicit WooCommerce variation ids. Reads current variations and returns a state token; makes no writes.
apply_bulk_variation_changedestructiveApply a reviewed bulk change to 1-100 explicit WooCommerce variation ids. Requires the exact preview state token and stops before all writes if any variation changed.
preview_csv_catalog_importreadPreview a CSV import for simple WooCommerce products matched strictly by SKU. CSV columns: SKU plus regular_price, sale_price, stock_quantity, or stock_status. Returns unmatched SKUs and a state token; makes no writes.
apply_csv_catalog_importdestructiveApply a previously previewed CSV import to strictly SKU-matched WooCommerce products. Requires the exact state token and stops before all writes if any matched product changed.
preview_csv_variation_importreadPreview a CSV import for WooCommerce variations matched strictly by parent_sku plus variation_sku. CSV columns: parent_sku, variation_sku and optional regular_price, sale_price, stock_quantity, or stock_status. Returns unmatched pairs and a state token; makes no writes.
apply_csv_variation_importdestructiveApply a previously previewed CSV import to strictly matched WooCommerce variations. Requires the exact state token and stops before all writes if any matched variation changed.
list_csv_importsreadList recorded CSV catalog and variation import previews and outcomes for one connected WooCommerce site. The original CSV content is never stored.
get_csv_importreadRead one CSV import audit record: hash, timing, match/update counts, state token, and failed rows summary. Original CSV content is never stored.
retry_csv_import_failuresreadCreate a fresh safe preview containing only the rows that failed or were unmatched in a prior CSV import. It never applies changes and requires a new state token before any apply.
create_productwriteCreate a WooCommerce simple, virtual, or downloadable product. Defaults to draft; pass status='publish' explicitly to publish it.
update_productwriteUpdate selected fields of one WooCommerce product: name, status, SKU, prices, descriptions, stock, categories, or images. Omitted fields stay unchanged.
archive_productdestructiveMove one WooCommerce product to Trash without permanently deleting it. The product can be restored in WordPress.
list_product_categoriesreadList WooCommerce product categories with ids, parent ids, and product counts.
create_product_categorywriteCreate a WooCommerce product category, optionally below an existing parent category.
preview_bulk_product_changereadPreview a bulk WooCommerce product change for 1-100 explicit product ids. Reads current products and shows exactly what apply_bulk_product_change would change; makes no writes.
apply_bulk_product_changedestructiveApply a previously reviewed bulk change to 1-100 explicit WooCommerce product ids. Requires the exact state token returned by preview and stops before all writes if any product changed.
create_orderwriteCreate a WooCommerce order manually -- for a phone/in-person sale, or any purchase taken outside the store's own checkout. Supports an existing registered customer or a guest order (billing_email required for guests).
update_order_statuswriteChange one WooCommerce order status. Financial refunds are not created by this tool.
update_order_status_riskydestructiveChange one order to cancelled, failed, or refunded after explicit confirmation. This changes WooCommerce status only and never sends money through a payment gateway.
preview_bulk_order_statusreadPreview a routine status change for 1-100 explicit WooCommerce orders. Makes no writes and excludes cancelled, failed, and refunded.
apply_bulk_order_statuswriteApply a previewed routine WooCommerce order-status batch to 1-100 explicit order ids. Rechecks every order before any write.
add_private_order_notewriteAdd a private internal note to one WooCommerce order.
add_customer_order_notedestructiveAdd a customer-visible order note after explicit confirmation; WooCommerce may email the customer.
list_order_notesreadRead the note thread on one WooCommerce order -- both private internal notes and customer-visible ones.
resend_order_emailwriteRe-send a WooCommerce order notification email to the customer -- the invoice/order-details email by default, or a specific template (e.g. 'customer_completed_order', 'customer_on_hold_order') if given. Optionally redirect it to a different address than the order's own billing email. Uses WooCommerce's native order-actions REST endpoint (WooCommerce 9.8+); older WooCommerce versions don't expose it.
get_customerreadRead one WooCommerce customer profile without postal addresses or phone numbers.
create_customerwriteCreate a registered WooCommerce customer with email and optional name/username. Passwords, addresses, and phone numbers are intentionally excluded.
preview_bulk_customer_updatereadPreview setting the same first and/or last name on 1-100 explicit WooCommerce customers. Makes no writes and returns a state token.
apply_bulk_customer_updatewriteApply a previewed WooCommerce customer batch to 1-100 explicit ids. Rechecks every customer first and stops before all writes if any changed.
update_customerwriteUpdate email, first name, last name, or username of one registered WooCommerce customer. Addresses, phone numbers, and passwords are not exposed.
delete_customerdestructivePermanently delete a WooCommerce customer. Optionally reassign their past orders to another existing customer id -- WooCommerce requires SOME disposition for the departing customer's orders, so omitting reassign_to leaves those orders with their own stored billing snapshot (they are not deleted).
list_customer_ordersreadList orders belonging to one registered WooCommerce customer.
preview_bulk_coupon_updatereadPreview applying the same validated coupon fields to 1-100 explicit WooCommerce coupon ids. Makes no writes and returns the exact token required to apply.
apply_bulk_coupon_updatewriteApply a previously previewed WooCommerce coupon batch to 1-100 explicit coupon ids. Rereads every coupon and stops before all writes if any changed.
create_couponwriteCreate a WooCommerce coupon with amount, limits, expiry, product/category rules, and email restrictions.
update_couponwriteUpdate selected fields of one WooCommerce coupon without changing omitted fields.
archive_coupondestructiveMove one WooCommerce coupon to Trash without permanently deleting it.
preview_refundreadPreview a manual WooCommerce refund record without changing the order or contacting the payment gateway. Shows total, already-refunded, remaining, and requested amounts.
create_manual_refunddestructiveRecord a previously previewed manual WooCommerce refund after explicit confirmation. This does NOT contact the payment gateway and does NOT restock items. Requires the exact remaining amount from preview and a unique idempotency key.
preview_order_line_changesreadPreview quantity changes for explicit existing line items on one unpaid editable WooCommerce order. Makes no changes and returns a state token required by apply.
apply_order_line_changesdestructiveApply previously previewed quantity changes to existing line items on one unpaid editable WooCommerce order. Requires explicit confirmation and the exact state token from preview.
get_seo_metareadRead the Rank Math SEO fields (meta title, meta description, focus keyword, canonical, robots) of one post or page on a connected WordPress site. Identify the item by post_id or by slug.
preview_bulk_seo_metareadPreview setting the same Rank Math SEO fields on 1-100 explicit posts/pages/CPT items. Makes no writes and returns the exact token required to apply.
apply_bulk_seo_metawriteApply a previously previewed Rank Math SEO meta change to 1-100 explicit posts/pages/CPT items. Re-reads every target and stops before all writes if any state changed.
update_seo_metawriteUpdate the Rank Math SEO fields of one post or page on a connected WordPress site: meta title, meta description, focus keyword, canonical URL, robots directives, or a page-specific Facebook/Open Graph image. Identify the item by post_id or by slug. Omitted fields are left unchanged.
preview_bulk_term_seo_metareadPreview setting the same Rank Math SEO fields on 1-100 explicit taxonomy terms (categories/tags). Makes no writes and returns the exact token required to apply.
apply_bulk_term_seo_metawriteApply a previously previewed Rank Math SEO meta change to 1-100 explicit taxonomy terms. Re-reads every target and stops before all writes if any state changed.
get_term_seo_metareadRead the Rank Math SEO fields (meta title, meta description, focus keyword, canonical, robots) of one taxonomy term โ a category or tag โ on a connected WordPress site. Identify the term by term_id or by slug.
update_term_seo_metawriteUpdate the Rank Math SEO fields of one taxonomy term โ a category or tag โ on a connected WordPress site: meta title, meta description, and optionally focus keyword, canonical URL and robots directives. Identify the term by term_id or by slug. Omitted fields are left unchanged.
check_seo_supportreadCheck whether a connected WordPress site can expose Rank Math SEO fields: is the Imperal Bridge plugin installed, is Rank Math active, and which post types and taxonomies (categories/tags) are covered.
get_builder_contentreadRead the Elementor and/or Bricks page-builder element tree of one post or page on a connected WordPress site, flattened into a simple list of elements with ids, types, and settings. Identify the item by post_id or by slug. Each result row carries a state_token required to edit any of its elements.
get_builder_elementreadRead ONE builder/zone record in full โ id, slug, builder, zone, state_token, element_count, the full `elements` tree, and the never-compacted `heading_outline` text. Unlike get_builder_content (which always returns a list, and a list gets compacted to id/title/kind by display clients even with one row), this returns a single record that is never compacted. For Bricks pages you MUST pass zone ('header', 'content', or 'footer'); Elementor items ignore zone. Use this whenever you actually need to read heading_outline/elements, not just confirm a builder is active.
preview_bulk_builder_fieldreadPreview 1-100 explicit field changes across existing Elementor or one Bricks zone. Makes no writes and returns the exact token required to apply.
apply_bulk_builder_fieldwriteApply a previewed 1-100 explicit Elementor/Bricks field batch. Re-reads the exact builder tree and refuses all writes if its token changed.
update_builder_fieldwriteChange exactly ONE settings field on exactly ONE existing Elementor or Bricks element, identified by element_id from a previous get_builder_content call. Requires the exact state_token from that same read; the write is refused if the page changed since. Cannot create elements or replace the page โ point edits only.
create_bricks_headingwriteCreate exactly one semantic Bricks heading in an existing page or template zone. Use only after get_builder_element confirms a missing heading and provides the exact parent_id and state_token. This cannot replace arbitrary builder JSON or create any other element.
check_builder_supportreadCheck whether a connected WordPress site can read/edit Elementor or Bricks page-builder content, and โ when Bricks is active โ whether its real MCP Abilities API (142 bricks/* abilities: full page authoring via set-page-elements/ add-element/update-element, plus get-design-context, templates, revisions) is actually usable right now. This is computed live on every call for every site: read `bricks_readiness` ('not_installed' | 'needs_update' | 'needs_configuration' | 'ready') and `bricks_readiness_message` for the exact next action โ no local docs or prior session memory needed, this works the same for every user. MANDATORY: if bricks_readiness == 'ready', use the real bricks/* abilities for ALL page authoring; NEVER hand-author raw _bricks_page_content_2 postmeta as a substitute โ that path can round-trip through get_builder_element while still rendering empty in the real Bricks editor. If bricks_readiness is 'needs_update' or 'needs_configuration', relay bricks_readiness_message to the user verbatim and fall back only to this connector's narrow point-edit tools (update_builder_field, create_bricks_heading) until they've acted on it.
scan_builder_contentreadDiagnostic scan of a connected WordPress site's database for ANY post, page, or template (including custom post types like bricks_template that list_pages/list_posts never see, since they are not registered for the normal REST posts endpoints) carrying non-empty Elementor or Bricks builder content. Use this when get_builder_content reports BUILDER_NONE_ACTIVE on the items you tried, to find where builder content actually lives on the site. Read-only; requires Builder Bridge plugin v1.1.0 or later.
upload_mediawriteAdd a publicly reachable https:// image URL to a connected WordPress site's media library, and optionally set it as a post's featured image. WordPress fetches the image itself (via the Imperal Bridge plugin) โ Imperal never downloads or re-uploads the image bytes. Use the returned attachment id/url as featured_media_id, or in an 'image' content block, on create_post/update_post. For images already generated as a Media Hub package, prefer passing external_images directly on create_post/update_post instead of calling this per image.
check_media_supportreadCheck whether a connected WordPress site can add hosted images to its media library via upload_media โ whether the Imperal Bridge plugin is installed and whether the connected user can upload files.
create_postwriteCreate a WordPress post or page with Gutenberg content, optional category, Polylang language, and Rank Math SEO fields (including canonical_url). Content is given as an ordered list of {type, text, level} blocks โ 'heading', 'paragraph', 'image', or 'faq' (renders a visible Q&A section plus FAQPage JSON-LD schema, works on any site regardless of SEO plugin) โ which this tool renders into Gutenberg block markup. For post_type='post' slug, meta_title, category, excerpt, and featured_media_id are mandatory. Defaults to a draft.
update_postwriteUpdate selected fields of an existing WordPress post or page: title, status, slug, content (as {type, text, level} blocks), excerpt, category, or date. Omitted fields are left unchanged.
list_post_categoriesreadList native WordPress post categories (not WooCommerce product categories). Hierarchical โ filter by parent_id to walk the tree: omit parent_id for every category, or pass parent_id=0 for only top-level ones, or a category id to see its children.
create_post_categorywriteCreate a new native WordPress post category, optionally nested under an existing parent category (parent_id) to build a category tree.
update_post_categorywriteRename a category, change its description, or move it under a different parent.
delete_post_categorydestructivePermanently delete a native WordPress post category. Posts in it are not deleted โ they simply lose that category. Children of the deleted category become top-level (WordPress does not cascade-delete a category tree).
list_post_tagsreadList native WordPress post tags (flat โ tags have no parent/child nesting).
create_post_tagwriteCreate a new native WordPress post tag.
update_post_tagwriteRename a tag or change its description.
delete_post_tagdestructivePermanently delete a native WordPress post tag. Posts using it simply lose that tag.
extract_linksreadExtract every link inside one article's content, with its anchor text and whether it is internal (same site) or external -- the panel's SEO review of an article's link profile. Pass content_html directly (e.g. straight from Article Writer before publishing) OR post_id on a connected site to read a post already on WordPress. Flags anchor text that is generic ('click here', 'read more', the bare URL) since that wastes the internal-linking SEO value, and flags external links missing rel=nofollow/sponsored.
check_sitemap_inclusionreadCheck whether a just-published post/page URL already appears in the site's XML sitemap -- the mandatory post-publish step that catches a page silently excluded from indexing (wrong Rank Math visibility setting, sitemap caching, an SEO plugin config the caller does not control). Tries sitemap_index.xml, sitemap.xml, then wp-sitemap.xml (WordPress core's own, when no SEO plugin publishes one), and recurses one level into an index's sub-sitemaps.
create_userwriteCreate a registered WordPress user with username, email, and role. Passwords are optional -- a strong random one is generated and returned once (WordPress core requires SOME password to create a user, but nothing forces sharing it: an admin can also just email the user a password-reset link).
update_userwriteUpdate an existing WordPress user's role, email, first/last name.
preview_bulk_user_rolereadPreview changing the role for 1-100 explicit WordPress users. Makes no writes and returns the exact token required to apply.
apply_bulk_user_rolewriteApply a previously previewed role change to 1-100 explicit WordPress users. Stops before all writes if any user changed.
preview_bulk_user_namereadPreview setting the same first and/or last name on 1-100 explicit WordPress users. Makes no writes and returns the exact token required to apply.
apply_bulk_user_namewriteApply a previously previewed first/last name change to 1-100 explicit WordPress users. Stops before all writes if any user changed.
delete_userdestructivePermanently delete a WordPress user. Optionally reassign their posts to another user id -- WordPress requires SOME disposition for the departing user's posts, so omitting reassign_to deletes their posts along with the account.
reset_user_passwordwriteTrigger WordPress's own native password-reset email for one user -- the same email wp-admin's Users list sends when an admin clicks 'Send password reset'. WordPress core has no REST route for this (only the wp-login.php form does), so this reads through the Imperal Bridge plugin -- install it on the site first.
list_menusreadList navigation menus on a connected WordPress site (requires WordPress 5.9+).
list_menu_itemsreadList the items inside one navigation menu, in their current order.
create_menu_itemwriteAdd a new link/item to an existing navigation menu.
update_menu_itemwriteUpdate a menu item's title, URL, parent, or position.
delete_menu_itemdestructivePermanently remove one item from a navigation menu.
preview_bulk_menu_orderreadPreview reordering all explicit top-level items in one WordPress menu. Makes no writes, requires the complete current top-level list, and returns a state token.
apply_bulk_menu_orderwriteApply a previewed complete top-level WordPress menu order. Re-reads the exact menu first and performs no writes if it changed.
reorder_menu_itemswriteReorder the top-level items of a menu by giving their ids in the desired top-to-bottom order. Pass ALL top-level item ids for this menu, not a subset.
delete_postdestructiveDelete a WordPress post or page. By default moves it to Trash (recoverable in WordPress); pass force=true to permanently delete it instead, bypassing Trash.
duplicate_postwriteDuplicate an existing WordPress post or page as a new draft, copying its title (with a suffix), content, excerpt, and category. Useful as a starting point for a similar piece of content or a seasonal re-run of an old page.
preview_bulk_post_statusreadPreview a status change for 1-100 explicit posts/pages/CPT items. Makes no writes and returns the exact state token required to apply.
bulk_update_post_statusdestructiveApply a previewed status change to 1-100 explicit posts/pages/CPT items. Requires the exact state token and performs no writes if any item changed since preview.
preview_bulk_post_comment_statusreadPreview changing the comment status (open/closed) for 1-100 explicit posts/pages/CPT items. Makes no writes and returns the exact state token required to apply.
apply_bulk_post_comment_statuswriteApply a previewed comment-status change to 1-100 explicit posts/pages/CPT items. Requires the exact state token and performs no writes if any item changed since preview.
get_post_revisionsreadList the stored revisions of a post/page, newest first -- author, date, and a short excerpt preview of each. Native /wp/v2 revisions endpoint, no Bridge/SSH needed.
restore_revisionwriteRestore a post/page's content and title to a previous revision. WordPress core has no native REST 'restore' verb, so this reads the chosen revision's content/title/excerpt and writes them back onto the live post as a normal update -- the live post's own revision history still records this as a new change, nothing is silently rewritten.
set_post_passwordwritePassword-protect a post/page (visitors must enter the password to view it), or remove protection by passing an empty password. Native WordPress core field, no Bridge needed.
list_product_reviewsreadList WooCommerce product reviews. Use status='hold' to see reviews pending moderation, 'approved' for published, 'spam' for spam. Optionally filter to one product_id.
set_product_review_statuswriteChange a product review's moderation status: 'approved' (publish it), 'hold' (send back to pending moderation), 'spam', or 'trash'. Use list_product_reviews first to find the review_id.
preview_bulk_product_review_statusreadPreview changing moderation status for 1-100 explicit WooCommerce product reviews. Makes no writes and returns the exact token required to apply.
apply_bulk_product_review_statuswriteApply a previously previewed product-review moderation status change to 1-100 explicit review ids. Stops before all writes if any review changed.
reply_to_product_reviewwriteReply to a WooCommerce product review, posted as the connected WordPress user. Use list_product_reviews first to find the review_id.
list_native_pluginsreadList installed plugins via WordPress's own REST API (needs WordPress 5.5+ and an administrator connection) โ no SSH required. Use activate_plugin/deactivate_plugin with the returned plugin id to change status.
preview_bulk_plugin_statusreadPreview activating or deactivating 1-100 explicit native WordPress plugins. Makes no writes and returns the exact token required to apply.
apply_bulk_plugin_statuswriteApply a previously previewed plugin status change to 1-100 explicit plugins. Rechecks every plugin before writing and stops before all writes if any changed.
activate_pluginwriteActivate an installed WordPress plugin via the native REST API (WordPress 5.5+, no SSH needed).
deactivate_pluginwriteDeactivate an installed WordPress plugin via the native REST API (WordPress 5.5+, no SSH needed).
list_themesreadList installed themes via WordPress's own REST API (needs an administrator connection) โ shows which one is currently active. Read-only: WordPress core has no REST route to switch the active theme.
get_site_settingsreadRead native WordPress site settings: title, tagline, timezone, date/time format, start of week, language, and the media-library site-icon attachment id.
update_site_settingswriteUpdate native WordPress site settings: title, tagline, timezone, date/time format, start of week, or native site icon. Only the fields you pass are changed.
list_redirectsreadList Rank Math URL redirects on a site โ which old URLs redirect to which new ones, with hit counts. Requires the Imperal Bridge plugin and Rank Math's Redirections module.
create_redirectwriteCreate a Rank Math URL redirect: which URL to redirect FROM (source_pattern), where TO (url_to), and the HTTP status code (301 permanent, 302 temporary, 410 gone). Requires the Imperal Bridge plugin and Rank Math's Redirections module.
delete_redirectwritePermanently delete a Rank Math URL redirect by id, from list_redirects.
set_redirect_statuswriteChange a redirect's status: 'active' (live), 'inactive' (paused, does not redirect), or 'trashed'. Use list_redirects first to find the redirect_id.
preview_bulk_redirect_statusreadPreview changing status ('active'/'inactive'/'trashed') for 1-100 explicit Rank Math redirects. Makes no writes and returns the exact token required to apply.
apply_bulk_redirect_statuswriteApply a previewed status change to 1-100 explicit Rank Math redirects. Re-reads every target and stops before all writes if any redirect changed.
get_seo_analysis_scorereadRead Rank Math's own on-page SEO analysis score (0-100) for one post/page -- the same score Rank Math shows in its content-analysis panel in the editor. Returns null if Rank Math has never analyzed that post. Requires the Imperal Bridge plugin.
get_robots_txtreadRead Rank Math's robots.txt override text (the content its own robots.txt editor writes) -- NOT the raw file on disk. Empty content means no override is active and WordPress's own default robots.txt is served. Requires the Imperal Bridge plugin.
update_robots_txtwriteWrite Rank Math's robots.txt override text. Pass an empty string to clear the override and revert to WordPress's default robots.txt. Only takes effect while the site's own 'Search engine visibility' setting allows indexing. Requires the Imperal Bridge plugin.
get_sitemap_statusreadCheck whether Rank Math's Sitemap module is active on a site, and get the sitemap index URL if so. Rank Math generates sitemaps dynamically on request -- there is no separate 'regenerate' action, this just reports the module's on/off state. Requires the Imperal Bridge plugin.
list_404_hitsreadList real 404 (page-not-found) hits logged by Rank Math's own 404 Monitor -- URL, when, how many times, referer, and user agent. Useful for finding broken links to fix or redirect (pair with create_redirect). Requires the Imperal Bridge plugin and Rank Math's 404 Monitor module enabled.
delete_404_hitwriteRemove one logged 404 hit from Rank Math's 404 Monitor by id, from list_404_hits.
submit_urls_to_indexnowwriteSubmit one or more of this site's own URLs to Rank Math's Instant Indexing (IndexNow) API so participating search engines (Bing, Yandex, and others on the IndexNow protocol) crawl and re-index them right away, instead of waiting for their next scheduled crawl. Use right after publishing or significantly updating a page. Does not affect Google directly (Google is not an IndexNow participant).
list_indexnow_logreadList Rank Math's own IndexNow submission history for this site -- which URLs were submitted, when, whether manually or automatically (on publish/update/trash), the API response status, and the result message. Rank Math keeps the last 100 entries.
clear_indexnow_logwriteClear Rank Math's IndexNow submission log on this site (all entries, or just the manual or automatic ones). This only clears the history record -- it does not resubmit or unsubmit any URL.
reset_indexnow_keywriteGenerate a fresh IndexNow API key for this site and discard the old one, then return the new key and where it's hosted (a <key>.txt file at the site root, verified by IndexNow-participating search engines). Use only if the key may have leaked -- every past submission stays valid, but the OLD key file stops matching, so pending verification by search engines using the old key will fail until they see the new one.
get_llms_txt_settingsreadRead Rank Math's llms.txt settings -- which post types and taxonomies are listed in the dynamically-served /llms.txt file (the AI-crawler guidance file, an analogue of robots.txt aimed at LLMs), the per-type link limit, extra Markdown appended to the file, whether Rank Math's llms-txt module is active (it is NOT active by default), and the file's live URL. Requires the Imperal Bridge plugin.
update_llms_txt_settingswriteUpdate Rank Math's llms.txt settings: which post types/taxonomies to list, the per-type link limit, and/or extra Markdown appended to the file. Only the fields you pass are changed -- omit a field to leave it as-is. Pass an empty string for extra_content to clear it. Does not turn the llms-txt module itself on or off -- that is a Rank Math module-manager setting with no single-module REST toggle. Requires the Imperal Bridge plugin.
get_post_metareadRead ALL custom-field meta on one post/page/CPT item, including meta keys WordPress's own REST API hides because they were never registered with show_in_rest (most ACF fields and plugin-added meta fall in this category). Requires the Imperal Bridge plugin.
update_post_metawriteSet one or more arbitrary custom-field meta keys/values on a post/page/CPT item โ the generic version of update_seo_meta for non-SEO custom fields. Requires the Imperal Bridge plugin. Values must be plain strings/numbers/booleans/arrays.
preview_bulk_post_metareadPreview setting the same safe custom-meta key/value pairs on 1-100 explicit posts/pages/CPT items. Makes no writes and returns the exact token required to apply.
apply_bulk_post_metadestructiveApply a previewed safe custom-meta update to 1-100 explicit posts/pages/CPT items. Stops before all writes if any target's reviewed keys changed.
delete_post_metawriteRemove one custom-field meta key from a post/page/CPT item. Requires the Imperal Bridge plugin.
get_user_metareadRead ALL custom-field meta on one WordPress user account. Requires the Imperal Bridge plugin.
update_user_metawriteSet one or more arbitrary custom-field meta keys/values on a WordPress user account. Requires the Imperal Bridge plugin.
delete_user_metawriteRemove one custom-field meta key from a WordPress user account. Requires the Imperal Bridge plugin.
get_term_metareadRead ALL custom-field meta on one taxonomy term (category, tag, or custom taxonomy). Requires the Imperal Bridge plugin.
update_term_metawriteSet one or more arbitrary custom-field meta keys/values on a taxonomy term (category, tag, or custom taxonomy). Requires the Imperal Bridge plugin.
preview_bulk_term_metareadPreview setting the same safe custom-meta key/value pairs on 1-100 explicit taxonomy terms. Makes no writes and returns the exact token required to apply.
apply_bulk_term_metadestructiveApply a previewed safe custom-meta update to 1-100 explicit taxonomy terms. Stops before all writes if any target's reviewed keys changed.
delete_term_metawriteRemove one custom-field meta key from a taxonomy term. Requires the Imperal Bridge plugin.
get_optionreadRead one named row from wp_options. Only option names on the Imperal Bridge's hard allowlist can be read (Rank Math's own settings, site title/tagline, a few WooCommerce store-settings names) โ never siteurl/home/active_plugins/etc. Requires the Imperal Bridge plugin.
update_optionwriteWrite one named row in wp_options. Only option names on the Imperal Bridge's hard allowlist can be written โ never siteurl/home/active_plugins/etc, and never a value that looks like a serialized PHP object (refused server-side). Requires the Imperal Bridge plugin.
list_acf_fieldsreadList registered Advanced Custom Fields field groups/fields for a post type, if ACF is active on the site. Returns a clear not-found error (never a fabricated empty list) if ACF isn't installed/active. Requires the Imperal Bridge plugin.
list_transientsreadList WordPress transients (temporary cached values plugins/themes store in wp_options). Reads through the Imperal Bridge plugin if it's installed, or falls back to SSH + WP-CLI (`wp transient list`) if SSH is configured with add_ssh. Shows name, value, and expiration โ useful for diagnosing stale cached data or a bloated options table.
delete_transientwriteDelete one named transient. Reads through the Imperal Bridge plugin if it's installed, or falls back to SSH + WP-CLI (`wp transient delete <name>`) if SSH is configured with add_ssh. Pass a name from list_transients โ never a guessed name.
flush_all_transientswriteDelete every transient on the site. Reads through the Imperal Bridge plugin if it's installed, or falls back to SSH + WP-CLI (`wp transient delete --all`) if SSH is configured with add_ssh. More thorough than one plugin's own cache-clear button โ clears every plugin's/theme's transient at once.
get_object_cache_statusreadCheck whether a persistent object cache (Redis, Memcached, etc.) is active on the site. Reads through the Imperal Bridge plugin if it's installed, or falls back to SSH + WP-CLI (`wp cache type`) if SSH is configured with add_ssh. Returns 'Default' when no persistent object cache drop-in is installed (WordPress's built-in non-persistent cache only).
flush_object_cachewriteFlush the persistent object cache (Redis/Memcached/etc., if active). Reads through the Imperal Bridge plugin if it's installed, or falls back to SSH + WP-CLI (`wp cache flush`) if SSH is configured with add_ssh. This is different from purge_cache (which purges a PAGE cache plugin) โ this clears the object cache layer instead.
list_cron_eventsreadList every scheduled WordPress cron event. Reads through the Imperal Bridge plugin if it's installed, or falls back to SSH + WP-CLI (`wp cron event list`) if SSH is configured with add_ssh. Shows each event's hook name, next run time, and recurrence โ use before run_cron_event or delete_cron_event to see real hook names, never invent one.
run_cron_eventwriteForce one specific cron event to run right now, regardless of whether it's due. Reads through the Imperal Bridge plugin if it's installed, or falls back to SSH + WP-CLI (`wp cron event run <hook>`) if SSH is configured with add_ssh. Pass a hook name from list_cron_events โ never invent one. Use run_wp_cron instead when you just want every DUE event to fire.
delete_cron_eventwriteUnschedule one cron event โ removes every scheduled occurrence of that hook. Reads through the Imperal Bridge plugin if it's installed, or falls back to SSH + WP-CLI (`wp cron event delete <hook>`) if SSH is configured with add_ssh. Use to fix a stuck or duplicated cron event. Pass a hook name from list_cron_events โ never invent one.
list_cron_schedulesreadList every registered cron recurrence interval (hourly, twicedaily, daily, and any custom intervals plugins have added). Reads through the Imperal Bridge plugin if it's installed, or falls back to SSH + WP-CLI (`wp cron schedule list`) if SSH is configured with add_ssh. Useful for diagnosing 'why does this only run every N hours' when a plugin's own schedule choice is opaque.
list_database_tablesreadList every table in the site's own database, with its size on disk. Reads through the Imperal Bridge plugin if it's installed (no SSH needed at all); falls back to SSH + WP-CLI (`wp db size --tables`) when the Bridge isn't there yet or doesn't answer. Use before run_db_search_replace or export_database_dump to see real table names/wildcards, never invent one.
run_db_search_replacereadPREVIEW a database search-and-replace across the site's own tables -- the standard way to migrate a domain (staging to production, http to https) across serialized WordPress data. Reads through the Imperal Bridge plugin if it's installed (no SSH needed at all); falls back to SSH + WP-CLI (`wp search-replace --dry-run`) otherwise. This ALWAYS runs as a dry-run and only reports how many rows WOULD change; nothing is written. Pass the returned replacement count to apply_db_search_replace to actually run it.
apply_db_search_replacewriteActually run a database search-and-replace, after previewing it with run_db_search_replace. Reads/writes through the Imperal Bridge plugin if it's installed (no SSH needed at all); falls back to SSH + WP-CLI (`wp search-replace`) otherwise. Re-checks a fresh dry-run immediately before writing and refuses to proceed if the replacement count no longer matches expected_replacements -- protects against a stale preview on a database that changed in between. This changes live data; there is no dry-run undo, so back up first if unsure.
optimize_database_tableswriteDefragment and optimize every database table -- reclaims space after heavy deletes, does not change any data. Reads/writes through the Imperal Bridge plugin if it's installed (no SSH needed at all); falls back to SSH + WP-CLI (`wp db optimize`) otherwise. Safe routine maintenance.
check_database_repairwriteCheck every database table for corruption, and repair any that are damaged if repair=true. Reads/writes through the Imperal Bridge plugin if it's installed (no SSH needed at all); falls back to SSH + WP-CLI (`wp db check`/`wp db repair`) otherwise. Use check-only first (repair=false, the default) to see if anything is actually broken before repairing.
export_database_dumpreadExport a SQL dump of the site's database, returned inline as text. Reads through the Imperal Bridge plugin if it's installed (no SSH needed at all); falls back to SSH + WP-CLI (`wp db export`) otherwise. Capped at roughly 2MB of SQL text -- pass specific `tables` from list_database_tables to scope a large database down if the export is refused as too large.
count_post_type_rowsreadCount how many rows of one post type exist (any status). Reads through the Imperal Bridge plugin if it's installed (no SSH needed at all); falls back to SSH + WP-CLI (`wp post list --format=count`) otherwise. Pass a post_type slug from list_custom_posts or the site's own /wp/v2/types, e.g. post, page, product.
count_orphaned_postmetareadCount wp_postmeta rows whose post no longer exists -- a common 'is my database clean' diagnostic, useful after bulk deletes or a messy plugin uninstall. Reads through the Imperal Bridge plugin if it's installed (no SSH needed at all); falls back to SSH + WP-CLI otherwise. Read-only; does not delete anything.
check_backup_restorabilityreadCheck whether this site's own database backup is structurally sound enough to trust for a restore -- NOT a real test-restore (that needs a separate sandbox database this app does not provision). Exports the current dump via export_database_dump's same Bridge/SSH path, compares it against list_database_tables, and flags: a truncated/cut-off export, any WordPress core table missing entirely, and any table whose CREATE statement has zero data rows. Run this after every real backup job to catch a silently broken backup before you actually need it.
list_rest_routesreadEnumerate every REST route/namespace registered on this WordPress site -- WordPress core's own routes plus every plugin's own routes (WooCommerce, Rank Math, page builders...). Reads the site's own REST API root index (GET /wp-json/) -- the exact discovery document any REST client uses to find out what a site actually exposes. Use to answer 'what can I actually call on this site' or to confirm a plugin's REST surface is really there before assuming it. Pass namespace to filter, e.g. 'wp/v2'.
get_rest_route_schemareadRead the full endpoint detail for ONE REST route on this site -- its HTTP methods and each endpoint's declared args (required/type/default), straight from the site's own REST API root index. Pass the exact route path from list_rest_routes (e.g. '/wp/v2/posts/(?P<id>[\d]+)').
list_application_passwordsreadList the Application Passwords currently registered for the WordPress user this site connects as -- name, created date, last used, last IP. Never the secret itself (WordPress only ever returns that once, at creation, outside this app). Requires WordPress 5.6+. Use for security auditing: 'what has access to this site' and to find the uuid to revoke.
revoke_application_passworddestructivePermanently revoke ONE Application Password by its uuid (from list_application_passwords) -- immediately blocks whatever client was using it. Distinct from forget_site, which only removes Imperal's OWN stored credential; this changes WordPress itself and affects every client using that password, not just this connection. Requires WordPress 5.6+.
list_wp_abilitiesreadList every ability currently registered with WordPress's own Abilities API (wp-abilities/v1) on this site -- e.g. Bricks builder actions an MCP client (Claude, Cursor...) can run once 'Bricks > AI' has been enabled. Uses the site's own native REST route (registered by the WordPress MCP Adapter plugin), authenticated with the connected Application Password -- no Bridge change needed. An empty list means no plugin has registered abilities yet (e.g. Bricks AI has not been switched on).
describe_builder_abilityreadRead ONE WordPress builder ability's own declared schema (input_schema, output_schema, and its readonly/destructive/idempotent annotations) before calling it -- e.g. 'bricks/set-page-elements' or 'bricks/add-element'. Works for any builder that registers abilities via WordPress's own Abilities API, not just Bricks. Always call this before call_builder_ability for an ability you haven't used yet, so the input object you send actually matches what the ability expects.
call_builder_abilitywriteRun ONE non-destructive WordPress builder ability by exact name (e.g. 'bricks/get-design-context', 'bricks/set-page-elements', 'bricks/add-element') -- the universal dispatcher that covers any builder registering abilities via WordPress's own Abilities API, without needing one tool per ability. Call describe_builder_ability first to see the expected 'input' shape. Once check_builder_support reports bricks_readiness 'ready', use this for ALL real page authoring -- never hand-author raw _bricks_page_content_2 postmeta as a substitute; it can silently render empty in the real builder. Abilities the site itself marks destructive are refused here -- use call_builder_ability_risky for those.
call_builder_ability_riskydestructiveRun ONE ability the site itself marks destructive (e.g. an ability that deletes or irreversibly overwrites content) after explicit confirmation. Refuses any ability that is NOT marked destructive -- use call_builder_ability for those instead. Same universal dispatcher shape as call_builder_ability, covering any builder on WordPress's own Abilities API.
get_php_inforeadGet server information for a WordPress site: PHP version, loaded extensions, and memory_limit/max_execution_time/upload_max_filesize/post_max_size -- reads it through the Imperal Bridge plugin (2.6.0+). Feeds 'is this site tech-eligible for X' questions.
check_debug_modereadCheck whether WP_DEBUG / WP_DEBUG_LOG / WP_DEBUG_DISPLAY are on for a connected WordPress site -- these should normally be OFF in production, and WP_DEBUG_DISPLAY leaking PHP notices/warnings to visitors is a common, genuinely risky misconfiguration. Reads through the Imperal Bridge plugin (2.6.0+).
check_file_permissionsreadSanity-check wp-config.php and wp-content permissions on a connected WordPress site -- wp-config.php world-readable leaks database credentials; wp-content writable by everyone allows arbitrary file drops. Read-only: never changes any permission. Reads through the Imperal Bridge plugin (2.6.0+).
list_admin_usersreadList only the users with the administrator role on a connected WordPress site -- a common security audit ask ('who has admin on this site'). Native WordPress REST API filter, no Bridge or SSH needed.
get_wp_config_constantsreadRead a SAFE, hard-allowlisted subset of a connected WordPress site's wp-config.php constants (WP_ENV/WP_DEBUG/WP_CACHE, WP_HOME/WP_SITEURL, table prefix, WP version pin, DISALLOW_FILE_EDIT/MODS, AUTOMATIC_UPDATER_DISABLED) -- NEVER database credentials or auth keys/salts. Reads through the Imperal Bridge plugin (2.7.0+).
list_must_use_pluginsreadList must-use (mu-) plugins on a connected WordPress site -- these are invisible to list_plugins/list_native_plugins because WordPress core excludes them from the regular plugins list (mu-plugins can't be deactivated). Reads through the Imperal Bridge plugin (2.7.0+).
list_drop_insreadList WordPress core drop-in files present on a connected site (object-cache.php, advanced-cache.php, db.php, etc.) -- shows which caching/DB layer is actually in play. Reads through the Imperal Bridge plugin (2.7.0+).
get_environment_typereadRead WordPress 5.5+'s own declared environment type for a connected site: production, staging, development, or local (defaults to 'production' if the site never set WP_ENVIRONMENT_TYPE). Reads through the Imperal Bridge plugin (2.7.0+).
tail_debug_logreadRead the last N lines of a connected WordPress site's wp-content/debug.log (the file WP_DEBUG_LOG writes to). Reads through the Imperal Bridge plugin if it's installed (no SSH needed at all); falls back to SSH + WP-CLI otherwise. If the site has WP_DEBUG_LOG off, or has never logged an error, there is honestly no file -- reported as exists=false, never fabricated content.
clear_debug_logwriteTruncate a connected WordPress site's wp-content/debug.log to empty (the file is truncated in place, never deleted, so WordPress can keep writing to it without recreating it). Reads/writes through the Imperal Bridge plugin if it's installed (no SSH needed at all); falls back to SSH + WP-CLI otherwise.
tail_php_error_logreadRead the last N lines of a connected WordPress site's PHP error log, at the path PHP itself reports via ini_get('error_log') -- never a guessed distro-specific path. Reads through the Imperal Bridge plugin if it's installed (no SSH needed at all); falls back to SSH + WP-CLI otherwise. If PHP has no error_log configured (likely logging to the web server's own error log instead), this is reported honestly rather than fabricating a path.
list_registered_post_typesreadList every post type registered on a connected WordPress site -- not just the ones already known, but every CPT a plugin or theme registered -- with its REST base slug, hierarchical/viewable flags, and which taxonomies it's associated with. Reads the site's own native `GET /wp/v2/types` (context=edit where the connected user's role allows it, otherwise a plain read). Use this before list_custom_posts to discover a CPT slug dynamically instead of already having to know it.
list_registered_taxonomiesreadList every taxonomy registered on a connected WordPress site -- native categories/tags plus any custom taxonomy a plugin or theme registered -- with its REST base slug, hierarchical/public flags, and which post types it's attached to. Reads the site's own native `GET /wp/v2/taxonomies` (context=edit where the connected user's role allows it, otherwise a plain read). Useful for populating a taxonomy picker dynamically.
list_reusable_blocksreadList Gutenberg reusable blocks (WordPress now calls these 'synced patterns') on a connected site -- real posts stored under the `wp_block` post type, with each one's sync status (fully synced vs. an unsynced/partial pattern). Reads the site's own native `GET /wp/v2/blocks` (WordPress core since 5.0) -- no Bridge or SSH needed. Useful for a 'which reusable block should I edit / is this content actually synced everywhere it's used' question.
list_block_patternsreadList every block pattern registered on a connected site -- core, theme, and plugin-supplied patterns available in the block inserter, with categories, keywords, which block types/post types it's restricted to, and its source (core/theme/plugin). Reads the site's own native `GET /wp/v2/block-patterns/patterns` (WordPress core since 6.0) -- no Bridge or SSH needed. Read-only: patterns are PHP/JSON registrations, not database rows, so WordPress itself has no REST route to create/edit/delete one.
list_registered_webhooksreadList WooCommerce webhooks configured on a site -- URL, topic (e.g. order.created), and status (active/paused/disabled). Native `wc/v3/webhooks` -- requires WooCommerce.
get_webhookreadRead one WooCommerce webhook's full configuration (topic, delivery URL, status, dates). Secret is never returned by WooCommerce.
create_webhookwriteCreate a WooCommerce webhook: which topic to fire on (order.created, product.updated, etc.) and the HTTPS URL to deliver the payload to. Lets a backend developer wire this site into an external system without touching wp-admin.
update_webhookwriteChange URL/topic/status/secret on an existing WooCommerce webhook without touching omitted fields.
delete_webhookdestructivePermanently remove a WooCommerce webhook. Use list_registered_webhooks first to find the webhook_id.
preview_bulk_webhook_statusreadPreview changing status for 1-100 explicit WooCommerce webhooks. Makes no writes and returns the exact token required to apply.
apply_bulk_webhook_statuswriteApply a previously previewed status change to 1-100 explicit WooCommerce webhooks. Re-reads every target and stops before all writes if any webhook changed.
list_scheduled_actionsreadList Action Scheduler jobs (WooCommerce's own background job queue) -- pending, in-progress, complete, failed, or canceled, filterable by status/hook/group. Reads through the Imperal Bridge plugin (needs 2.12.0+); Action Scheduler itself must be active on the site (ships inside WooCommerce).
get_scheduled_actionreadRead one Action Scheduler job in full detail -- hook, status, group, scheduled time, args, and its own execution log entries (started/completed/failed messages). Reads through the Imperal Bridge plugin (needs 2.12.0+).
run_scheduled_actionwriteForce one Action Scheduler job to run right now, regardless of its scheduled time -- the exact same 'Run' row action the Scheduled Actions admin screen offers. Runs synchronously and surfaces whatever error the job itself raises. Reads through the Imperal Bridge plugin (needs 2.12.0+).
cancel_scheduled_actionwriteCancel one pending Action Scheduler job so it never runs. Reads through the Imperal Bridge plugin (needs 2.12.0+).
retry_failed_actionwriteRe-queue one FAILED Action Scheduler job for another attempt. Action Scheduler has no native retry, so this schedules a brand-new action with the same hook/args/group -- the same thing a developer calling its own public API by hand would do. Only actions already in the 'failed' status are eligible. Reads through the Imperal Bridge plugin (needs 2.12.0+).
count_actions_by_statusreadOne-glance health snapshot of the Action Scheduler queue -- how many jobs are pending, in-progress, complete, failed, or canceled. The single most useful backend-dev diagnostic for this whole area ('47 failed, 3 pending'). Reads through the Imperal Bridge plugin (needs 2.12.0+).
get_permalink_structurereadRead the site's current permalink structure plus its category/tag base slugs โ the same three values wp-admin's Settings > Permalinks screen reads. Reads through the Imperal Bridge plugin if it's installed, or falls back to SSH + WP-CLI (`wp option get`) if SSH is configured with add_ssh. Native /wp/v2/settings is not used because permalink_structure exposure there is unreliable across WordPress versions and never included category_base/tag_base at all.
update_permalink_structurewriteUpdate the site's permalink structure and/or category/tag base slugs, then flush rewrite rules โ the same two-step wp-admin's Settings > Permalinks 'Save Changes' button performs. Reads through the Imperal Bridge plugin if it's installed, or falls back to SSH + WP-CLI (`wp rewrite structure`) if SSH is configured with add_ssh. Pass an empty permalink_structure for plain '?p=123' links.
flush_rewrite_ruleswriteFlush the site's rewrite rules โ regenerates the compiled rules WordPress uses to match incoming URLs, without changing the permalink structure itself. Useful after a plugin/theme registers new post types or CPT rewrite rules and 404s appear on its own URLs. Reads through the Imperal Bridge plugin if it's installed, or falls back to SSH + WP-CLI (`wp rewrite flush`) if SSH is configured with add_ssh.
list_rewrite_rulesreadList the site's compiled rewrite rules โ each rule's regex match pattern and the query string it maps to, matching `wp rewrite list`. Useful for diagnosing why a custom post type or plugin URL 404s. Reads through the Imperal Bridge plugin if it's installed, or falls back to SSH + WP-CLI (`wp rewrite list`) if SSH is configured with add_ssh.
export_wxrreadExport the site's content as a WXR (WordPress eXtended RSS) document โ the same format Tools > Export produces, importable into any WordPress site. Optionally scoped by content/post type, author, category, date range, or status. Reads through the Imperal Bridge plugin if it's installed (core's own export_wp(), no extra plugin needed), or falls back to SSH + WP-CLI (`wp export --stdout`) if SSH is configured with add_ssh. Capped at ~2MB of XML text โ narrow the filters if the export is refused as too large. WXR does not include site options/settings or the attachment FILES themselves, only their metadata.
import_wxrwriteImport a WXR (WordPress eXtended RSS) document into the site โ the same format Tools > Import's WordPress importer accepts. SSH-ONLY: this needs WP-CLI's own `wp import`, backed by the wordpress-importer plugin, which has no safe headless REST equivalent (its only entry point is a web-admin upload wizard). Requires SSH configured with add_ssh, AND the wordpress-importer plugin installed and active on the target site (install_plugin with slug_or_url='wordpress-importer' if it's missing) โ reports a clear error rather than a silent no-op if either is missing.
verify_core_checksumsreadVerify WordPress core files against the official WordPress.org checksums via WP-CLI (`wp core verify-checksums`). Read-only and SSH-only: it does not load WordPress during verification, which makes it useful when checking for modified core files. A mismatch is reported as a finding, never silently treated as a pass.
verify_plugin_checksumsreadVerify one installed WordPress.org plugin's files against its official checksums via WP-CLI (`wp plugin verify-checksums <plugin>`). Pass an exact plugin slug from list_plugins. Premium, custom, or non-WordPress.org plugins may have no official checksum manifest; that response is reported honestly, not as a pass or a failure.
send_test_emailwriteAsk WordPress to send one fixed test message to an email address through its own wp_mail() path. Requires Imperal Bridge 2.15.0+ and an administrator Application Password. A success means WordPress accepted the message for sending โ check the inbox/spam folder to confirm actual delivery.
get_mail_configurationreadIdentify the WordPress mail mechanism without exposing credentials: reports active WP Mail SMTP when its plugin is detected, otherwise reports native/undetermined wp_mail() handling. Requires Imperal Bridge 2.15.0+ and an administrator Application Password.
run_core_site_health_testsreadRun WordPress core's own fixed Site Health REST checks: background updates, loopback requests, HTTPS status, WordPress.org communication, and Authorization-header handling. This is read-only and distinct from get_site_health's connectivity/count check; requires an administrator Application Password.
get_core_site_health_directory_sizesreadRead the directory and database size data calculated by WordPress core's Site Health API. Read-only; requires an administrator Application Password and WordPress 5.6+ for the documented directory-sizes REST endpoint.
list_active_sessionsreadList a WordPress user's active native login sessions: login time, expiry, IP address, and user-agent. Requires Imperal Bridge 2.16.0+ and an administrator Application Password.
destroy_user_sessionswriteForce-log out one WordPress user everywhere by destroying all of that user's native login sessions. Does not change their password or delete the account. Requires Imperal Bridge 2.16.0+.
list_network_sitesreadList subsites in a connected WordPress Multisite network: blog ID, domain, path, public/archived/spam/deleted state, and registered date. Requires Imperal Bridge 2.18.0+ and a WordPress super-administrator; returns a clear result on a normal single-site installation.
list_network_pluginsreadList installed plugins on a connected WordPress Multisite network, including each plugin's file, name, version, and network-wide activation state. Requires Imperal Bridge 2.18.0+ and a WordPress super-administrator.
create_network_sitewriteCreate one new subsite in a connected WordPress Multisite network using its domain, path, title, and the existing owner user's email. Requires Imperal Bridge 2.18.0+ and a WordPress super-administrator. This does not create users, install plugins, or alter other network sites.
Install WordPress Hub and let Webbee use it across your workflow.
Open in panel