A typical WordPress site might have dozens of plugins, each adding unique functionality. But there’s no standardized way for these components to express their capabilities. An AI assistant has no systematic way to discover that your backup plugin can create snapshots, your SEO plugin can analyze content, or your e-commerce solution can generate reports. This fragmentation limits what we can build.
The Abilities API establishes a common pattern that the entire ecosystem can adopt. It may look something like this:
// Any plugin can register its abilities with the `init` hook.
wp_register_ability( 'my-seo-plugin/analyze-content-seo', [
'label' => __( 'Analyze Content SEO', 'my-seo-plugin' ),
'description' => __( 'Analyzes post content for SEO improvements.',
'my-seo-plugin' ),
'thinking_message' => __('Reviewing your content now!'),
'success_message' => __('Content reviewed successfully.'),
'execute_callback' => [ 'MySEOPlugin', 'analyze_content' ],
'input_schema' => [
'type' => 'object',
'properties' => [
'post_id' => [ 'type' => 'integer', 'description' => __( 'The post identifier.', 'my-seo-plugin' ), 'required' => true ],
],
'additionalProperties' => false,
],
'output_schema' => ]
'type' => 'number',
'description' => __( 'The score for the content in percentage.', 'my-seo-plugin' ),
'required' => true,
],
'permission_callback' => 'edit_posts',
] );
A typical WordPress site might have dozens of plugins, each adding unique functionality. But there’s no standardized way for these components to express their capabilities. An AI assistant has no systematic way to discover that your backup plugin can create snapshots, your SEO plugin can analyze content, or your e-commerce solution can generate reports. This fragmentation limits what we can build.
The Abilities API establishes a common pattern that the entire ecosystem can adopt. It may look something like this:
More details in the announcement post:
https://make.wordpress.org/ai/2025/07/17/abilities-api/
See also Feature API as a reference: