What are SEOPress abilities?
SEOPress 10 registers a set of abilities on the new WordPress Abilities API. An ability is a clearly defined action (for example “read a post’s SEO title” or “create a redirect”) that AI assistants and automation tools can discover and run safely, with your existing WordPress permissions always enforced.
In practice, this lets you connect an AI agent (such as Claude, or any MCP-compatible tool) to your site and let it handle SEO tasks for you, instead of clicking through screens by hand.
Since SEOPress 10.4, abilities also cover taxonomy terms: categories, tags, WooCommerce product categories and custom taxonomies. An agent can read and update their SEO title, meta description, robots and social settings, find the terms with missing metadata and, with SEOPress PRO, get AI suggestions for them.
Requirements
- SEOPress (Free) 10.0 or newer for the core abilities, 10.4 or newer for the taxonomy term abilities.
- SEOPress PRO 10.0 or newer for the PRO abilities (redirects, structured data, AI generation), 10.4 or newer for the AI generation on terms.
- SEOPress Insights 3.1 or newer for the Insights abilities (rankings, competitors, backlinks).
- WordPress 6.9 or newer (the Abilities API is part of WordPress core from this version).
- An authentication method for external calls (we recommend Application Passwords).
- For the AI generation abilities: a configured AI provider or SEOPress AI Credits.
Enable abilities over the REST API
Abilities are off by default. SEOPress Free and PRO share one switch; SEOPress Insights has its own. Turning one on does not turn the other on.
SEOPress Free and PRO
- Go to SEO > Advanced settings.
- Open the Advanced tab, then the Abilities API section.
- Turn on Expose abilities to AI agents and external tools.
- Save.
SEOPress Insights
Insights has no toggle in its settings yet. Enable its abilities with a filter, in your theme’s functions.php or a small plugin:
add_filter( 'seopress_insights_abilities_api_rest_enabled', '__return_true' );
If you only run Insights and not SEOPress Free or PRO, this filter is all you need.
Once enabled, the abilities become reachable under the /wp-abilities/v1/ REST namespace, for any user who is already allowed to perform the underlying action.
Make your site “agent ready” (PRO)
SEOPress PRO can expose discovery signals so AI tools find and understand your content on their own. Enable Agent Readiness (under the Technical features) to publish an MCP server card (/.well-known/mcp.json), an llms.txt file and other /.well-known/ endpoints.
Connect an AI agent (MCP)
- Enable Expose abilities to AI agents and external tools (and, on PRO, Agent Readiness).
- Create an Application Password for the WordPress user the agent will act as (Users > Profile > Application Passwords).
- In your MCP-compatible client, point it at your site and authenticate with that username and application password.
- The client discovers the available abilities automatically and runs them on your behalf.
The agent can only ever do what that user is allowed to do. To limit its scope, connect it as a user with a restricted role.
Available abilities
Free (SEOPress): category seopress
| Ability | What it does | Capability |
|---|---|---|
seopress/get-post-title-description |
Read a post’s SEO title and meta description | edit_post |
seopress/update-post-title-description |
Set or clear a post’s SEO title and meta description | edit_post |
seopress/get-post-robots-settings |
Read indexing directives (noindex, nofollow, canonical…) | edit_post |
seopress/update-post-robots-settings |
Update indexing directives | edit_post |
seopress/get-post-social-settings |
Read Facebook and X social metadata | edit_post |
seopress/update-post-social-settings |
Update social metadata | edit_post |
seopress/analyze-post-content |
Run the content analysis (score and checks) | edit_post |
seopress/get-global-titles-settings |
Read the site-wide title and meta templates | manage_options |
seopress/list-posts-missing-metadata |
List the posts, pages and custom post type entries with no custom SEO title and/or meta description (missing: title, description, any or both) |
edit_posts on at least one public post type |
seopress/list-posts-by-content-score |
List posts with the verdict of their last content analysis (good, needs_improvement or not_analyzed). Since SEOPress 10.4, each post also comes with checks_passed and checks_total, ignored checks left out |
edit_posts on at least one public post type |
seopress/list-posts-noindexed |
List the posts with an explicit noindex directive | edit_posts on at least one public post type |
seopress/get-sitemap-settings |
Read the XML and HTML sitemap settings | manage_options |
seopress/get-instant-indexing-settings |
Read the Instant Indexing settings and log. API keys are never returned, only whether each one is configured | manage_options |
seopress/get-global-social-settings |
Read the site-wide social and Knowledge Graph settings | manage_options |
The three list-posts-* abilities only return the posts the connected user may read, 20 per page by default (per_page up to 100, page to move through the results).
Free (SEOPress), taxonomy terms: since SEOPress 10.4, same seopress category
| Ability | What it does | Capability |
|---|---|---|
seopress/get-term-title-description |
Read a term’s custom SEO title and meta description (empty when the global template applies) | edit_term |
seopress/update-term-title-description |
Set or clear a term’s SEO title and/or meta description. An empty string clears the value and the global template applies again | edit_term |
seopress/get-term-robots-settings |
Read a term’s indexing directives (noindex, nofollow, nosnippet, noimageindex, canonical URL) | edit_term |
seopress/update-term-robots-settings |
Update a term’s indexing directives. A directive forced on by the global settings is not written and is returned in skipped |
edit_term |
seopress/get-term-social-settings |
Read a term’s Facebook (Open Graph) and X title, description and image | edit_term |
seopress/update-term-social-settings |
Update a term’s Facebook and X title, description and image. The image is set by Media Library ID or by URL | edit_term |
seopress/list-terms-missing-metadata |
List the terms with no custom SEO title and/or meta description, optionally for some taxonomies only (taxonomy, for example ["product_cat"]) |
Permission to manage the terms of at least one supported taxonomy |
The term abilities take a term_id and read or write the same fields as the SEO metabox of the term edit screen. They work on any public taxonomy, unless Disable SEO metabox is turned on for it in SEO > Titles & Metas > Taxonomies. The listing only returns terms of the taxonomies the connected user may manage, 20 per page by default (per_page up to 100).
SEOPress PRO: same seopress category
| Ability | What it does | Capability |
|---|---|---|
seopress/list-redirections |
List redirects and detected 404s | read_redirection |
seopress/get-redirection |
Get a single redirect by ID | read_redirection |
seopress/create-redirection |
Create a redirect (301/302/307/410/451) | publish_redirections |
seopress/update-redirection |
Update a redirect | edit_redirection |
seopress/delete-redirection |
Delete a redirect | delete_redirection |
seopress/get-post-schemas |
Read a post’s structured data (schema) | edit_post |
seopress/update-post-schemas |
Replace a post’s structured data | edit_post |
seopress/update-target-keywords |
Set the target keywords used for content analysis | edit_post |
seopress/generate-seo-title |
Generate an AI-optimized SEO title | edit_post |
seopress/generate-meta-description |
Generate an AI-optimized meta description | edit_post |
seopress/generate-alt-text |
Generate AI alt text, caption and description for an image. Since SEOPress PRO 10.4, the suggestion is returned and not saved | edit_post on the image |
seopress/generate-term-seo-title |
Generate an AI-optimized SEO title for a taxonomy term (since SEOPress PRO 10.4). The suggestion is returned, not saved | edit_term |
seopress/generate-term-meta-description |
Generate an AI-optimized meta description for a taxonomy term (since SEOPress PRO 10.4). The suggestion is returned, not saved | edit_term |
seopress/upload-image |
Download an external image into the Media Library | upload_files (and edit_post on the post when a post_id is given) |
seopress/get-technical-audit |
Read the site technical audit (crawl issues and their severity) | manage_options |
generate-*) require a configured AI provider or SEOPress AI Credits. Since SEOPress PRO 10.4, they also follow the AI generation roles set in SEO > Advanced settings > Security: a role that is not allowed to use AI generation there is refused here too. To save a term suggestion, pass it to seopress/update-term-title-description.SEOPress Insights: same seopress category
| Ability | What it does | Capability |
|---|---|---|
seopress/get-insights-dashboard |
Read the Insights dashboard: KPI summary, ranking trend, keyword movers, position distribution, favorite keywords and backlink summary | seopress_insights_manage_dashboard |
seopress/get-keyword-rankings |
Read tracked keyword positions, variations, search volume and chart series | seopress_insights_manage_rankings |
seopress/get-competitor-rankings |
Read competitor positions alongside your own | seopress_insights_manage_rankings |
seopress/list-backlinks |
Read your backlinks with their Majestic Citation Flow and Trust Flow scores | seopress_insights_manage_backlinks |
start_date and end_date (Unix timestamps) plus a keyword_ids array to restrict the result to specific tracked keywords.The Insights capabilities are the same ones that control access to the Insights screens. See SEOPress & Insights user capabilities to grant them to a role.
For developers
Three REST routes are available:
GET /wp-json/wp-abilities/v1/abilities: list every abilityGET /wp-json/wp-abilities/v1/abilities/<name>: one ability’s definition…/abilities/<name>/run: execute an ability
WordPress enforces the HTTP method from the ability’s annotations:
- read-only abilities → GET
- destructive and idempotent abilities (updates, deletes) → DELETE
- everything else (creation) → POST
The input of an ability always goes under an input key. With GET and DELETE, pass it as query parameters (?input[post_id]=123); with POST, send it as a JSON body ({"input": {…}}). The list endpoint returns the exact run URL for each ability, so MCP clients pick the right method automatically.
# List all abilities
curl https://example.com/wp-json/wp-abilities/v1/abilities \
--user "USERNAME:APPLICATION_PASSWORD"
# Read a post's SEO title and meta description (GET, read-only)
curl -g "https://example.com/wp-json/wp-abilities/v1/abilities/seopress/get-post-title-description/run?input[post_id]=123" \
--user "USERNAME:APPLICATION_PASSWORD"
# Find the product categories without a meta description (GET, read-only)
curl -g "https://example.com/wp-json/wp-abilities/v1/abilities/seopress/list-terms-missing-metadata/run?input[taxonomy][]=product_cat&input[missing]=description" \
--user "USERNAME:APPLICATION_PASSWORD"
# Set the SEO title of term 15 (DELETE, destructive + idempotent)
curl -g -X DELETE "https://example.com/wp-json/wp-abilities/v1/abilities/seopress/update-term-title-description/run?input[term_id]=15&input[title]=Garden+tools" \
--user "USERNAME:APPLICATION_PASSWORD"
# Create a redirect (POST)
curl -X POST https://example.com/wp-json/wp-abilities/v1/abilities/seopress/create-redirection/run \
--user "USERNAME:APPLICATION_PASSWORD" \
-H "Content-Type: application/json" \
-d '{"input":{"origin":"/old-url/","destination":"/new-url/","type":"301"}}'
# Delete a redirect (DELETE, destructive + idempotent)
curl -g -X DELETE "https://example.com/wp-json/wp-abilities/v1/abilities/seopress/delete-redirection/run?input[id]=42" \
--user "USERNAME:APPLICATION_PASSWORD"
Permissions and security
- Abilities are off by default; you opt in with a single toggle.
- Every call runs as the authenticated user and re-checks that user’s WordPress capabilities. An agent can never exceed them.
- Per-post abilities require
edit_poston the target post; per-term abilities requireedit_termon the target term; global settings requiremanage_options. - Since SEOPress 10.4, the abilities that change a post’s or a term’s SEO settings (
update-post-*,update-term-*) refuse a role checked in SEO > Advanced settings > Security > SEO metaboxes: blocked roles, as the SEO metabox and the REST API already did. Reading stays allowed. - Since SEOPress PRO 10.4, the AI abilities also check the AI generation roles of the same Security tab.
- Use Application Passwords and connect agents as a least-privileged user.
FAQ
Do I need SEOPress PRO? No. The free plugin already exposes 21 abilities, for posts, taxonomy terms and the global settings. PRO adds redirects, structured data, the technical audit and AI generation.
Will an agent change things without asking? Over REST, an authorized agent runs what it is asked to run. Inside the editor, the AI Assistant proposes changes for your review before applying them.
An ability returns “not found”. Make sure Expose abilities to AI agents and external tools is enabled and that the connected user can perform the action.
A term ability says the taxonomy is not supported. The taxonomy is not public, or Disable SEO metabox is turned on for it in SEO > Titles & Metas > Taxonomies. Term abilities only work where the SEO metabox of the term edit screen is available.