Elementor
10M+Page Builder
Elementor ships an MCP module that exposes editor + widget operations. Respira layers snapshot-before-write protection on top via the Inhale gateway.
WordPress Abilities API · Directory
The WordPress Abilities API (introduced in WordPress 6.9 and shipped through the WordPress/mcp-adapter package) lets plugins register callable abilities that any MCP server can expose to AI agents. 19 plugins have adopted so far, reaching 30M+ active installs combined. Respira's Inhale gateway picks them up automatically and wraps each call with snapshot-before-write protection, structured errors, and one-click rollback.
Directory · 163 abilities
Auto-extracted from each plugin's canonical source via the
wp_register_ability calls themselves. Refreshed weekly.
Each row links back to the line in the plugin's repo where the
ability is registered so you can verify the contract yourself.
Last refresh: 2026-05-22.
| Ability | Plugin | Kind | Input schema | Quality (30d) | Source |
|---|---|---|---|---|---|
advanced-custom-fields/get-field-valueGet Field Value Read the value of a custom field for a given post. | Custom Fields | read | post_idfield_name | idle | view |
advanced-custom-fields/list-field-groupsList Field Groups Return all registered ACF field groups with their fields and metadata. | Custom Fields | read | — | idle | view |
advanced-custom-fields/update-field-valueUpdate Field Value Write a new value to a custom field on a post. | Custom Fields | write | post_idfield_namevalue | idle | view |
elementor/get-pageGet Page Read the Elementor data tree for a given post id. | Page Builder | read | post_id | idle | view |
elementor/list-widgetsList Widgets Return the catalogue of registered Elementor widgets including atomic v4 widgets. | Page Builder | read | — | idle | view |
elementor/update-widgetUpdate Widget Patch settings on a single Elementor widget. | Page Builder | write | post_idwidget_idsettings | idle | view |
jetpack/create-short-linkCreate Short Link Create a wp.me short link for a given URL. | Suite | write | url | idle | view |
jetpack-forms/list-responsesList Form Responses Return submitted responses for a Jetpack form. | Forms | read | form_idpageper_page | idle | view |
respira/activate_pluginwordpress_activate_plugin Activate a plugin. Requires plugin management to be enabled in Respira settings. Monitor the site after activation. | Plugins | write | slug | idle | view |
respira/add_accordionwordpress_add_accordion Add an accordion widget to a page. | Core | write | post_iditems | idle | view |
respira/add_alertwordpress_add_alert Add an alert/notice widget to a page. | Core | write | post_idtitlecontentalert_type | idle | view |
respira/add_buttonwordpress_add_button Add a button widget to a page. | Core | write | post_idtexturlalignment | idle | view |
respira/add_counterwordpress_add_counter Add a counter/number widget to a page. | Core | write | post_idstarting_numberending_numbertitle | idle | view |
respira/add_dividerwordpress_add_divider Add a divider/separator widget to a page. | Core | write | post_idstyle | idle | view |
respira/add_formwordpress_add_form Add a form widget to a page. | Core | write | post_idform_id | idle | view |
respira/add_gallerywordpress_add_gallery Add an image gallery widget to a page. | Core | write | post_idimagescolumns | idle | view |
respira/add_headingwordpress_add_heading Add a heading widget to a page. | Core | write | post_idtitletagalignment | idle | view |
respira/add_htmlwordpress_add_html Add a custom HTML widget to a page. | Core | write | post_idhtml | idle | view |
respira/add_iconwordpress_add_icon Add an icon widget to a page. | Core | write | post_idiconalignment | idle | view |
respira/add_icon_listwordpress_add_icon_list Add an icon list widget to a page. | Core | write | post_iditems | idle | view |
respira/add_imagewordpress_add_image Add an image widget to a page. | Media | write | post_idimage_idimage_urlalt | idle | view |
respira/add_mapwordpress_add_map Add a Google Maps widget to a page. | Core | write | post_idaddresszoom | idle | view |
respira/add_menuwordpress_add_menu Add a navigation menu widget to a page. | Menus | write | post_idmenu_id | idle | view |
respira/add_pricing_tablewordpress_add_pricing_table Add a pricing table widget to a page. | Core | write | post_idtitlepricefeatures | idle | view |
respira/add_progress_barwordpress_add_progress_bar Add a progress bar widget to a page. | Core | write | post_idtitlepercent | idle | view |
respira/add_searchwordpress_add_search Add a search form widget to a page. | Core | write | post_idplaceholder | idle | view |
respira/add_sectionwordpress_add_section Add a new section container to a page. | Core | write | post_idlayoutcolumns | idle | view |
respira/add_sidebarwordpress_add_sidebar Add a sidebar widget to a page. | Core | write | post_idsidebar_id | idle | view |
respira/add_sliderwordpress_add_slider Add a slider/carousel widget to a page. | Core | write | post_idslidesautoplay | idle | view |
respira/add_social_iconswordpress_add_social_icons Add social icons widget to a page. | Core | write | post_idicons | idle | view |
respira/add_spacerwordpress_add_spacer Add a spacer widget to a page. | Core | write | post_idheight | idle | view |
respira/add_tabswordpress_add_tabs Add a tabs widget to a page. | Core | write | post_idtabs | idle | view |
respira/add_testimonialwordpress_add_testimonial Add a testimonial widget to a page. | Core | write | post_idcontentnametitle | idle | view |
respira/add_textwordpress_add_text Add a text editor widget to a page. | Core | write | post_idcontent | idle | view |
respira/add_togglewordpress_add_toggle Add a toggle widget to a page. | Core | write | post_idtitlecontent | idle | view |
respira/add_videowordpress_add_video Add a video widget to a page. | Core | write | post_idvideo_urlvideo_type | idle | view |
respira/analyze_aeowordpress_analyze_aeo Analyze content for AI Engine Optimization (optimizing for AI search engines like Perplexity, ChatGPT). Checks structured data, content clarity, semantic HTML, entities, content depth, and FAQ opportunities. | Analyzers | read | pageId | idle | view |
respira/analyze_imageswordpress_analyze_images Analyze image optimization opportunities including missing alt text, large files, and unoptimized formats. | Media | read | pageId | idle | view |
respira/analyze_performancewordpress_analyze_performance Analyze page performance metrics including load time, image optimization, CSS/JS optimization, caching, and plugin performance impact. | Analyzers | read | pageId | idle | view |
respira/analyze_rankmathwordpress_analyze_rankmath Analyze a page using RankMath SEO metrics when RankMath is installed. | Core | read | pageId | idle | view |
respira/analyze_readabilitywordpress_analyze_readability Analyze content readability including Flesch Reading Ease score, sentence length, and paragraph structure. | Analyzers | read | pageId | idle | view |
respira/analyze_seowordpress_analyze_seo Comprehensive SEO analysis including meta tags, heading structure, image alt text, internal linking, content quality, and schema markup. | SEO | read | pageId | idle | view |
respira/apply_builder_patchwordpress_apply_builder_patch Apply Respira v2 builder patch operations using id/path/type identifiers. | Page Builder | write | builderpostIdincludeoperations | idle | view |
respira/approve_duplicatewordpress_approve_duplicate Approve a Respira duplicate and apply it live. Admin-only. | Core | read | duplicate_idforce | idle | view |
respira/assign_menu_locationwordpress_assign_menu_location Assign a menu to a theme location. | Menus | write | locationmenu_id | idle | view |
respira/batch_updatewordpress_batch_update Apply multiple element operations atomically on a single page. | Core | write | post_idoperations | idle | view |
respira/build_pagewordpress_build_page Create a new page with builder-specific declarative structure. | Content | write | titlestructurestatusbuilder | idle | view |
respira/bulk_pages_operationwordpress_bulk_pages_operation Apply operations across multiple pages with mandatory snapshots. | Content | write | page_idsoperationoptions | idle | view |
respira/check_seo_issueswordpress_check_seo_issues Check for common SEO issues and get quick recommendations. | SEO | read | pageId | idle | view |
respira/check_structured_datawordpress_check_structured_data Check schema markup and structured data (JSON-LD, microdata) for AI parsing. | Analyzers | read | pageId | idle | view |
respira/convert_html_to_builderwordpress_convert_html_to_builder Convert HTML into native builder page with fidelity report. | Page Builder | write | htmlbuilderoptions | idle | view |
respira/create_commentwordpress_create_comment Create a new comment. | Core | write | post_idauthorauthor_emailcontent +2 | idle | view |
respira/create_custom_postwordpress_create_custom_post Create a new custom post. | Content | write | typetitlecontentstatus | idle | view |
respira/create_menuwordpress_create_menu Create a new navigation menu. | Menus | write | namedescription | idle | view |
respira/create_menu_itemwordpress_create_menu_item Create a new menu item. Can link to pages, posts, custom URLs, or categories. | Menus | write | menu_idtitleurlobject_type +4 | idle | view |
respira/create_page_duplicatewordpress_create_page_duplicate Create a duplicate of an existing page for safe editing. IMPORTANT: Always use this before making changes to an original page. After creating a duplicate, edit the duplicate using wordpress_update_page. The user can then review and approve the duplicate in WordPress admin (Respira → Changes) to apply changes live. | Content | write | originalIdsuffix | idle | view |
respira/create_post_duplicatewordpress_create_post_duplicate Create a duplicate of an existing post for safe editing. IMPORTANT: Always use this before making changes to an original post. After creating a duplicate, edit the duplicate using wordpress_update_post. The user can then review and approve the duplicate in WordPress admin (Respira → Changes) to apply changes live. | Content | write | originalIdsuffix | idle | view |
respira/create_termwordpress_create_term Create a new term. | Taxonomies | write | taxonomynameslugdescription +1 | idle | view |
respira/create_userwordpress_create_user Create a new user. | Users | write | usernameemailpasswordrole | idle | view |
respira/deactivate_pluginwordpress_deactivate_plugin Deactivate a plugin. Requires plugin management to be enabled in Respira settings. | Plugins | write | slug | idle | view |
respira/delete_commentwordpress_delete_comment Delete a comment. | Core | write | id | idle | view |
respira/delete_custom_postwordpress_delete_custom_post Delete a custom post. Deleting originals requires force=true + confirmLiveEdit=true and "Allow Direct Editing" enabled. | Content | write | typeidforceconfirmLiveEdit | idle | view |
respira/delete_mediawordpress_delete_media Delete a media file. | Media | write | id | idle | view |
respira/delete_menuwordpress_delete_menu Delete a navigation menu. | Menus | write | id | idle | view |
respira/delete_menu_itemwordpress_delete_menu_item Delete a menu item. | Menus | write | item_id | idle | view |
respira/delete_optionwordpress_delete_option Delete an option. | Core | write | option | idle | view |
respira/delete_pagewordpress_delete_page Delete a page. IMPORTANT: By default, this only works on Respira-created duplicates. Deleting originals requires force=true + confirmLiveEdit=true and "Allow Direct Editing" enabled. | Content | write | idforceconfirmLiveEdit | idle | view |
respira/delete_pluginwordpress_delete_plugin Permanently delete a plugin. Requires plugin management to be enabled in Respira settings. The plugin must be deactivated first. | Plugins | write | slug | idle | view |
respira/delete_postwordpress_delete_post Delete a post. IMPORTANT: By default, this only works on Respira-created duplicates. Deleting originals requires force=true + confirmLiveEdit=true and "Allow Direct Editing" enabled. | Content | write | idforceconfirmLiveEdit | idle | view |
respira/delete_termwordpress_delete_term Delete a term. | Taxonomies | write | taxonomyid | idle | view |
respira/delete_userwordpress_delete_user Delete a user. | Users | write | idreassign | idle | view |
respira/detect_page_builderwordpress_detect_page_builder Detect which page builder a specific page is using. | Page Builder | read | id | idle | view |
respira/diff_snapshotswordpress_diff_snapshots Diff two snapshots by UUID and return fidelity hash deltas. | Snapshots | read | snapshot_uuid_asnapshot_uuid_b | idle | view |
respira/duplicate_elementwordpress_duplicate_element Duplicate an element on a page. | Page Builder | write | post_ididentifier_typeidentifier_value | idle | view |
respira/extract_builder_contentwordpress_extract_builder_content Extract structured content from a page builder (Divi, Elementor, etc.). | Page Builder | read | builderpageId | idle | view |
respira/find_builder_targetswordpress_find_builder_targets Find editable targets within a page's builder content by query. | Page Builder | read | builderpageIdquerylimit | idle | view |
respira/find_elementwordpress_find_element Find an element within a page by ID, type, or admin label. | Page Builder | read | post_ididentifier_typeidentifier_valuematch_content | idle | view |
respira/get_builder_infowordpress_get_builder_info Get information about the active page builder including available modules/widgets. | Page Builder | read | — | idle | view |
respira/get_commentwordpress_get_comment Get comment details by ID. | Core | read | id | idle | view |
respira/get_core_web_vitalswordpress_get_core_web_vitals Get Core Web Vitals metrics (LCP, FID, CLS) for a page. | Core | read | pageId | idle | view |
respira/get_custom_postwordpress_get_custom_post Get custom post details. | Content | read | typeid | idle | view |
respira/get_mediawordpress_get_media Get single media item details. | Media | read | id | idle | view |
respira/get_menuwordpress_get_menu Get a navigation menu with all its items. Includes WPML translation info if available. | Menus | read | id | idle | view |
respira/get_menu_itemwordpress_get_menu_item Get a single menu item by ID. | Menus | read | item_id | idle | view |
respira/get_optionwordpress_get_option Get option value by name. | Core | read | option | idle | view |
respira/get_post_typewordpress_get_post_type Get post type details. | Content | read | type | idle | view |
respira/get_server_compatibilitywordpress_get_server_compatibility Check plugin/MCP server version compatibility. | Core | read | — | idle | view |
respira/get_site_contextwordpress_get_site_context Get comprehensive information about the WordPress site including version, theme, plugins, custom post types, and page builder. | Core | read | — | idle | view |
respira/get_snapshotwordpress_get_snapshot Get a snapshot by snapshot UUID. | Snapshots | read | snapshot_uuid | idle | view |
respira/get_taxonomywordpress_get_taxonomy Get taxonomy details. | Taxonomies | read | taxonomy | idle | view |
respira/get_termwordpress_get_term Get term details. | Taxonomies | read | taxonomyid | idle | view |
respira/get_theme_docswordpress_get_theme_docs Get theme documentation and available template files. | Core | read | — | idle | view |
respira/get_userwordpress_get_user Get user details by ID. | Users | read | id | idle | view |
respira/inject_builder_contentwordpress_inject_builder_content Inject structured content into a page builder. For Divi, diviVersion confirmation is required on every inject call ("4" or "5"). | Page Builder | write | builderpageIdcontentdiviVersion | idle | view |
respira/install_pluginwordpress_install_plugin Install a plugin from WordPress.org or a ZIP URL. Requires plugin management to be enabled in Respira settings. Use with caution. | Plugins | write | slugOrUrlsource | idle | view |
respira/list_commentswordpress_list_comments List all comments with optional filtering. | Core | read | statuspost_idpageperPage | idle | view |
respira/list_custom_postswordpress_list_custom_posts List posts of a custom post type. | Content | read | typestatussearchpage +1 | idle | view |
respira/list_mediawordpress_list_media List all media files (images, videos, etc.). | Media | read | searchpageperPage | idle | view |
respira/list_menu_itemswordpress_list_menu_items List all items in a menu with their hierarchy. | Menus | read | menu_id | idle | view |
respira/list_menu_locationswordpress_list_menu_locations List all registered menu locations and their assigned menus. | Menus | read | — | idle | view |
respira/list_menuswordpress_list_menus List all navigation menus. Includes WPML translation info if available. | Menus | read | — | idle | view |
respira/list_optionswordpress_list_options List WordPress options (with optional search filter). | Core | read | search | idle | view |
respira/list_pageswordpress_list_pages List all pages with optional filtering. | Content | read | statussearchpageperPage | idle | view |
respira/list_pluginswordpress_list_plugins List all installed plugins with their status, version, and update availability. Requires plugin management to be enabled in Respira settings. | Plugins | read | — | idle | view |
respira/list_post_typeswordpress_list_post_types List all registered post types. | Content | read | — | idle | view |
respira/list_postswordpress_list_posts List all blog posts with optional filtering. | Content | read | statussearchpageperPage | idle | view |
respira/list_snapshotswordpress_list_snapshots List v2 snapshots by post/post type/kind with cursor pagination. | Snapshots | read | post_idpost_typekindlimit +1 | idle | view |
respira/list_taxonomieswordpress_list_taxonomies List all registered taxonomies. | Core | read | — | idle | view |
respira/list_termswordpress_list_terms List terms in a taxonomy. | Taxonomies | read | taxonomysearchpageperPage | idle | view |
respira/list_userswordpress_list_users List all users with optional filtering by search term. | Users | read | searchpageperPage | idle | view |
respira/move_elementwordpress_move_element Move an element to a different container or position on a page. | Page Builder | write | post_idelement_id_typeelement_id_valuetarget_container_path +1 | idle | view |
respira/read_custom_post_v2wordpress_read_custom_post_v2 Read a custom post type entry using Respira v2 include-gated fidelity contract. | Content | read | typeidinclude | idle | view |
respira/read_pagewordpress_read_page Get full content of a specific page including meta data and builder information. | Content | read | id | idle | view |
respira/read_page_v2wordpress_read_page_v2 Read a page using Respira v2 include-gated fidelity contract. | Content | read | idinclude | idle | view |
respira/read_postwordpress_read_post Get full content of a specific post. | Content | read | id | idle | view |
respira/read_post_v2wordpress_read_post_v2 Read a post using Respira v2 include-gated fidelity contract. | Content | read | idinclude | idle | view |
respira/reject_duplicatewordpress_reject_duplicate Reject and permanently delete a Respira duplicate. Admin-only. | Core | read | duplicate_id | idle | view |
respira/remove_elementwordpress_remove_element Remove an element from a page. | Page Builder | write | post_ididentifier_typeidentifier_value | idle | view |
respira/reorder_elementswordpress_reorder_elements Reorder children within a container element. | Page Builder | write | post_idcontainer_pathnew_order | idle | view |
respira/restore_snapshotwordpress_restore_snapshot Restore post content/meta from a specific snapshot UUID. | Snapshots | write | snapshot_uuid | idle | view |
respira/search_stock_imageswordpress_search_stock_images Search Openverse for free stock images. | Media | read | querylicense_typesourceaspect_ratio +2 | idle | view |
respira/sideload_imagewordpress_sideload_image Download a stock image and add it to the WordPress Media Library. | Media | write | urltitlealtauthor +2 | idle | view |
respira/switch_sitewordpress_switch_site Switch to a different WordPress site (for multi-site setups). | Core | read | siteId | idle | view |
respira/update_commentwordpress_update_comment Update a comment. | Core | write | idcontentstatus | idle | view |
respira/update_custom_postwordpress_update_custom_post Update a custom post. Uses duplicate-first safety by default. Direct live edits require force=true + confirmLiveEdit=true and "Allow Direct Editing" enabled. Supports meta fields and custom CSS for Divi/Elementor builders. | Content | write | typeidtitlecontent +4 | idle | view |
respira/update_elementwordpress_update_element Update settings/content of a specific element on a page. | Page Builder | write | post_ididentifier_typeidentifier_valueupdates | idle | view |
respira/update_mediawordpress_update_media Update media metadata (title, alt text, caption). | Media | write | idtitlealtcaption | idle | view |
respira/update_menuwordpress_update_menu Update a navigation menu. | Menus | write | idnamedescription | idle | view |
respira/update_menu_itemwordpress_update_menu_item Update a menu item. | Menus | write | item_idtitleurlparent +4 | idle | view |
respira/update_modulewordpress_update_module Update a specific module within a page builder page. Supports finding modules by admin_label, path, or type. Only updates the specified module while preserving all other content. | Page Builder | write | builderpageIdmoduleIdentifierupdates | idle | view |
respira/update_optionwordpress_update_option Update an option value. | Core | write | optionvalue | idle | view |
respira/update_pagewordpress_update_page Update a page. ⚠️ SAFETY: Respira ALWAYS creates duplicates automatically before editing live pages. If you try to edit an original page, Respira will automatically create a duplicate and edit that instead. After editing, the user must approve the duplicate in WordPress admin (Respira → Approve Edits) to apply changes live. Direct live edits require force=true AND confirmLiveEdit=true, and only work if "Allow Direct Editing" is enabled. | Content | write | idtitlecontentstatus +4 | idle | view |
respira/update_pluginwordpress_update_plugin Update a plugin to the latest version. Requires plugin management to be enabled in Respira settings. Make sure you have backups before updating. | Plugins | write | slug | idle | view |
respira/update_postwordpress_update_post Update a post. ⚠️ SAFETY: Respira ALWAYS creates duplicates automatically before editing live posts. If you try to edit an original post, Respira will automatically create a duplicate and edit that instead. After editing, the user must approve the duplicate in WordPress admin (Respira → Approve Edits) to apply changes live. Direct live edits require force=true AND confirmLiveEdit=true, and only work if "Allow Direct Editing" is enabled. | Content | write | idtitlecontentstatus +4 | idle | view |
respira/update_termwordpress_update_term Update a term. | Taxonomies | write | taxonomyidnameslug +2 | idle | view |
respira/update_userwordpress_update_user Update user information. | Users | write | idemaildisplay_namepassword +1 | idle | view |
respira/upload_mediawordpress_upload_media Upload a media file (image, document, video) to WordPress. Supports base64 encoded files, file URLs, or file paths. | Media | write | filefilenamemimeTypetitle +2 | idle | view |
respira/validate_securitywordpress_validate_security Validate content for security issues before saving. | Core | read | content | idle | view |
respira/woocommerce_create_categorywoocommerce_create_category Create a WooCommerce product category. | E-commerce | read | nameslugdescriptionparent | idle | view |
respira/woocommerce_create_productwoocommerce_create_product Create a WooCommerce product. | E-commerce | read | nametyperegular_pricestatus +2 | idle | view |
respira/woocommerce_create_tagwoocommerce_create_tag Create a WooCommerce product tag. | E-commerce | read | nameslugdescription | idle | view |
respira/woocommerce_delete_categorywoocommerce_delete_category Delete a WooCommerce product category. | E-commerce | read | id | idle | view |
respira/woocommerce_delete_tagwoocommerce_delete_tag Delete a WooCommerce product tag. | E-commerce | read | id | idle | view |
respira/woocommerce_duplicate_productwoocommerce_duplicate_product Duplicate a WooCommerce product to a draft copy. | E-commerce | read | id | idle | view |
respira/woocommerce_get_categorywoocommerce_get_category Get detailed information for a single WooCommerce product category. | E-commerce | read | id | idle | view |
respira/woocommerce_get_orderwoocommerce_get_order Get detailed information for a single WooCommerce order. | E-commerce | read | id | idle | view |
respira/woocommerce_get_productwoocommerce_get_product Get detailed information for a single WooCommerce product. | E-commerce | read | id | idle | view |
respira/woocommerce_get_stock_statuswoocommerce_get_stock_status Get inventory overview with low-stock and out-of-stock counts. | E-commerce | read | — | idle | view |
respira/woocommerce_get_tagwoocommerce_get_tag Get detailed information for a single WooCommerce product tag. | E-commerce | read | id | idle | view |
respira/woocommerce_list_categorieswoocommerce_list_categories List WooCommerce product categories. | E-commerce | read | searchparenthide_emptyper_page +1 | idle | view |
respira/woocommerce_list_orderswoocommerce_list_orders List WooCommerce orders. | E-commerce | read | statusper_pagepage | idle | view |
respira/woocommerce_list_productswoocommerce_list_products List WooCommerce products with status/search/pagination filters. | E-commerce | read | statussearchper_pagepage | idle | view |
respira/woocommerce_list_tagswoocommerce_list_tags List WooCommerce product tags. | E-commerce | read | searchhide_emptyper_pagepage | idle | view |
respira/woocommerce_sales_reportwoocommerce_sales_report Get WooCommerce sales report for week/month/year/custom range. | E-commerce | read | perioddate_mindate_max | idle | view |
respira/woocommerce_update_categorywoocommerce_update_category Update a WooCommerce product category. | E-commerce | read | idnameslugdescription +1 | idle | view |
respira/woocommerce_update_order_statuswoocommerce_update_order_status Update WooCommerce order status. | E-commerce | read | idstatus | idle | view |
respira/woocommerce_update_productwoocommerce_update_product Update an existing WooCommerce product. | E-commerce | read | idnameregular_pricesale_price +4 | idle | view |
respira/woocommerce_update_stockwoocommerce_update_stock Update stock quantity or stock status for a product. | E-commerce | read | idstock_quantitystock_status | idle | view |
respira/woocommerce_update_tagwoocommerce_update_tag Update a WooCommerce product tag. | E-commerce | read | idnameslugdescription | idle | view |
woocommerce/list-productsList Products Return WooCommerce products with pagination and filters. | E-commerce | read | statuspageper_pagesearch | idle | view |
woocommerce/update-productUpdate Product Patch a WooCommerce product's price, stock, status or content. | E-commerce | write | product_idpricestock_quantitystatus +1 | idle | view |
wordpress-seo/analyze-postAnalyze Post Run Yoast's SEO and readability analysis on a post and return scores and recommendations. | SEO | read | post_id | idle | view |
wordpress-seo/update-metaUpdate SEO Meta Patch SEO meta title, description, focus keyphrase for a post. | SEO | write | post_idmeta_titlemeta_descriptionfocus_keyphrase | idle | view |
Quality columns reflect 30-day metrics from Respira's MCP telemetry. Rows that show idle haven't accumulated enough calls for a stable signal yet. Data is sampled across all sites running Respira; no per-user data is exposed.
Adopters · May 2026
Sorted by active install count. Each row links to the plugin's own canonical source
so you can verify the wp_register_ability call yourself. Categories are
curated. Adoption is moving fast; this list refreshes manually as new releases land.
Page Builder
Elementor ships an MCP module that exposes editor + widget operations. Respira layers snapshot-before-write protection on top via the Inhale gateway.
SEO
Yoast SEO registers abilities for content analysis and SEO suggestions through wp_register_ability.
E-commerce
WooCommerce exposes a store/product/order ability registry. Respira also ships a dedicated WooCommerce add-on with snapshot-aware product writes.
Suite
Jetpack ships abilities for Shortlinks and Jetpack Forms. Respira treats each as a callable MCP tool through the Inhale gateway.
Custom Fields
ACF exposes field group read + edit abilities. Respira ships a dedicated ACF integration that builds on top.
Conversational
Joinchat registers abilities for WhatsApp button configuration.
Analytics
Burst exposes analytics query abilities for privacy-first traffic reporting.
Bookings
LatePoint exposes appointment and booking abilities.
Page Builder · Elementor
Per-widget abilities for the Plus Addons widget suite (featured image, etc.).
Compliance
Cookiebot exposes consent + scanner abilities.
Bookings
Amelia exposes appointment / service abilities through the mcp-adapter package.
Custom Fields
SCF (the ACF community fork) exposes field operations.
LMS
LearnPress exposes course, lesson, and quiz abilities.
Security
Shield exposes scan + firewall abilities.
Multi-site
MainWP exposes multi-site dashboard operations.
Block Library
Per-block abilities for the Nexter block suite.
Social
Tweet box settings exposed via wp_register_ability.
LMS
Course + quiz abilities for the Masteriyo LMS.
For agents · For users teaching agents
The directory itself is open to any agent today via a CORS-open JSON endpoint. Respira's v7.1 release adds an MCP-native search tool on top that knows whether each ability is installed and inhaled on the agent's current site, so the agent can call it directly with one tool. Both paths cover the same 163 abilities.
Option 1 · Pure HTTP, works today
The directory ships as a CORS-open JSON endpoint. Any agent on any platform can read it without parsing HTML, without auth, without MCP.
GET https://www.respira.press/abilities/data.json
Content-Type: application/json
Access-Control-Allow-Origin: * Also discoverable via /llms.txt
Option 2 · MCP-native · Coming in Respira v7.1
When Respira v7.1 ships, every agent connected to Respira gets a tool called
wordpress_search_abilities that searches the
same directory and enriches each result with per-site flags: is the plugin
installed, is the ability inhaled, what is the install URL if not. The agent
then calls the ability via
wordpress_invoke_ability with Respira's
snapshot-before-write safety wrap layered on top.
Option 3 · Drop into your agent's system prompt
Tells your agent to fetch the directory directly. Works today against any agent that can make HTTP requests, regardless of whether you have Respira installed.
You have access to the WordPress Abilities API directory at:
https://www.respira.press/abilities/data.json
Fetch this JSON whenever the user asks "is there a WordPress ability / plugin that does X"
or "how do i automate Y on WordPress". The directory enumerates 163 abilities
across Elementor, Yoast SEO, WooCommerce, Jetpack, ACF, Akismet, and 150+ Respira tools.
Each result includes:
- ability_name, plugin_name, plugin_slug, category, label, description
- is_write (whether it mutates the site)
- input_schema_keys (the args the ability accepts)
- is_installed (is the plugin active on the current site)
- is_inhaled (has the admin opted the ability into Respira's MCP surface)
- install_url (wp.org page when not installed)
- inhale_admin_url (Respira admin tab when installed but not inhaled)
- how_to_invoke (the exact next tool call when ready)
Reading the directory tells you which plugins expose which abilities. You then guide the user
to install or activate the plugin they need, or to use a tool they already have.
If the user has Respira v7.1 installed, an MCP-native search tool will be available with
per-site context (is_installed, is_inhaled, install_url, inhale_admin_url, how_to_invoke).
Until then, the JSON above is the canonical source. For plugin developers
You don't need a custom MCP integration. The WordPress Abilities API is the canonical surface; once your plugin registers an ability, every MCP-aware site (including every site running Respira) can call it.
1
The WordPress/mcp-adapter package is the active
implementation of the Abilities API. There's also a packaged plugin at
wordpress.org/plugins/mcp-adapter for sites
that want it as a standalone install. WordPress 6.9+ ships the function
wp_register_ability in core.
2
Call wp_register_ability with a namespace, an ability name, a
description, an args schema, and an execute callback. Weston Ruter's
April 2026 walkthrough remains the cleanest reference
implementation.
add_action( 'wp_abilities_api_init', function () {
wp_register_ability( 'my-plugin/get-thing', array(
'label' => 'Get Thing',
'description' => 'Returns the current value of Thing.',
'input_schema' => array( /* JSON Schema */ ),
'output_schema' => array( /* JSON Schema */ ),
'execute_callback' => function ( $args ) {
return array( 'thing' => get_option( 'my_plugin_thing' ) );
},
) );
} ); 3
Install Respira on a test site, open Respira › MCP Abilities, and toggle your ability on. Connect Claude Code or any MCP-capable agent. The ability is now a callable tool with snapshot-before-write protection layered on top — the ability's own behaviour is unchanged.
Optional · For Respira add-ons
The Respira Add-on SDK is a thin wrapper over
wp_register_ability that handles the boilerplate (validation, error
envelopes, per-tool risk_level) and adds Respira-specific conveniences (governance gate,
first-class audit log integration, the approval queue for risky writes). You write a
ToolDescriptor; the SDK calls wp_register_ability for you. Same
underlying standard, less boilerplate.
Inhale · The Respira gateway
Inhale is the small surface inside Respira that lets admins opt third-party abilities into the MCP server's public catalogue. Every inhaled ability runs through Respira's safety wrapper: snapshot before any write, structured error envelopes on failure, audit-log entry for every call, per-tool wall-clock budget, and a one-click rollback URL in the response when a snapshot was captured.
That's the unique sell of running Respira's MCP server in front of the Abilities API: you get every plugin's abilities plus the safety net Respira built for its own tools. The cap on inhaled abilities (default 30) keeps the agent context window tight enough that tool selection stays accurate.
New in 7.1 · Connect by link
The abilities your site exposes can now be reached by a remote web client over a link. Connect Claude or ChatGPT to the abilities your site exposes with a link and a key, nothing to install. It works from the web or your phone, and every call still runs through the same Inhale safety wrapper: snapshot before any write, structured errors, and an audit-log entry.
For maintainers
If you've shipped wp_register_ability in your canonical source and aren't
listed here, that's a curation gap, not a rejection. The list is hand-audited from
GitHub code search every few weeks. Open an issue on the
Respira Add-on SDK repo with the source link and we'll
add you on the next pass. If you'd like to discuss your design before publishing,
questions there are also welcome.