Key Takeaways
- The Abilities feature turns The Plus Addons into a full MCP (Model Context Protocol) bridge — AI tools like Claude, Cursor, or any MCP-aware client can discover, read, and build complete Elementor pages using TPAE widgets without touching the editor.
- Built on the WordPress Core Abilities API, every TPAE widget and every Elementor structural action is registered as a named, schema-validated “ability” that AI agents can call.
- Free plan includes 8 core layout abilities, 29 widget abilities, and a full suite of page/query/template/global/SVG/stock-image abilities; Pro expands the widget ability library with 26+ additional widgets including form integrations.
- The entire system is opt-in, permission-gated, and schema-validated — controlled by a single on/off toggle in the plugin settings.
What is the Abilities Feature?
The Abilities feature is an MCP bridge built into The Plus Addons for Elementor. It registers every TPAE widget — Accordion, Info Box, Blog Listing, Pricing Table, and many more — plus all of Elementor’s structural actions (containers, layouts, templates, custom code, global colors/fonts) as machine-readable “abilities” that any MCP-compatible AI client can discover and call. This lets an AI agent programmatically build, update, move, and query entire Elementor page layouts — including running queries, inserting templates, generating SVGs, or pulling stock images — without a human touching the editor.
The system is built on the WordPress Core Abilities API, a standard developed with Anthropic to make WordPress natively AI-operable. TPAE is one of the first plugins to implement this standard at scale.
Requirements
Before using the Abilities feature, make sure you have:
- Elementor FREE plugin installed and activated.
- The Plus Addons for Elementor plugin installed and activated (version 6.4.8 or later).
- WordPress with the Core Abilities API — requires WordPress version with
wp_register_ability()and thewp_abilities_api_initaction available. - An MCP-compatible AI client — e.g. Claude (via Claude Code or an MCP server), Cursor, or any tool that speaks the MCP protocol.
- Some widget abilities require The Plus Addons PRO — Upgrade here.
How to Enable the Abilities Feature
- Go to The Plus Addons → Extra Options → Settings in your WordPress dashboard.
- Under the Abilities Access section, find the Ability toggle.
- The description reads: “Turn on Ability to allow AI tools like Claude or other clients to control and generate widget data within this plugin.”
- Switch the Ability toggle ON and save.
- The plugin will register all abilities under the
tpaecategory on the next page load. - Connect your MCP-compatible AI client to the WordPress site — it will discover all registered abilities automatically via the MCP protocol.
Note: The Abilities system is opt-in. Nothing is exposed to any AI client until you explicitly enable the Ability toggle.
How It Works
When enabled, the plugin hooks into WordPress Core at two points:
| Hook | What It Does |
|---|---|
wp_abilities_api_categories_init |
Registers the tpae ability category with a label and description. |
wp_abilities_api_init |
Dynamically loads all ability definition files (layout, widget, page, query, template, global, custom-code, SVG, stock-image) and calls wp_register_ability() for each. |
Each ability is registered with:
- A unique slug — e.g.
tpae/add-container,tpae/tpae-accordion - An input schema — JSON Schema object defining exactly what parameters an AI can pass
- An output schema — JSON Schema defining what the ability returns
- An execute callback — the PHP function that performs the action
- A permission callback — capability check (e.g.
current_user_can('edit_posts'))
AI clients discover all registered abilities via MCP’s tool-discovery flow and can then call any ability by its slug, passing JSON matching the input schema.
Ability Categories
The TPAE Abilities system registers abilities across several functional categories. All are loaded automatically when the Ability toggle is turned on.
| Category | Source File | What It Covers |
|---|---|---|
| Layout Abilities | core-elementor/layout-abilities.php |
Add/update/move/remove/duplicate/reorder containers and elements; read page structure. |
| Widget Abilities | widgets-ability/tp-*.php (one file per widget) |
Place and configure any TPAE widget with full control schemas. |
| Page Abilities | mcp-tools/abilities/class-page-abilities.php |
Create, list, and manage pages and posts. |
| Query Abilities | mcp-tools/abilities/class-query-abilities.php |
Query existing pages, posts, and Elementor data. |
| Template Abilities | mcp-tools/abilities/class-template-abilities.php |
Insert and manage Elementor templates and saved blocks. |
| Global Abilities | mcp-tools/abilities/class-global-abilities.php |
Read and update Elementor’s global colors and global fonts. |
| Composite Abilities | mcp-tools/abilities/class-composite-abilities.php |
High-level multi-step operations (batch updates, complex flows). |
| Custom Code Abilities | mcp-tools/abilities/class-custom-code-abilities.php |
Inject custom CSS, JS, or HTML — capability-gated. |
| SVG Icon Abilities | mcp-tools/abilities/class-svg-icon-abilities.php |
Generate, retrieve, and manage SVG icons. |
| Stock Image Abilities | mcp-tools/abilities/class-stock-image-abilities.php |
Search and fetch images from stock providers (Openverse). |
Core Layout Abilities (Free)
These 8 abilities control the structural layer of an Elementor page — containers, element positioning, and page inspection.
| Ability Slug | Label | What It Does |
|---|---|---|
tpae/add-container |
Add Container | Adds an Elementor container to a page or inside another container at a specified position. |
tpae/update-container |
Update Container | Updates settings (width, flex direction, alignment, gap, padding, background) on an existing container. |
tpae/update-element |
Update Element | Updates control settings on any existing Elementor element — widget or container. |
tpae/move-element |
Move Element | Moves an element to a new parent container at a given position. |
tpae/reorder-elements |
Reorder Elements | Reorders the direct children of a container by providing a new ordered array of element IDs. |
tpae/remove-element |
Remove Element | Permanently deletes an element (widget or container) from the page. |
tpae/duplicate-element |
Duplicate Element | Clones an element in place, creating an identical copy at the specified position. |
tpae/get-page-structure |
Get Page Structure | Returns the complete Elementor element tree for a page — all containers, widgets, and their current settings. |
Common input parameters for layout abilities:
| Parameter | Type | Description |
|---|---|---|
post_id |
Integer | The WordPress page/post ID to operate on. Required for all layout abilities. |
element_id |
String | The Elementor element ID to target (for update, move, remove, duplicate). |
parent_id |
String | Target container ID. Leave empty to place at the top level. |
position |
Integer | Insertion index. Use -1 to append at the end. |
settings |
Object | Control key-value pairs to apply (for add/update operations). |
Widget Abilities — Free Plan
These abilities allow an AI to place a specific TPAE widget into an Elementor container with any combination of control settings — exactly as if a user dragged the widget from the panel and configured it.
Each widget ability accepts post_id, parent_id, and position plus every control exposed by that widget (colors, typography values, layout options, etc.).
| Ability Slug | Widget |
|---|---|
tpae/tpae-accordion |
Accordion / FAQ |
tpae/tpae-heading-title |
Heading Title |
tpae/tpae-button |
Button |
tpae/tpae-info-box |
Info Box |
tpae/tpae-number-counter |
Number Counter |
tpae/tpae-countdown |
Countdown |
tpae/tpae-pricing-table |
Pricing Table |
tpae/tpae-flip-box |
Flip Box |
tpae/tpae-tabs-tours |
Tabs |
tpae/tpae-testimonial-listout |
Testimonial Listing |
tpae/tpae-team-member-listout |
Team Member Listing |
tpae/tpae-blog-listout |
Blog Listing |
tpae/tpae-gallery-listout |
Gallery |
tpae/tpae-clients-listout |
Clients Logo Listing |
tpae/tpae-social-icon |
Social Icons |
tpae/tpae-carousel-anything |
Carousel Anything |
tpae/tpae-style-list |
Style List |
tpae/tpae-process-steps |
Process Steps |
tpae/tpae-switcher |
Switcher |
tpae/tpae-table |
Table |
tpae/tpae-syntax-highlighter |
Syntax Highlighter |
tpae/tpae-breadcrumbs-bar |
Breadcrumbs Bar |
tpae/tpae-scroll-navigation |
Scroll Navigation |
tpae/tpae-page-scroll |
Page Scroll |
tpae/tpae-smooth-scroll |
Smooth Scroll |
tpae/tpae-plus-form |
Plus Form |
tpae/tpae-post-search |
Post Search |
tpae/tpae-dynamic-categories |
Dynamic Categories |
tpae/tpae-header-extras |
Header Extras |
Widget Abilities — Pro Plan (Pro)
These additional widget abilities become available when The Plus Addons PRO is active. They cover advanced widgets, form integrations, and builder-specific elements.
| Ability Slug | Widget |
|---|---|
tpae/tpae-age-gate |
Age Gate |
tpae/tpae-blockquote |
Blockquote |
tpae/tpae-contact-form-7 |
Contact Form 7 |
tpae/tpae-dark-mode |
Dark Mode |
tpae/tpae-everest-form |
Everest Forms |
tpae/tpae-gravity-form |
Gravity Forms |
tpae/tpae-heading-animation |
Heading Animation |
tpae/tpae-hovercard |
Hover Card |
tpae/tpae-icon |
Icon |
tpae/tpae-meeting-scheduler |
Meeting Scheduler |
tpae/tpae-messagebox |
Message Box |
tpae/tpae-navigation-menu-lite |
Navigation Menu |
tpae/tpae-ninja-form |
Ninja Forms |
tpae/tpae-post-author |
Post Author |
tpae/tpae-post-comment |
Post Comment |
tpae/tpae-post-content |
Post Content |
tpae/tpae-post-featured-image |
Post Featured Image |
tpae/tpae-post-meta |
Post Meta |
tpae/tpae-post-navigation |
Post Navigation |
tpae/tpae-post-title |
Post Title |
tpae/tpae-progress-bar |
Progress Bar |
tpae/tpae-social-embed |
Social Embed |
tpae/tpae-text-block |
Text Block |
tpae/tpae-video-player |
Video Player |
tpae/tpae-webgl |
WebGL |
tpae/tpae-wp-forms |
WP Forms |
Security Model
The Abilities feature is designed with multiple layers of protection:
| Layer | Description |
|---|---|
| Opt-in toggle | The entire system is disabled by default. Nothing is exposed until the Ability toggle under Abilities Access is turned on. |
| Permission callback | Every ability checks current_user_can('edit_posts') (or stricter capability) before executing. Unauthenticated requests are rejected. |
| Schema validation | Input is validated against the registered JSON Schema before the execute callback runs. Malformed or unexpected parameters are rejected. |
| Capability-gated actions | Abilities that write custom CSS, JS, or PHP require elevated permissions and are sanitized separately via the Custom Code Abilities layer. |
| No public exposure | Abilities are only accessible through the authenticated WordPress REST API + MCP transport. They are not callable without a valid logged-in session. |
Free vs. Pro Summary
| Capability | Free | Pro |
|---|---|---|
| Core layout abilities (add/update/move/remove containers & elements) | ✅ 8 abilities | ✅ 8 abilities |
| Free widget abilities | ✅ 29 widgets | ✅ 29 widgets |
| Pro widget abilities | ❌ | ✅ 26+ additional widgets |
| Page / Query / Template abilities | ✅ | ✅ |
| Global colors & fonts abilities | ✅ | ✅ |
| SVG icon & stock image abilities | ✅ | ✅ |
| Custom code abilities (CSS/JS/HTML) | ✅ (capability-gated) | ✅ (capability-gated) |
| Form integrations (CF7, Gravity, Ninja, Everest, WP Forms) | ❌ | ✅ |
| Post/builder elements (Post Title, Author, Content, Meta, etc.) | ❌ | ✅ |
| WebGL, Hover Card, Social Embed, Meeting Scheduler | ❌ | ✅ |
Notes
Note: The Abilities system requires a WordPress version that includes the
wp_register_ability()andwp_abilities_api_inithooks from the Core Abilities API. Check your WordPress version before enabling.
Note: When The Plus Addons PRO is active, the free-only widget ability files are skipped (they are replaced by enhanced versions in the Pro plugin). The free and Pro versions of the same widget ability have identical slugs — Pro simply extends the schema.
Note: Use
tpae/get-page-structurefirst when asking an AI to edit an existing page — it returns the complete element tree with all element IDs, which the AI needs to target specific elements for update/move/remove operations.
Note: The
tpae/update-elementability can modify any element on the page — widget or container — by passing theelement_idand asettingsobject. You do not need a widget-specific ability to update an already-placed widget.
Note: Custom Code Abilities (CSS/JS/HTML injection) are capability-gated and sanitized. Only users with appropriate capabilities (typically
manage_options) can call these abilities — content editors withedit_postscannot.