diff --git a/add-ons/administrative/comments-extension.mdx b/add-ons/administrative/comments-extension.mdx
index 564921d..a7647ef 100644
--- a/add-ons/administrative/comments-extension.mdx
+++ b/add-ons/administrative/comments-extension.mdx
@@ -25,7 +25,7 @@ addonType: extension
data-pricing-tier="pro"
data-bundle="MainWP Pro"
data-addon-type="extension"
- data-version="5.0"
+ data-version="6.1.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-comments-extension/"
data-owned-by="Jestart LLC"
@@ -235,6 +235,12 @@ curl -X PUT \
See [Extensions Endpoints](/api-reference/rest-api/extensions#comments) for the full parameter reference and additional examples.
+## Comments Abilities
+
+Version 6.1.0 adds MainWP Abilities for working with comments through supported automation tools. You can list comments, retrieve one comment, view recently synced comments, and moderate comments on authorized child sites.
+
+For permanently deleting trashed comments, use the preview first. A confirmed request then deletes only the comments shown as eligible by that preview.
+
---
## Related Resources
diff --git a/add-ons/administrative/woocommerce-shortcuts-extension.mdx b/add-ons/administrative/woocommerce-shortcuts-extension.mdx
index 0fa581d..78a9537 100644
--- a/add-ons/administrative/woocommerce-shortcuts-extension.mdx
+++ b/add-ons/administrative/woocommerce-shortcuts-extension.mdx
@@ -24,7 +24,7 @@ thirdPartyPlugin: WooCommerce
data-pricing-tier="free"
data-bundle="Essentials"
data-addon-type="extension"
- data-version="5.0.2"
+ data-version="5.1.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-woocommerce-shortcuts-extension/"
data-owned-by="Automattic Inc."
@@ -37,6 +37,12 @@ thirdPartyPlugin: WooCommerce
The [MainWP WooCommerce Shortcuts Extension](https://mainwp.com/add-on/woocommerce-shortcuts/) adds a widget to individual child site Overview pages, providing direct links to WooCommerce admin pages through MainWP's Jump to WP Admin flow.
+## Shortcut Status and Access
+
+Version 5.1.0 lets you use an authorized automation tool to check whether shortcut data for a selected site is current.
+
+You see only sites that Team Control allows you to access. Before a shortcut opens through Jump to WP Admin, the extension verifies that you can still access the target site.
+
## Where to Find the Widget
After installing the extension, the WooCommerce Shortcuts widget appears on individual child site Overview pages:
diff --git a/add-ons/agency/team-control-extension.mdx b/add-ons/agency/team-control-extension.mdx
index 72934c9..9fe2066 100644
--- a/add-ons/agency/team-control-extension.mdx
+++ b/add-ons/agency/team-control-extension.mdx
@@ -25,7 +25,7 @@ addonType: extension
data-pricing-tier="pro"
data-bundle="MainWP Pro"
data-addon-type="extension"
- data-version="5.1"
+ data-version="5.2.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-team-control-extension/"
data-owned-by="Jestart LLC"
@@ -48,6 +48,15 @@ addonType: extension
+## What's New in 5.2.0
+
+- You can use Team Control abilities to manage roles, members, permissions, and role notes.
+- You can grant protected authority and operation permissions only through authorized roles.
+- You preview and confirm role changes before they apply. If an operation is interrupted, the extension can recover without leaving a partial role change.
+- Existing installations receive an owner automatically, and you cannot grant yourself protected access.
+- When you remove a user, the extension verifies the multisite deletion result before changing role membership.
+- Repeating a role-note request does not create duplicates, and a complete role update replaces your prior permission set.
+

diff --git a/add-ons/agency/white-label-extension.mdx b/add-ons/agency/white-label-extension.mdx
index 73e7732..1ac402c 100644
--- a/add-ons/agency/white-label-extension.mdx
+++ b/add-ons/agency/white-label-extension.mdx
@@ -26,7 +26,7 @@ addonType: extension
data-pricing-tier="pro"
data-bundle="MainWP Pro"
data-addon-type="extension"
- data-version="5.0.3"
+ data-version="5.1.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-white-label-extension/"
data-owned-by="Jestart LLC"
@@ -66,6 +66,12 @@ White Label no longer includes child-site plugin and update hiding controls (for
| WordPress Options | Customize login images, favicons, dashboard widgets, footer text, and admin CSS |
| Support Form | Add a branded contact form to child site admin areas |
+## White Label Abilities
+
+Version 5.1.0 adds White Label abilities for authorized MainWP users. You can view global and site-specific configuration summaries, enable or disable an existing per-site override, and apply saved configuration to one child site.
+
+If White Label settings cannot be saved, the extension shows an error instead of confirming the update.
+
## White Label the MainWP Child Plugin
Rebrand how the MainWP Child plugin appears in the WordPress plugins list. The same **White Label** tab and **MainWP Child White Label Settings** section also includes the option to visually hide the plugin, so you can configure the branding fields, the hide option, or both at the same time.
diff --git a/add-ons/analytics/google-search-console-extension.mdx b/add-ons/analytics/google-search-console-extension.mdx
index b8fce49..29956b0 100644
--- a/add-ons/analytics/google-search-console-extension.mdx
+++ b/add-ons/analytics/google-search-console-extension.mdx
@@ -17,7 +17,7 @@ thirdPartyPlugin: Google Search Console
data-pricing-tier="pro"
data-bundle="MainWP Pro"
data-addon-type="integration"
- data-version="6.0"
+ data-version="6.2.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-google-search-console-extension/"
data-integrates-with="Google Search Console"
@@ -200,6 +200,12 @@ Go to **MainWP > Add-ons > Analytics > Google Search Console** and use these tab
- **Fetch Google Search Console data automatically**: Enable scheduling and choose how often MainWP should pull fresh data.
- **Refresh Data**: Click to fetch the latest stats immediately (Data is cached to reduce API calls; refreshing clears and updates the cache.)
+## MainWP Actions
+
+You can use MainWP actions to view Search Console connections and properties, manage site mappings and refresh settings, and request refreshes. When you refresh a connection, its property assignments stay in sync.
+
+Your scheduled refreshes do not overlap and report their outcome. Site selection and data views show only sites you are permitted to access.
+
## GSC data in Pro Reports
If you use **MainWP Pro Reports**, you can include Google Search Console data in your client reports. For the full list of available tokens, see the [Available Pro Reports Tokens](/add-ons/agency/available-pro-reports-tokens) article.
diff --git a/add-ons/analytics/mainwp-google-analytics-extension.mdx b/add-ons/analytics/mainwp-google-analytics-extension.mdx
index 169611a..c106345 100644
--- a/add-ons/analytics/mainwp-google-analytics-extension.mdx
+++ b/add-ons/analytics/mainwp-google-analytics-extension.mdx
@@ -6,7 +6,7 @@ addonType: "integration"
thirdPartyPlugin: "Google Analytics"
---
-
+
## What You'll Learn
@@ -162,6 +162,8 @@ The add-on automatically assigns properties to child sites based on URL matching
+Your website assignments remain in place when you refresh analytics data or reconnect a Google account.
+
## Google Analytics Visitor Data
After you connect your Google Analytics account and assign GA4 properties to child sites, you can view data on **MainWP > Add-ons > Google Analytics > Visitor Data**.
@@ -217,6 +219,8 @@ Click **Reset Now** in the notice to regenerate the site secret. After the reset
### Sign-in account needs verification/reconnection
+You can use the Manage Accounts page to identify sign-in accounts that need verification or reconnection.
+
- Go to **MainWP > Add-ons > Google Analytics > Manage Accounts**
- For disconnected Sign In accounts, click **Reconnect Account**
- Use **Refresh Data** after reconnecting
diff --git a/add-ons/analytics/matomo-extension.mdx b/add-ons/analytics/matomo-extension.mdx
index 64d8e6a..3c55622 100644
--- a/add-ons/analytics/matomo-extension.mdx
+++ b/add-ons/analytics/matomo-extension.mdx
@@ -17,7 +17,7 @@ thirdPartyPlugin: Matomo
data-pricing-tier="pro"
data-bundle="MainWP Pro"
data-addon-type="integration"
- data-version="5.0"
+ data-version="5.2.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-matomo-piwik-extension/"
data-integrates-with="Matomo"
@@ -40,6 +40,13 @@ thirdPartyPlugin: Matomo
 The [MainWP Matomo (formerly Piwik) Extension](/add-ons/analytics/matomo-extension) gives you valuable insights into your visitor's search and traffic patterns, your marketing campaigns, and much more, allowing you to optimize your strategy and the online experience of your users. Matomo is the leading open-source web analytics platform and can help you gather and analyze important information about your visitors. Track Key Performance Indicators such as visits, goal conversion rates, downloads, keywords, and much more. **Important Notes:** The Matomo Extension doesn't allow you to insert the Piwik tracking code on your child sites. To do that, you will need to add the code manually or use a 3rd party plugin. The Matomo Extension is compatible only with Matomo Dashboard, On-Premise or Cloud. **Matomo for WordPress plugin and Piwik Pro are not supported.** That means that the extension cannot ready data directly from the Matomo for WordPress plugin!
+## What's New in 5.2.0
+
+- You can manage Matomo through MainWP Abilities.
+- Your Matomo management requests are processed on a schedule.
+- Your existing Matomo connection settings and site data are migrated for the new management features.
+- When you delete a managed site, its Matomo data is removed.
+
## Use this Extension To Track:
- Visits
diff --git a/add-ons/backups/backwpup-extension.mdx b/add-ons/backups/backwpup-extension.mdx
index 7d9bdf1..e473f17 100644
--- a/add-ons/backups/backwpup-extension.mdx
+++ b/add-ons/backups/backwpup-extension.mdx
@@ -17,7 +17,7 @@ thirdPartyPlugin: BackWPup
data-pricing-tier="free"
data-bundle="Essentials"
data-addon-type="integration"
- data-version="5.1.1"
+ data-version="5.2.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-backwpup-extension/"
data-integrates-with="BackWPup"
@@ -42,6 +42,10 @@ thirdPartyPlugin: BackWPup
With the MainWP BackWPup Add-on, you can control the [BackWPup Plugin](https://wordpress.org/plugins/backwpup/) settings for all your child sites directly from your MainWP Dashboard. This includes giving you the ability to create your child site backups and even set Backup schedules directly from your MainWP Dashboard.
+## BackWPup Abilities
+
+You can use MainWP Abilities to manage BackWPup site status, jobs, backups, logs, diagnostics, and plugin visibility.
+
## Installing the BackWPup add-on
The MainWP BackWPup add-on needs to be installed **only on your MainWP Dashboard** site. You can [install it as any other MainWP add-on](https://mainwp.com/kb/manage-extensions/#install-add-ons).
@@ -144,6 +148,8 @@ The BackWPup Add-on allows you to manage the BackWPup plugin backups directly fr
After you click **Save Changes**, the add-on syncs this global job to child sites that do not use **Override General Settings**.
+If a global template becomes shared with another site, you cannot change its schedule for one site only.
+
### Create a Backup Job on a Single Site
@@ -292,6 +298,8 @@ In the top right of the page, select the desired child site from the dropdown, a
+Backup downloads use secure, temporary access links. If a protected FOLDER backup is unavailable, the same one-use access remains available for another attempt.
+
### Delete Backup Files
diff --git a/add-ons/client/cost-tracker-assistant-extension.mdx b/add-ons/client/cost-tracker-assistant-extension.mdx
index ed9b957..6ad46f2 100644
--- a/add-ons/client/cost-tracker-assistant-extension.mdx
+++ b/add-ons/client/cost-tracker-assistant-extension.mdx
@@ -24,7 +24,7 @@ addonType: extension
data-pricing-tier="pro"
data-bundle="MainWP Pro"
data-addon-type="extension"
- data-version="5.0.8"
+ data-version="5.1.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-cost-tracker-assistant-extension/"
data-owned-by="Jestart LLC"
@@ -79,6 +79,13 @@ When installing plugins or themes via ZIP upload, Cost Tracker Assistant streaml
This eliminates the need to navigate to Cost Tracker separately after each purchase.
+## What's New in 5.1.0
+
+- You can use automation to manage renewal notification settings and Cost Tracker site memberships.
+- You see when the mailer accepted an alert but its reminder state could not be recorded.
+- Your invalid or unauthorized Cost Tracker edits and archive uploads are rejected before changes are made.
+- The extension prevents you from creating duplicate plugin and theme Cost Tracker entries.
+
## Requirements
- MainWP Dashboard with the Cost Tracker feature enabled
diff --git a/add-ons/client/mainwp-time-tracker-extension.mdx b/add-ons/client/mainwp-time-tracker-extension.mdx
index 7090b47..cb40db1 100644
--- a/add-ons/client/mainwp-time-tracker-extension.mdx
+++ b/add-ons/client/mainwp-time-tracker-extension.mdx
@@ -13,7 +13,7 @@ addonType: extension
data-pricing-tier="pro"
data-bundle="MainWP Pro"
data-addon-type="extension"
- data-version="5.1.1"
+ data-version="5.2.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-time-tracker-extension/"
data-owned-by="Jestart LLC"
@@ -115,6 +115,14 @@ Navigate to the Time Tracker **Logs** page, locate the running task, and from th
Navigate to the Time Tracker **Logs** page, locate the running task, and from the ellipsis menu, select **Delete**, then confirm the deletion.
+## Time Tracker Abilities
+
+Version 5.2.0 lets you use 12 Time Tracker abilities with authorized automation tools. You can manage buckets, tasks, and timers, and read reports. The same request ID is returned across responses.
+
+Each operation confirms that you can access the exact bucket, task, timer, client, or site involved. Your time entries, timer state, and billing totals update together. A running timer stays tied to its current generation, so pausing or recovering it gives you the same reconciled state.
+
+Task counters on Sites and Clients reflect the tasks for the respective site or client. Invalid flags or unauthorized attempts return specific errors.
+
## Payment Statuses
1. **Draft** - The bill has been created but not yet finalized or sent to the recipient. This status is used for bills that are still being worked on.
diff --git a/add-ons/development/clone-extension.mdx b/add-ons/development/clone-extension.mdx
index 469ac7f..6cca5e7 100644
--- a/add-ons/development/clone-extension.mdx
+++ b/add-ons/development/clone-extension.mdx
@@ -18,7 +18,7 @@ addonType: extension
data-pricing-tier="pro"
data-bundle="MainWP Pro"
data-addon-type="extension"
- data-version="5.0.1"
+ data-version="5.1.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-clone-extension/"
data-owned-by="Jestart LLC"
@@ -45,6 +45,12 @@ The [MainWP Clone Extension](https://mainwp.com/add-on/clone/) provides the abil
The Clone extension requires a preinstalled WordPress site connected to your MainWP Dashboard **(Destination Site)**. Once you install a fresh WordPress website and connect it to your MainWP Dashboard, you will be able to use the clone feature and clone your template site **(Source Site)**.
+## Manage Clone Policy with WordPress Abilities
+
+WordPress Abilities can view and manage the Clone policy saved in your MainWP Dashboard. You can enable or disable the Clone feature and allow or disallow individual destination sites.
+
+The settings are saved without starting a clone or syncing a child site. If another change conflicts with your save, MainWP reports that the setting could not be saved.
+
The Extension allows you to clone websites in two ways:
1. Quick Clone
diff --git a/add-ons/development/code-snippets-extension.mdx b/add-ons/development/code-snippets-extension.mdx
index 12fe759..f629050 100644
--- a/add-ons/development/code-snippets-extension.mdx
+++ b/add-ons/development/code-snippets-extension.mdx
@@ -16,7 +16,7 @@ addonType: extension
data-pricing-tier="pro"
data-bundle="MainWP Pro"
data-addon-type="extension"
- data-version="5.1"
+ data-version="5.2"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-code-snippets-extension/"
data-owned-by="Jestart LLC"
@@ -260,6 +260,12 @@ When you click **Run Snippet**, the Console opens and shows the current process
The Console also shows progress counts, site-level status icons, returned output for **Return Info** snippets, and a **Stop Process** button for stopping queued or in-progress processing.
+## WordPress Abilities
+
+Version 5.2 lets you use authorized integrations with WordPress Abilities to manage snippets, validate PHP without executing it, run snippets, apply persistent snippets, remove persistent snippets, and delete Dashboard records.
+
+You can access only snippets and child sites you are authorized to access. Execution results display as plain text.
+
## Useful Code Snippets
MainWP is not responsible for the code that you run on your sites. Use this tool with extreme care and at your own risk. It is recommended that you run any code on a test site before releasing it on live sites. In case you damage your site by using a bad code snippet, read [Remove a Code Snippet From a Broken Site](#remove-a-code-snippet-from-a-broken-site) to see how to fix it.
diff --git a/add-ons/development/mainwp-and-atarim-integration.mdx b/add-ons/development/mainwp-and-atarim-integration.mdx
index b447dc1..b4d1f6d 100644
--- a/add-ons/development/mainwp-and-atarim-integration.mdx
+++ b/add-ons/development/mainwp-and-atarim-integration.mdx
@@ -27,7 +27,7 @@ thirdPartyPlugin: Atarim
data-pricing-tier="pro"
data-bundle="MainWP Pro"
data-addon-type="integration"
- data-version="5.0.1"
+ data-version="5.2.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-atarim-extension/"
data-integrates-with="Atarim"
@@ -70,6 +70,8 @@ After connecting with Atarim, MainWP will gain the following features:
- **Pro Reports data note**: Pro Reports Extension version 4.0.11 or newer is required for Atarim data.
- Atarim Data can be included in the Report from the **Report Data** section 
- Atarim data can also be included by using two tokens: `[atarim.all.tasks]` displays all tasks for a site within the selected date range, and `[atarim.billable.tasks]` displays all billable tasks for a site within the selected date range.
+- **MainWP Abilities (version 5.2.0)**
+ - With MainWP abilities, you can read Atarim site, task, and time-entry data and refresh task data.
## Connect MainWP to Atarim Dashboard
diff --git a/add-ons/development/mainwp-custom-dashboard-extension.mdx b/add-ons/development/mainwp-custom-dashboard-extension.mdx
index b0a06c1..463693d 100644
--- a/add-ons/development/mainwp-custom-dashboard-extension.mdx
+++ b/add-ons/development/mainwp-custom-dashboard-extension.mdx
@@ -13,6 +13,7 @@ addonType: extension
- Where custom code is stored and executed
- Using the built-in code editor (CodeMirror 6) with autocompletion, code folding, and the One Dark theme
- Validating PHP snippets before saving with the built-in syntax check
+- Avoiding overwritten drafts when another editor changes a snippet
- Handling PHP errors safely
- Accessing example code snippets
@@ -26,7 +27,7 @@ addonType: extension
data-pricing-tier="free"
data-bundle="Essentials"
data-addon-type="extension"
- data-version="5.1"
+ data-version="5.2.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-custom-dashboard-extension/"
data-owned-by="Jestart LLC"
@@ -86,6 +87,12 @@ The editor is powered by CodeMirror 6 and ships with productivity features enabl
Use the language tab at the top of the page to switch between the PHP, CSS, and JS editors. Each language is saved independently.
+## Saving Snippets
+
+When you save a snippet, the extension checks whether it changed after you opened the editor. If another editor saved a change first, your draft remains in the editor and the extension asks you to reload before saving again. Copy your draft if needed, reload the page, then review and save it.
+
+MainWP abilities can view snippet status, validate PHP, and preview or apply changes to PHP, CSS, and JavaScript snippets. Applying a change requires explicit confirmation.
+
## Writing PHP Snippets
PHP snippets are saved as **tagless** PHP — write your code without `` tags. The extension validates this on save and rejects snippets that contain PHP tags.
@@ -108,7 +115,7 @@ add_action( 'admin_footer', function () {
### Pre-save syntax validation
-Before a PHP snippet is saved, the extension runs a syntax check on the code. If the snippet contains a parse error, the save is rejected and the editor displays the error message so you can fix it before it ever runs.
+Before a PHP snippet is saved, the extension runs a syntax check on the code. If the snippet is malformed, the save is rejected without running it.
This catches the most common cause of a broken dashboard — a typo in a snippet — without you having to reload the page to find out.
diff --git a/add-ons/monitoring/advanced-uptime-monitor-extension.mdx b/add-ons/monitoring/advanced-uptime-monitor-extension.mdx
index 71e97d6..1f03bea 100644
--- a/add-ons/monitoring/advanced-uptime-monitor-extension.mdx
+++ b/add-ons/monitoring/advanced-uptime-monitor-extension.mdx
@@ -25,7 +25,7 @@ addonType: extension
data-pricing-tier="free"
data-bundle="Essentials"
data-addon-type="integration"
- data-version="5.3.5"
+ data-version="5.4.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-advanced-uptime-monitor-extension/"
data-owned-by="Jestart LLC"
@@ -316,6 +316,12 @@ Notes on how this works:
No additional configuration is required. Assign **Allowed Child Sites** to each role in Team Control as described in the [Define Role Permissions](/add-ons/agency/team-control-extension#define-role-permissions) section, and the uptime monitor list will honor those permissions automatically.
+## Abilities API Support
+
+With version 5.4.0, you can use 7 uptime monitoring abilities in the WordPress Abilities API to list monitors and events, read live uptime percentages, create and pause monitors, delete monitors, and synchronize the provider inventory. The same extension access and Team Control site restrictions described above apply to every call.
+
+See [Uptime Monitor Abilities](/api-reference/abilities-api/uptime-monitors) for the parameters, responses, and error codes.
+
---
## Related Resources
diff --git a/add-ons/monitoring/mainwp-domain-monitor-extension.mdx b/add-ons/monitoring/mainwp-domain-monitor-extension.mdx
index 386f49b..b368880 100644
--- a/add-ons/monitoring/mainwp-domain-monitor-extension.mdx
+++ b/add-ons/monitoring/mainwp-domain-monitor-extension.mdx
@@ -14,7 +14,7 @@ addonType: "extension"
---
-
+
@@ -168,6 +168,10 @@ wp mainwp-domain-monitor results --all
MainWP REST API calls, including Domain Monitor endpoints, full documentation, and examples, are available in the [MainWP Postman workspace](https://www.postman.com/mainwp/workspace/mainwp/overview). Refer to our [REST API documentation](/api-reference/rest-api/overview) for more details on enabling REST API and managing API keys.
+## Automation
+
+With version 5.3.0, you can use automation to view saved domain expiry details, manage monitoring settings, update manually entered domain information, and request domain checks. A failed settings or domain-information save shows an error instead of appearing to succeed. Domain lookup replies that do not match the requested domain are not saved, and notification emails safely display site and domain details.
+
## Available Reports Tokens
- `[domain.monitor.domain.name]` - Displays the domain name.
@@ -185,4 +189,4 @@ MainWP REST API calls, including Domain Monitor endpoints, full documentation, a
- [Monitoring Add-ons](/add-ons/monitoring) - Browse all monitoring tools
- [SSL Monitor](/add-ons/monitoring/mainwp-ssl-monitor-extension) - Monitor SSL certificates
-- [Pro Reports Extension](/add-ons/agency/pro-reports-extension-overview) - Include domain data in reports
\ No newline at end of file
+- [Pro Reports Extension](/add-ons/agency/pro-reports-extension-overview) - Include domain data in reports
diff --git a/add-ons/monitoring/mainwp-lighthouse-extension.mdx b/add-ons/monitoring/mainwp-lighthouse-extension.mdx
index 12f48f1..0f8c3e6 100644
--- a/add-ons/monitoring/mainwp-lighthouse-extension.mdx
+++ b/add-ons/monitoring/mainwp-lighthouse-extension.mdx
@@ -26,7 +26,7 @@ addonType: extension
data-pricing-tier="pro"
data-bundle="MainWP Pro"
data-addon-type="extension"
- data-version="5.2"
+ data-version="5.4.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-lighthouse-extension/"
data-owned-by="Jestart LLC"
@@ -185,6 +185,12 @@ For legacy REST API v1 requests, use `POST` for `/wp-json/mainwp/v1/lighthouse/a
Please refer to our [REST API documentation](/api-reference/rest-api/overview) for more details on enabling REST API and managing API keys.
+## WordPress Abilities
+
+You can use WordPress Abilities to view Lighthouse observations, audit history, and schedule state for sites you can access. You can request or cancel an audit, and manage Lighthouse policies globally or for an individual site.
+
+Audit operations report whether they are queued, running, completed, or cancelled.
+
## Get the Google PageSpeed Insights API Key
diff --git a/add-ons/performance/cache-control-extension.mdx b/add-ons/performance/cache-control-extension.mdx
index ed98ac8..231067c 100644
--- a/add-ons/performance/cache-control-extension.mdx
+++ b/add-ons/performance/cache-control-extension.mdx
@@ -25,7 +25,7 @@ addonType: "integration"
data-pricing-tier="pro"
data-bundle="MainWP Pro"
data-addon-type="integration"
- data-version="5.1"
+ data-version="5.3.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-cache-control-extension/"
data-integrates-with="Cloudflare and supported cache plugins"
@@ -98,6 +98,8 @@ Use the global settings when most of your MainWP Child sites should use the same
When **Purge Cloudflare cache** is enabled, Cache Control verifies the Cloudflare credentials after you click **Save Settings**. If Cloudflare returns an error, the settings are saved, but MainWP Dashboard shows a warning with the Cloudflare API error so you can correct the credentials before syncing.
+
+Cloudflare credentials saved by earlier versions migrate safely to encrypted storage.
## Configure a Single Site
@@ -141,6 +143,8 @@ Go to **MainWP > Sites > Manage Sites**, select the sites, choose **Purge Cache
If a selected site does not have a supported cache plugin detected and does not have Cloudflare purging enabled, MainWP Dashboard shows a warning for that site instead of reporting a successful purge.
+Bulk purges validate every selected site and report the result for each site.
+
### From Widgets
Cache Control widgets can appear on the Dashboard Operations page and individual site dashboard pages. Click **Clear Cache** in the widget to purge cache for the relevant site or site set. If you do not see the widget, enable it from the page settings for that screen.
@@ -151,6 +155,8 @@ Cache Control widgets can appear on the Dashboard Operations page and individual
The **MainWP > Sites > Manage Sites** table can show Cache Control columns such as **Last Purged Cache** and **Cache Solution**. These columns help you confirm when cache was last purged and which supported cache plugin MainWP Child detected on each site.
+The MainWP Abilities API also exposes cache status and purge information for connected sites.
+
## View Logs
Go to **MainWP > Add-ons > Cache Control > Logs** to review the Cache Control log table.
diff --git a/add-ons/performance/maintenance-extension.mdx b/add-ons/performance/maintenance-extension.mdx
index f15a095..7731a08 100644
--- a/add-ons/performance/maintenance-extension.mdx
+++ b/add-ons/performance/maintenance-extension.mdx
@@ -32,7 +32,7 @@ addonType: extension
data-pricing-tier="pro"
data-bundle="MainWP Pro"
data-addon-type="extension"
- data-version="5.2"
+ data-version="5.3.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-maintenance-extension/"
data-video-url="https://www.youtube.com/watch?v=NEf40nFQ3v4"
@@ -117,6 +117,16 @@ Selecting **All Transients** shows an additional warning because some plugins ma
MainWP displays a progress window while the selected tasks run on each child site.
+## Use Maintenance Abilities
+
+Version 5.3.0 adds Maintenance abilities for authorized automation tools. They can run cleanup tasks, manage schedules, review run progress, and cancel queued work.
+
+Maintenance checks each cleanup action and revision retention value before it accepts a request. Scheduled runs recover queued work when a scheduled event is missed. You cannot update or delete a schedule while its related maintenance run is active.
+
+
+Preview every destructive request before approval. For schedule operations, send `dry_run: true`. For an immediate site cleanup, call `mainwp/preview-site-maintenance-v1` and use its preview token. After the user approves the exact effect, send the destructive request with `confirm: true`. This applies to immediate cleanup runs and to schedule changes that can start cleanup later. Keep the recent database backup from the prerequisites available for recovery.
+
+
## Schedule Maintenance

diff --git a/add-ons/performance/rocket-extension.mdx b/add-ons/performance/rocket-extension.mdx
index 43c18e8..3265180 100644
--- a/add-ons/performance/rocket-extension.mdx
+++ b/add-ons/performance/rocket-extension.mdx
@@ -27,7 +27,7 @@ thirdPartyPlugin: WP Rocket
data-pricing-tier="pro"
data-bundle="MainWP Pro"
data-addon-type="integration"
- data-version="5.1.7"
+ data-version="5.2.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-rocket-extension/"
data-integrates-with="WP Rocket"
@@ -54,6 +54,13 @@ With the [MainWP Rocket Extension](https://mainwp.com/add-on/rocket/), you can c
and much more...
+## What's New in 5.2.0
+
+- With WP Rocket abilities, you can read settings and site status from connected child sites, then run cache and settings actions.
+- You receive a preview before you confirm cache or settings changes.
+- Each action keeps a durable receipt and lease while it runs, so you can follow its pending, completed, or failed status.
+- The integration accepts supported child-site response envelopes and verifies the required capability before you run an action.
+
## What makes WP Rocket better than the other caching plugins?
WP Rocket integrates performance features such as deferred JavaScript loading, delayed JavaScript execution, LazyLoad, CSS delivery optimization, minification, CDN configuration, and cache preloading. While being complete, WP Rocket is also very simple to configure, even for beginners. WP Rocket also has its own self-hosted crawler bot that will visit your site and generate cached files so that when human visitors come to your website, they immediately get the fast, cached version of the page. If you have issues with the WP Rocket plugin, help documentation can be found in the [WP Rocket documentation](https://docs.wp-rocket.me/).
diff --git a/add-ons/posts-pages/article-uploader-extension.mdx b/add-ons/posts-pages/article-uploader-extension.mdx
index 36b13d0..daeefd2 100644
--- a/add-ons/posts-pages/article-uploader-extension.mdx
+++ b/add-ons/posts-pages/article-uploader-extension.mdx
@@ -25,7 +25,7 @@ addonType: extension
data-pricing-tier="pro"
data-bundle="MainWP Pro"
data-addon-type="extension"
- data-version="5.0.5"
+ data-version="5.1.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-article-uploader-extension/"
data-owned-by="Jestart LLC"
@@ -93,6 +93,13 @@ After a successful upload,  extension allows you to manage custom post types on your child sites. To manage custom post types on your child sites, you need to have the matching Custom Post Type (CPT) on your MainWP Dashboard too. Once you register the same CPT on your MainWP Dashboard site, this extension will add the [Select sites metabox](/getting-started/mainwp-user-interface) to the Add New Item interface, and it will allow you to control where you want to publish this CPT content. Support for the CPT is also added to the Manage Posts screen, so you can search and manage CPT posts.
+## What's New in 5.1.0
+
+- With WordPress Abilities API support, you can use authorized automation tools to manage custom post type content across child sites.
+- When you publish, the extension checks site access and validates request data before sending content to child sites.
+- If a child site response cannot be confirmed, the extension avoids saving duplicate or uncertain post connections.
+
## What is Matching CPT?
There are three required arguments for each CPT:
diff --git a/add-ons/posts-pages/url-extractor-extension.mdx b/add-ons/posts-pages/url-extractor-extension.mdx
index 53ace33..c30bfa2 100644
--- a/add-ons/posts-pages/url-extractor-extension.mdx
+++ b/add-ons/posts-pages/url-extractor-extension.mdx
@@ -26,7 +26,7 @@ addonType: extension
data-pricing-tier="pro"
data-bundle="MainWP Pro"
data-addon-type="extension"
- data-version="5.0.1"
+ data-version="5.1.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-url-extractor-extension/"
data-owned-by="Jestart LLC"
@@ -55,6 +55,15 @@ URL Extractor allows you to extract URLs using custom tokens (Title, Post URL, D
You can easily customize your output. Combining the provided tokens and custom characters, create any output structure you need. This is often helpful for both client reports and indexing software.
+## What's New in 5.1.0
+
+- With URL Extractor abilities, you can start and track extraction work, then export the results as text or CSV.
+- Extraction runs retain their results while exports are prepared. Downloads use one-use links.
+- Stored records, export artifacts, and retries are kept within defined limits.
+- Saved templates are migrated with guidance when a template needs attention, and existing preview workflows continue to work.
+- Output separators and template values are validated before an extraction runs.
+- Clearer errors identify when a Child site is unavailable during extraction.
+
## How to use URL Extractor

diff --git a/add-ons/security/dashboard-lock-extension.mdx b/add-ons/security/dashboard-lock-extension.mdx
index 95d5d6c..cb6c631 100644
--- a/add-ons/security/dashboard-lock-extension.mdx
+++ b/add-ons/security/dashboard-lock-extension.mdx
@@ -25,7 +25,7 @@ addonType: extension
data-pricing-tier="free"
data-bundle="Essentials"
data-addon-type="extension"
- data-version="5.1"
+ data-version="5.2.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-dashboard-lock-extension/"
data-owned-by="Jestart LLC"
@@ -46,6 +46,14 @@ addonType: extension
The [MainWP Dashboard Lock Extension](https://mainwp.com/add-on/dashboard-lock/) allows you to limit access to your Admin area and even redirect Non-WP-Admin pages to a different site making your MainWP Dashboard virtually invisible. All of these changes can be made without you having to ever edit the .htaccess file yourself.
+## Dashboard Abilities
+
+Dashboard Lock 5.2.0 includes abilities that let you view the stored Dashboard Lock configuration and the application state of its extension-owned files. You can manage frontend redirects, IP restrictions, and HTTP Basic Authentication, check whether the Dashboard is ready to apply changes, and remove access locks for recovery.
+
+Calls must authenticate through the WordPress REST API. Reading the general status requires access to the Dashboard Lock extension. Reading stored configuration or changing a lock requires a WordPress user with `manage_options` and extension access. A MainWP API key must also grant the required REST permissions.
+
+The redirect, IP restriction, HTTP Basic Authentication, and lock-removal abilities are destructive. They require the matching confirmation field set to literal `true`: `confirm_redirect_risk`, `confirm_lockout_risk`, or `confirm_recovery_action`.
+
## Frontend Redirect Rules
Make your dashboard front page inaccessible to everyone but you. Easily set a redirect URL, and all hits on Non-WP-Admin pages will be redirected to it. This will make your MainWP Dashboard site virtually invisible. Redirection is the process of forwarding one URL to a different URL. There are three main kinds of redirects: 301, 302, and meta refresh. It is a way to send both users and search engines to a different URL from the one they originally requested.
diff --git a/add-ons/security/regression-testing-extension.mdx b/add-ons/security/regression-testing-extension.mdx
index 9d84a86..5067374 100644
--- a/add-ons/security/regression-testing-extension.mdx
+++ b/add-ons/security/regression-testing-extension.mdx
@@ -14,7 +14,7 @@ addonType: "extension"
---
-
+
**Extension Add-on** - This add-on provides standalone functionality within MainWP Dashboard. No third-party plugins required.
@@ -161,6 +161,14 @@ If you need to check a site immediately, you can manually trigger a scan from th
You can also initiate a scan from an individual **Child Site Overview Page** under the Regression Testing tab. Manual scans are useful when performing maintenance or troubleshooting specific issues.
+## Regression Testing Abilities
+
+Version 5.3.0 adds MainWP Abilities for authorized regression-testing workflows. Authorized automation tools can run scans, manage saved schedules, review paginated results and operation progress, and cancel queued work.
+
+The extension records authorized requests so retrying a request does not create duplicate work. Scans and schedules use each site's configured origin. Queued operations recover after an extension migration, while maintenance clears orphaned jobs.
+
+Compare-and-swap checks reject stale changes to saved settings and results. Regression Testing endpoints reject requests without the required authorization.
+
## Widgets
**MainWP Overview Page Widget**
diff --git a/add-ons/security/sucuri-extension.mdx b/add-ons/security/sucuri-extension.mdx
index aa98c66..071a994 100644
--- a/add-ons/security/sucuri-extension.mdx
+++ b/add-ons/security/sucuri-extension.mdx
@@ -29,7 +29,7 @@ thirdPartyPlugin: Sucuri
data-pricing-tier="free"
data-bundle="Essentials"
data-addon-type="integration"
- data-version="5.0.3"
+ data-version="5.1.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-sucuri-extension/"
data-integrates-with="Sucuri"
@@ -70,6 +70,14 @@ Locate the site that you want to check and click the **Scan Now** button
+## Sucuri Abilities
+
+Version 5.1.0 adds 12 Sucuri abilities for authorized automation tools. They can request scans, view operation status and reports, manage report history and scan reminders, and cancel queued work.
+
+Each scan is recorded as a durable job, so a repeated authorized request does not start a duplicate scan. Scan and report access is checked for each site. Reports for unavailable or unknown sites stay unavailable instead of exposing prior data.
+
+Schema and migration recovery repairs interrupted data setup while retaining legacy scan reports. When you add a site, the extension sets up its scan and reminder information reliably.
+
## Previous Child Site Reports and Settings
diff --git a/add-ons/updates/mainwp-database-updater-extension.mdx b/add-ons/updates/mainwp-database-updater-extension.mdx
index 75e9dc4..0cf9874 100644
--- a/add-ons/updates/mainwp-database-updater-extension.mdx
+++ b/add-ons/updates/mainwp-database-updater-extension.mdx
@@ -25,7 +25,7 @@ addonType: extension
data-pricing-tier="pro"
data-bundle="MainWP Pro"
data-addon-type="extension"
- data-version="5.1.1"
+ data-version="5.2.0"
data-developer="MainWP"
data-changelog-url="https://mainwp.com/changelog/mainwp-database-updater-extension/"
data-owned-by="Jestart LLC"
@@ -46,6 +46,16 @@ addonType: extension
The Database Updater Extension detects available database updates for WooCommerce, Elementor, and Elementor Pro. This means that you no longer need to access the WordPress admin area of a child site to start these database updates.
+## Use with WordPress Abilities
+
+For sites you are authorized to manage, WordPress Abilities can view available database update actions, preview selected actions, and confirm a preview to send the updates to the child site.
+
+Each request checks the site's current state before it sends work. Pending database updates remain visible until a later sync confirms that they are complete.
+
+
+Create or verify a current backup for the child site before you confirm a database update. The extension cannot verify backup state, so the caller must make the backup-risk decision explicitly. If an update fails, restore or roll back from that backup according to your recovery procedure, then sync the site before deciding whether to retry.
+
+
## Install the Database Updater Extension
diff --git a/api-reference/abilities-api/overview.mdx b/api-reference/abilities-api/overview.mdx
index e357abd..ab3d617 100644
--- a/api-reference/abilities-api/overview.mdx
+++ b/api-reference/abilities-api/overview.mdx
@@ -2,12 +2,12 @@
title: Abilities API Overview
sidebarTitle: "Abilities API Overview"
description: >-
- MainWP registers 62 abilities into WordPress Core's Abilities API framework for programmatic site management via AI agents and automation tools.
+ MainWP Dashboard registers 62 abilities into WordPress Core's Abilities API framework. Advanced Uptime Monitor adds 7, and other installed extensions can add more.
---
The WordPress Abilities API is a **WordPress Core feature** (available in WordPress 6.9+) that provides a standardized registry for capabilities across the WordPress ecosystem. Any plugin can register discrete actions ("abilities") with defined input/output schemas, making functionality discoverable by external systems.
-MainWP Dashboard registers 62 abilities into this framework across five categories. This integration enables AI agents, automation platforms, and external tools to discover what MainWP can do and execute those capabilities through a consistent interface.
+MainWP Dashboard registers 62 abilities into this framework across five categories. With Advanced Uptime Monitor active, those two products expose 69 abilities across six categories. Other MainWP extensions can register additional categories, so 69 is not the extension-inclusive total. This integration enables AI agents, automation platforms, and external tools to discover what MainWP can do and execute those capabilities through a consistent interface.
## What You'll Learn
@@ -137,6 +137,12 @@ MainWP registers these categories:
| `mainwp-tags` | 7 | Tag/group management |
| `mainwp-batch` | 1 | Batch operation monitoring |
+Extensions register categories of their own. For example, this category appears once Advanced Uptime Monitor is installed:
+
+| Category | Abilities | Description |
+|----------|-----------|-------------|
+| `mainwp-advanced-uptime-monitor` | 7 | Uptime monitors, from the Advanced Uptime Monitor extension |
+
30 abilities for site management
@@ -150,6 +156,9 @@ MainWP registers these categories:
7 abilities for tag management
+
+ 7 abilities from the Advanced Uptime Monitor extension
+
---
diff --git a/api-reference/abilities-api/uptime-monitors.mdx b/api-reference/abilities-api/uptime-monitors.mdx
new file mode 100644
index 0000000..40377b1
--- /dev/null
+++ b/api-reference/abilities-api/uptime-monitors.mdx
@@ -0,0 +1,423 @@
+---
+title: Uptime Monitor Abilities
+sidebarTitle: "Uptime Monitor Abilities"
+description: >-
+ 7 abilities for reading and managing uptime monitors through the Advanced Uptime Monitor extension.
+---
+
+The Advanced Uptime Monitor extension registers 7 abilities into the WordPress Abilities API framework under the `mainwp-advanced-uptime-monitor` category. They cover the four providers the extension supports: UptimeRobot, Site24x7, NodePing, and Better Uptime/Better Stack.
+
+These abilities only appear when the Advanced Uptime Monitor extension is installed and activated on the Dashboard, and calls against a provider only succeed once that provider's credentials are saved in the extension settings. The abilities index paginates at 50 entries per page, so add `?category=mainwp-advanced-uptime-monitor` when discovering them:
+
+```bash
+curl -u 'admin:xxxx' \
+ 'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities?category=mainwp-advanced-uptime-monitor'
+```
+
+## What You'll Learn
+
+- Reading cached monitor mappings and events for a site
+- Reading live uptime percentages from the provider
+- Creating monitors, pausing them, and deleting them
+- Running a paginated provider synchronization
+
+---
+
+## Service Values
+
+Every ability takes a `service` parameter naming the provider to talk to:
+
+| Value | Provider |
+|-------|----------|
+| `uptimerobot` | UptimeRobot |
+| `site24x7` | Site24x7 |
+| `nodeping` | NodePing |
+| `betteruptime` | Better Uptime / Better Stack |
+
+Monitors are addressed by `local_monitor_id`, the Dashboard's own mapping row ID. Provider-side monitor IDs are never accepted as input and never returned.
+
+---
+
+## Access Control
+
+Six of the seven abilities are site-scoped: the caller needs MainWP extension access to Advanced Uptime Monitor and access to the specific site in `site_id`. [Team Control](/add-ons/agency/team-control-extension) role restrictions apply here the same way they do in the Dashboard UI, including for requests authenticated with an API key.
+
+`mainwp/sync-uptime-monitors-v1` works across the whole provider inventory rather than one site, so it requires `manage_options` plus unrestricted access to all sites. A role limited to a subset of child sites cannot run it.
+
+---
+
+## mainwp/list-uptime-monitors-v1
+
+List the Dashboard's cached monitor mappings for one site and provider. No provider request is made.
+
+**Method:** GET (readonly)
+
+```bash
+curl -u 'admin:xxxx' \
+ 'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/list-uptime-monitors-v1/run?input[site_id]=1&input[service]=uptimerobot'
+```
+
+**Input Parameters:**
+
+| Name | Type | Required | Default | Description |
+|------|------|----------|---------|-------------|
+| `site_id` | integer | Yes | — | MainWP Dashboard site ID |
+| `service` | string | Yes | — | One of `uptimerobot`, `site24x7`, `nodeping`, `betteruptime` |
+| `page` | integer | No | 1 | Page number (max 100000) |
+| `per_page` | integer | No | 50 | Rows per page (max 100) |
+
+**Response:**
+
+```json
+{
+ "source": "dashboard_cached_mapping",
+ "site_id": 1,
+ "service": "uptimerobot",
+ "monitors": [
+ {
+ "local_monitor_id": 12,
+ "site_id": 1,
+ "service": "uptimerobot",
+ "name": "Example Site",
+ "address": "https://example.com",
+ "administrative_state": "active",
+ "observed_status": "up",
+ "last_local_update": 1739000000
+ }
+ ],
+ "pagination": {
+ "page": 1,
+ "per_page": 50,
+ "returned": 1,
+ "total": 1,
+ "has_more": false
+ }
+}
+```
+
+`administrative_state` is `active`, `paused`, or `unknown`. `observed_status` is `up`, `down`, `degraded`, `pending`, or `unknown`.
+
+---
+
+## mainwp/list-uptime-monitor-events-v1
+
+List cached events for one monitor. Values are redacted down to timing and status; provider event IDs and payloads are not exposed.
+
+**Method:** GET (readonly)
+
+```bash
+curl -u 'admin:xxxx' \
+ 'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/list-uptime-monitor-events-v1/run?input[site_id]=1&input[service]=uptimerobot&input[local_monitor_id]=12'
+```
+
+**Input Parameters:**
+
+| Name | Type | Required | Default | Description |
+|------|------|----------|---------|-------------|
+| `site_id` | integer | Yes | — | MainWP Dashboard site ID |
+| `service` | string | Yes | — | Provider slug |
+| `local_monitor_id` | integer | Yes | — | Dashboard-local monitor mapping ID |
+| `page` | integer | No | 1 | Page number (max 100000) |
+| `per_page` | integer | No | 50 | Rows per page (max 100) |
+
+**Response:**
+
+```json
+{
+ "source": "dashboard_cached_event",
+ "site_id": 1,
+ "service": "uptimerobot",
+ "local_monitor_id": 12,
+ "events": [
+ {
+ "event_id": 340,
+ "occurred_at": 1738990000,
+ "status": "down",
+ "duration_seconds": 420,
+ "response_time_ms": null
+ }
+ ],
+ "pagination": {
+ "page": 1,
+ "per_page": 50,
+ "returned": 1,
+ "total": 1,
+ "has_more": false
+ }
+}
+```
+
+`status` is one of `up`, `down`, `degraded`, `paused`, `resolved`, `open`, `unknown`. `duration_seconds` and `response_time_ms` are `null` when the provider did not report them.
+
+---
+
+## mainwp/get-site-uptime-summary-v1
+
+Read live uptime percentages from the provider for one site. This call reaches the provider but does not import events or write to the Dashboard cache.
+
+**Method:** GET (readonly)
+
+```bash
+curl -u 'admin:xxxx' \
+ 'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/get-site-uptime-summary-v1/run?input[site_id]=1&input[service]=uptimerobot'
+```
+
+**Input Parameters:**
+
+| Name | Type | Required | Default | Description |
+|------|------|----------|---------|-------------|
+| `site_id` | integer | Yes | — | MainWP Dashboard site ID |
+| `service` | string | Yes | — | Provider slug |
+
+**Response:**
+
+```json
+{
+ "source": "live_provider",
+ "site_id": 1,
+ "service": "uptimerobot",
+ "local_monitor_id": 12,
+ "measured_at": 1739001200,
+ "ratios": {
+ "days_7": 100,
+ "days_15": 99.98,
+ "days_30": 99.95,
+ "days_45": 99.93,
+ "days_60": 99.9,
+ "all_time": 99.87
+ },
+ "remote_confirmed": true
+}
+```
+
+Any ratio the provider does not report comes back as `null`. Site24x7 and Better Stack cap `all_time` at the last 365 days rather than the full monitor history.
+
+---
+
+## mainwp/create-site-uptime-monitor-v1
+
+Create one monitor for a site using the provider's default check settings, then store the confirmed mapping on the Dashboard.
+
+**Method:** POST
+
+```bash
+curl -X POST -u 'admin:xxxx' \
+ -H 'Content-Type: application/json' \
+ -d '{"input":{"site_id":1,"service":"uptimerobot"}}' \
+ 'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/create-site-uptime-monitor-v1/run'
+```
+
+To undo the creation, use `mainwp/delete-uptime-monitor-v1` with the returned `local_monitor_id` after confirming the exact monitor with the user.
+
+**Input Parameters:**
+
+| Name | Type | Required | Default | Description |
+|------|------|----------|---------|-------------|
+| `site_id` | integer | Yes | — | MainWP Dashboard site ID |
+| `service` | string | Yes | — | Provider slug |
+
+There are no check-interval, alert-contact, or monitor-type parameters. The monitor is created with provider defaults against the site's own URL. Adjust it afterward in the extension UI or in the provider's own dashboard.
+
+**Response:**
+
+```json
+{
+ "status": "created",
+ "site_id": 1,
+ "service": "uptimerobot",
+ "local_monitor_id": 12,
+ "remote_confirmed": true,
+ "local_mapping_saved": true,
+ "stored_http_credentials_forwarded": false
+}
+```
+
+`stored_http_credentials_forwarded` reports whether HTTP basic auth credentials already stored for the site were sent to the provider so the monitor can reach a protected site. The credential values are never returned.
+
+A site that already has a monitor for the same provider returns `mainwp_aum_monitor_exists` (409). If the provider creates the monitor but the Dashboard write then fails, the call returns `mainwp_aum_database_failure` (500) with a message telling you to run a provider synchronization before retrying, so a blind retry does not create a second remote monitor.
+
+---
+
+## mainwp/set-uptime-monitor-state-v1
+
+Pause or resume one monitor. The Dashboard cache is reconciled only after the provider confirms the change.
+
+**Method:** POST
+
+```bash
+curl -X POST -u 'admin:xxxx' \
+ -H 'Content-Type: application/json' \
+ -d '{"input":{"site_id":1,"service":"uptimerobot","local_monitor_id":12,"state":"paused"}}' \
+ 'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/set-uptime-monitor-state-v1/run'
+```
+
+To roll back this change, call the same ability with the monitor's previous `state` value.
+
+**Input Parameters:**
+
+| Name | Type | Required | Default | Description |
+|------|------|----------|---------|-------------|
+| `site_id` | integer | Yes | — | MainWP Dashboard site ID |
+| `service` | string | Yes | — | Provider slug |
+| `local_monitor_id` | integer | Yes | — | Dashboard-local monitor mapping ID |
+| `state` | string | Yes | — | `active` or `paused` |
+
+**Response:**
+
+```json
+{
+ "status": "updated",
+ "site_id": 1,
+ "service": "uptimerobot",
+ "local_monitor_id": 12,
+ "state": "paused",
+ "remote_confirmed": true,
+ "local_cache_updated": true
+}
+```
+
+The ability is idempotent. Asking for a state the monitor is already in returns `"status": "unchanged"` with `local_cache_updated` set to `false`.
+
+---
+
+## mainwp/delete-uptime-monitor-v1
+
+Delete one monitor at the provider, then remove its Dashboard mapping and cached events.
+
+**Method:** POST (destructive)
+
+```http
+POST /wp-json/wp-abilities/v1/abilities/mainwp/delete-uptime-monitor-v1/run HTTP/1.1
+Host: your-dashboard.com
+Authorization: Basic BASE64_ENCODED_USERNAME_AND_APPLICATION_PASSWORD
+Content-Type: application/json
+
+{"input":{"site_id":1,"service":"uptimerobot","local_monitor_id":12}}
+```
+
+
+This ability is registered with `destructive: true` and has no `confirm` or `dry_run` parameter. Confirm the exact site, provider, and local monitor ID with the user before sending the request. MCP clients read the `destructive` annotation and gate the call themselves.
+
+
+**Input Parameters:**
+
+| Name | Type | Required | Default | Description |
+|------|------|----------|---------|-------------|
+| `site_id` | integer | Yes | — | MainWP Dashboard site ID |
+| `service` | string | Yes | — | Provider slug |
+| `local_monitor_id` | integer | Yes | — | Dashboard-local monitor mapping ID |
+
+**Response:**
+
+```json
+{
+ "status": "deleted",
+ "site_id": 1,
+ "service": "uptimerobot",
+ "local_monitor_id": 12,
+ "remote_confirmed": true,
+ "local_mapping_deleted": true,
+ "local_events_deleted": true
+}
+```
+
+Local data is removed only after the provider confirms the remote deletion. If the provider call fails or its outcome cannot be determined, the mapping and events stay in place and the ability returns an error instead.
+
+---
+
+## mainwp/sync-uptime-monitors-v1
+
+Pull the provider's monitor inventory into the Dashboard one page at a time and reconcile mappings.
+
+**Method:** POST (destructive)
+
+Start a run with this request outline:
+
+```http
+POST /wp-json/wp-abilities/v1/abilities/mainwp/sync-uptime-monitors-v1/run HTTP/1.1
+Host: your-dashboard.com
+Authorization: Basic BASE64_ENCODED_USERNAME_AND_APPLICATION_PASSWORD
+Content-Type: application/json
+
+{"input":{"service":"uptimerobot"}}
+```
+
+Continue with the token and cursor from the previous response:
+
+```http
+POST /wp-json/wp-abilities/v1/abilities/mainwp/sync-uptime-monitors-v1/run HTTP/1.1
+Host: your-dashboard.com
+Authorization: Basic BASE64_ENCODED_USERNAME_AND_APPLICATION_PASSWORD
+Content-Type: application/json
+
+{"input":{"service":"uptimerobot","sync_token":"BW1t...","cursor":50}}
+```
+
+**Input Parameters:**
+
+| Name | Type | Required | Default | Description |
+|------|------|----------|---------|-------------|
+| `service` | string | Yes | — | Provider slug |
+| `sync_token` | string | No | "" | Opaque token from the previous response. Omit on the first call |
+| `cursor` | integer | No | 0 | Page cursor from the previous response's `next_cursor` |
+
+**Response:**
+
+```json
+{
+ "status": "more",
+ "service": "uptimerobot",
+ "sync_token": "BW1t...",
+ "cursor": 0,
+ "next_cursor": 50,
+ "fetched": 50,
+ "inserted": 12,
+ "updated": 38,
+ "deleted": 0,
+ "skipped_unassigned": 0,
+ "remote_confirmed": true
+}
+```
+
+Keep calling with the returned `sync_token` and `next_cursor` until `status` is `complete` and `next_cursor` is `null`.
+
+`skipped_unassigned` counts provider monitors whose address does not match any child site on this Dashboard. Those monitors are left alone.
+
+
+This ability is registered with `destructive: true`. Get explicit approval for the provider and the full synchronization run before sending the first request. Stale mapping removal happens on the terminal page only. When the last page reports `"status": "complete"`, any Dashboard mapping for that provider that was not seen during the run is deleted and counted in `deleted`. Abandoning a run part way through leaves stale mappings in place rather than deleting the wrong ones.
+
+
+Run state lives in a transient that expires after 15 minutes. A token that has expired, or a `cursor` that does not match where the run left off, returns `mainwp_aum_sync_expired` (409). Starting a second run for the same provider while one is still open returns `mainwp_aum_operation_locked` (409).
+
+Site24x7 and NodePing return their whole inventory on the first call, so a `cursor` above `0` for those two providers is rejected as invalid input.
+
+---
+
+## Error Reference
+
+These codes come from the extension in addition to the framework errors listed in the [Abilities API Overview](/api-reference/abilities-api/overview).
+
+| Code | HTTP | Description |
+|------|------|-------------|
+| `mainwp_aum_invalid_input` | 400 | Input failed the extension's validation |
+| `mainwp_aum_access_denied` | 403 | No extension access, or no access to this site |
+| `mainwp_aum_site_not_found` | 404 | Site ID not found on this Dashboard |
+| `mainwp_aum_monitor_not_found` | 404 | No mapping for this monitor, site, and provider |
+| `mainwp_aum_monitor_exists` | 409 | A monitor already exists for this site and provider |
+| `mainwp_aum_operation_locked` | 409 | Another run of this operation is already in progress |
+| `mainwp_aum_sync_expired` | 409 | Synchronization token expired or does not match the run |
+| `mainwp_aum_remote_outcome_unknown` | 504 | The provider did not confirm the outcome |
+| `mainwp_aum_database_failure` | 500 | A Dashboard write failed |
+| `mainwp_aum_invalid_stored_monitor` | 500 | Cached monitor data failed validation |
+| `mainwp_aum_invalid_stored_event` | 500 | Cached event data failed validation |
+
+A `mainwp_aum_remote_outcome_unknown` response means the write may or may not have landed at the provider. Run `mainwp/sync-uptime-monitors-v1` to find out before retrying.
+
+---
+
+## Related Resources
+
+- [Abilities API Overview](/api-reference/abilities-api/overview) - API basics and authentication
+- [Advanced Uptime Monitor](/add-ons/monitoring/advanced-uptime-monitor-extension) - Extension setup and provider credentials
+- [Sites Abilities](/api-reference/abilities-api/sites) - Site management abilities
+- [Team Control](/add-ons/agency/team-control-extension) - Role-based access to sites and monitors
diff --git a/docs.json b/docs.json
index eef3d20..a2a33e9 100644
--- a/docs.json
+++ b/docs.json
@@ -337,7 +337,8 @@
"api-reference/abilities-api/updates",
"api-reference/abilities-api/clients",
"api-reference/abilities-api/tags",
- "api-reference/abilities-api/batch-operations"
+ "api-reference/abilities-api/batch-operations",
+ "api-reference/abilities-api/uptime-monitors"
]
},
"api-reference/mainwp-control"