Create a new blog post as a draft with title and metadata only. Body content is NOT writable through this action because direct post_content writes do not render correctly on page-builder sites (Elementor, Divi, Beaver, etc. store layout in post_meta). To add body content after creation, use wordpress.update_page_text once the post exists, or compose the post in the WP admin.
Content Create
medium
create_page
Create Page (Metadata Only)
Create a new page as a draft with title and metadata only. Body content is NOT writable through this action because direct post_content writes do not render correctly on page-builder sites (Elementor, Divi, Beaver, etc. store layout in post_meta). To add body content after creation, use wordpress.update_page_text once the page exists, or compose the page in the WP admin.
Content Create
medium
create_category
Create Category
Create a new post category.
Content Create
low
create_tag
Create Tag
Create a new post tag.
Content Create
low
upload_media
Upload Media
Upload an image or file to the WordPress media library from a URL or base64 data.
Content Create
medium
Content Delete (7)
delete_post
Delete Post
Permanently delete a post.
Content Delete
high
—
delete_page
Delete Page
Permanently delete a page.
Content Delete
high
—
delete_comment
Delete Comment
Permanently delete a comment.
Content Delete
medium
—
remove_pricing_tier
Remove Pricing Tier
Remove a single pricing tier from a page by id. Delegates to bridge_delete_block under the hood — included as a named action so the AI surface is symmetric (add / update / remove). Requires Keva Bridge plugin.
Content Delete
medium
remove_faq_item
Remove FAQ Item
Remove a single FAQ item. Gutenberg: deletes the core/details block by id. Elementor: faq_id is composite "{widget_id}:{tab_id}" — reads current tabs, filters out the matching one, patches widget settings. To remove the entire accordion widget itself on Elementor, use bridge_delete_block with the widget id directly. Bridge required.
Content Delete
medium
remove_testimonial
Remove Testimonial
Delete a testimonial by id. Delegates to bridge_delete_block under the hood — included as a named action for AI-surface symmetry (add / update / remove). Bridge required.
Content Delete
medium
remove_section
Remove Section
Delete a top-level section from a page by id. Verifies the id IS a root-level child first (so the AI doesn't accidentally remove a column, widget, or nested block via this action — for non-root removals use bridge_delete_block directly). Snapshot-based rollback: the full pre-delete page tree is captured in previousState. Requires Keva Bridge. Gutenberg + Elementor only; other engines return engine_not_supported.
Content Delete
high
Content Read (24)
list_posts
List Posts
List blog posts, optionally filtered by search term or status.
Content Read
low
—
get_post
Get Post
Get the current content and metadata of a specific post.
Content Read
low
—
list_pages
List Pages
List pages, optionally filtered by search term or status.
Content Read
low
—
get_page
Get Page
Get the current content and metadata of a specific page.
Content Read
low
—
list_comments
List Comments
List comments, optionally filtered by post or status.
Content Read
low
—
list_media
List Media
List media library items.
Content Read
low
—
list_categories
List Categories
List post categories.
Content Read
low
—
list_tags
List Tags
List post tags.
Content Read
low
—
search_posts
Search Posts
Search blog posts by keyword.
Content Read
low
—
search_pages
Search Pages
Search pages by keyword.
Content Read
low
—
search_comments
Search Comments
Search comments by keyword.
Content Read
low
—
list_post_revisions
List Post Revisions
List all revisions of a specific post.
Content Read
low
—
get_post_revision
Get Post Revision
Get a specific revision of a post.
Content Read
low
—
list_taxonomies
List Taxonomies
List all registered taxonomies (categories, tags, custom taxonomies).
Content Read
low
—
list_post_types
List Post Types
List all registered post types (post, page, custom post types).
Content Read
low
—
get_media
Get Media
Get details of a specific media library item including title, source URL, mime type, and media details.
Content Read
low
—
detect_page_builder
Detect Page Builder
Detect which page builder (Gutenberg, Elementor, WPBakery, Divi, Avada, Beaver Builder, Bricks, Breakdance, or Classic) a page or post uses.
Content Read
low
—
find_text_on_page
Find Text on Page
Search for text across any page builder content. Detects the builder automatically and returns matching elements with their locations.
Content Read
low
—
bridge_diagnostics
Bridge Diagnostics
Probe the Keva Bridge plugin on a WordPress site. Returns Bridge version, available engines (Gutenberg / Elementor / Classic), detected page builders, and active cache plugins. Use this to verify Bridge is installed and to decide whether to prefer bridge_* actions over the legacy update_page_text path.
Content Read
low
—
bridge_read_page
Bridge: Read Page
Read a page through Keva Bridge. Returns the engine discriminator (gutenberg | elementor | classic), the full content tree (parsed blocks for Gutenberg, decoded _elementor_data for Elementor, raw HTML for Classic), plus a writable flag indicating whether Bridge can edit this page.
Content Read
low
—
bridge_read_structure
Bridge: Read Structure
Compact view of a page through Keva Bridge: IDs + element types + a short hint of visible text. Cheaper than bridge_read_page when the AI just needs to find an element by hint to target a write op.
Content Read
low
—
list_regions
Bridge: List Keva-Managed Regions
List all [keva-region] regions discovered across the site. Each entry includes the region id, the post it lives on, current value (or null if untouched), default content, lock state, type (text/html/image/list), and version. Use this to discover what regions the site owner has marked as AI-editable before calling set_region. Optional status filter: "active" (default) | "orphaned" (shortcode removed but value retained) | "all".
Content Read
low
get_region
Bridge: Get Keva-Managed Region
Fetch a single [keva-region] by ID. Returns current value, default, lock state, version, full change history, and (if the same region id appears on multiple posts) a duplicates list. Always call this immediately before set_region so you can pass the correct expected_version for optimistic concurrency.
Content Read
low
find_images_on_page
Find Images on Page
List all image elements that appear in the content of a page (or post). Returns normalized entries with element_id, element_type ("gutenberg:core/image" | "elementor:image" | etc.), current url, alt text, and media library ID where known. Pass each element_id back to update_page_image to swap that specific image. Featured image is included as element_id="featured" unless include_featured=false. With Keva Bridge installed: works on every supported builder. Without Bridge: returns synthetic "img:N" IDs scraped from the rendered HTML (classic-editor pages only).
Content Read
low
Content Update (10)
update_post
Update Post (Metadata Only)
Update the title or status of an existing post. Does NOT update body content — for content edits use wordpress.update_page_text (find/replace) or wordpress.remove_page_element. Those actions are page-builder aware and work on Elementor, Gutenberg, Divi, Beaver Builder, Bricks, Breakdance, WPBakery, Avada, and classic posts. Writing post_content directly bypasses page builders and produces an invisible no-op on builder-rendered pages.
Content Update
medium
update_page
Update Page (Metadata Only)
Update the title or status of an existing page. Does NOT update body content — for content edits use wordpress.update_page_text (find/replace) or wordpress.remove_page_element. Those actions are page-builder aware and work on Elementor, Gutenberg, Divi, Beaver Builder, Bricks, Breakdance, WPBakery, Avada, and classic pages. Writing post_content directly bypasses page builders and produces an invisible no-op on builder-rendered pages.
Content Update
medium
update_comment
Moderate Comment
Update the status or content of a comment (approve, spam, trash).
Content Update
medium
restore_post_revision
Restore Post Revision
Restore a post to a previous revision by copying the revision content back to the post.
Content Update
medium
update_media
Update Media
Update metadata (alt text, caption, description, title) of an existing media item.
Content Update
medium
set_featured_image
Set Featured Image
Set or remove the featured image on a post or page.
Content Update
medium
update_page_image
Update Page Image
Swap one image that appears on a page (hero image, team photo, etc.) by element_id. Call find_images_on_page first to discover the element_id. Pass EITHER media_id (preferred — the connector resolves the canonical URL + alt from the WP media library) OR a raw url (advanced — bypasses the library, use only for CDN-hosted assets). DIFFERENT from update_media (which only changes library metadata) and set_featured_image (which sets the post thumbnail). Bridge required for builder pages (Elementor / WPBakery / Divi / Beaver / Bricks / Oxygen / Brizy / Cwicly); classic-editor pages with synthetic "img:N" IDs use a regex HTML rewrite (best-effort). If you see element_not_found (404) after a successful find_images_on_page, the page was edited concurrently — re-discover and retry.
Content Update
medium
update_pricing_tier
Update Pricing Tier
Update an existing pricing tier on a page. In v0.1 this uses a delete-and-re-add pattern (the old tier is removed and a new one with the updated fields is added in its place) — the returned tier_id will differ from the input. To change only text within an existing tier without changing its id, use bridge_replace_text. Requires Keva Bridge plugin. Gutenberg + Elementor only. Use get_page / bridge_read_structure first to discover the tier_id.
Content Update
medium
update_faq_item
Update FAQ Item
Update an existing FAQ item. Gutenberg: faq_id is a core/details block id — patches attrs.summary for question changes. For answer-text changes use bridge_replace_text (the answer lives in a child core/paragraph block which v0.1 does not patch directly — a future Bridge release will support nested innerBlocks patches). Elementor: faq_id is "{accordion_widget_id}:{tab_id}" — reads current tabs, replaces the matching tab in place, patches the widget settings. Bridge required.
Content Update
medium
update_testimonial
Update Testimonial
Update an existing testimonial. Gutenberg: testimonial_id is the core/quote block id — patches attrs.citation for attribution changes (quote-text changes are not supported in v0.1 because the quote lives in a nested paragraph block; use bridge_replace_text for that). Elementor: patches the testimonial widget settings with whatever subset of fields the caller provides (quote → testimonial_content; author_name → testimonial_name; author_role → testimonial_job; attribution → split into name/role if individual fields not supplied). Bridge shallow-merges the settings so untouched fields stay intact.
Content Update
medium
Content Write (15)
create_comment
Create Comment
Create a comment on a WordPress post.
Content Write
medium
update_page_text
Update Page Text (Builder-Aware)
PREFERRED action for editing page/post body content. Performs a find-and-replace on text regardless of which page builder is used — detects Gutenberg blocks, Elementor JSON in post_meta, shortcode-based builders (WPBakery, Divi, Avada), Beaver Builder, Bricks, Breakdance, and classic content automatically, then writes back through the correct storage layer so the change actually renders. Use this for any "change X to Y" or "fix this wording" task. Pair with wordpress.find_text_on_page first if you do not know the exact existing text.
Content Write
medium
remove_page_element
Remove Page Element
Remove page builder elements (sections, widgets, blocks) that contain specific text. Works across all supported builders.
Content Write
high
bridge_replace_text
Bridge: Replace Text
Find/replace text on a page through Keva Bridge. Engine-aware: edits Gutenberg block innerHTML or Elementor widget settings in place, then triggers the right cache invalidation (Elementor CSS, per-post cache, sitewide post cache, keva/after_content_update hook). Same surface area as wordpress.update_page_text but with verified writes and correct Elementor handling.
Content Write
medium
—
bridge_append_block
Bridge: Append Block
Append a new block (Gutenberg) or element (Elementor) to a page. Use this to add a paragraph, heading, image, or section without naive post_content concatenation. Without target_id, the block goes to the end of the page; with target_id, it nests inside the matching container. Solves the "append a sentence" gap from PR-1.
Content Write
medium
—
bridge_append_text
Bridge: Append Text Paragraph
Token-saver wrapper around bridge_append_block for the most common case: appending a paragraph of text to a page. Pass post_id and text; the connector picks the right block shape automatically based on the page engine (core/paragraph for Gutenberg, text-editor widget for Elementor). HTML in the text is escaped — pass HTML through bridge_append_block if raw markup is needed.
Content Write
medium
—
bridge_update_block
Bridge: Update Block
PATCH-style update of a single block/element by ID. Use bridge_read_structure first to find the target ID. For Gutenberg, replaces attrs + innerHTML. For Elementor, shallow-merges into element.settings. Leaf blocks/widgets only — use bridge_replace_text for find/replace across the page.
Content Write
medium
—
bridge_delete_block
Bridge: Delete Block
Remove a single block/element by ID. Use bridge_read_structure to find the target ID first. Returns 404 if the ID is no longer in the tree (e.g. someone else already removed it).
Content Write
high
—
set_region
Bridge: Update Keva-Managed Region
Set a [keva-region]'s current value. PREFERRED over update_page_text when the target is a known region id — works on ANY page builder. Pass expected_version (from a recent get_region) for optimistic concurrency — the write fails with version_conflict (409) if the stored version has advanced. Regions declared with lock="true" require human_approved: true after the human-approval flow. When the same region id exists on multiple posts, pass post_id explicitly or the call returns ambiguous_region (400).
Content Write
medium
add_pricing_tier
Add Pricing Tier
Append a new pricing tier to a page (e.g. "Add a Pro tier at $29/mo with 5 features and a Sign up button"). On Gutenberg, builds a core/column with heading + price + feature-list + button and appends it into target_id (an existing core/columns block) — when target_id is omitted, creates a fresh core/columns row at the end of the page with the new tier inside. On Elementor (free pattern, works without Pro), builds an Elementor column with heading + heading + icon-list + button widgets — appends into target_id (an existing section) or wraps in a new section. Requires Keva Bridge plugin (BRIDGE_NOT_CONFIGURED returned otherwise). For builders other than Gutenberg/Elementor, returns a graceful error pointing at bridge_append_block. Returns the new tier_id which you can pass to remove_pricing_tier / update_pricing_tier later.
Content Write
medium
add_faq_item
Add FAQ Item
Add a single question/answer to a page. On Gutenberg: appends one core/details block (each FAQ is its own block — uses WP 6.3+ native accordion primitive). On Elementor: when target_id points at an existing accordion widget, appends a new tab into its tabs[] array (read-modify-write the widget settings). When target_id is omitted on Elementor, creates a fresh accordion widget with one starter tab. Requires Keva Bridge. Other 7 builders return WIDGET_PATTERN_UNSUPPORTED.
Content Write
medium
add_testimonial
Add Testimonial
Append a testimonial to a page. Gutenberg: builds a core/quote block (quote → child paragraph; attribution → citation attr). Elementor: builds a testimonial widget (testimonial_content / testimonial_name / testimonial_job). The attribution string is preferred — when provided it overrides separate author_name/author_role on Gutenberg; on Elementor the discrete fields drive the widget settings and are populated from attribution (split on the first comma) when not supplied. Requires Keva Bridge.
Content Write
medium
add_section
Add Section
Append an empty top-level section to the end of a page. The connector picks the engine-correct empty container shape (core/group with constrained layout on Gutenberg; elType:container or section on Elementor). Returns the new section_id which you can pass to subsequent bridge_append_block / bridge_append_text / widget actions (add_pricing_tier, add_faq_item, add_testimonial) to fill the section. Use this when the AI wants a fresh wrapper to drop new content into rather than crafting the engine-specific JSON by hand. Requires Keva Bridge (no new PHP endpoint — uses /append-block). For engines other than Gutenberg/Elementor, returns engine_not_supported.
Content Write
high
duplicate_section
Duplicate Section
Deep-clone a section by id and insert the clone immediately after the source. For Elementor, every nested element id is regenerated server-side to a fresh 8-hex (sharing ids breaks Elementor's editor). For Gutenberg the clone gets a fresh deterministic blk_xxxxxxxx id derived from its post-splice path. Atomic single save_post. Returns the new duplicated_id which you can pass to subsequent update_section calls to vary the cloned content. Requires Keva Bridge ≥0.7.0. Gutenberg + Elementor only; other engines return engine_not_supported.
Content Write
high
reorder_sections
Reorder Sections
Atomically reorder top-level sections (or, when parent_id is supplied, the children of a specific container) to match ordered_ids. The ordered_ids array MUST be a permutation of the current root-level ids — if it isn't the call returns invalid_order with the actual current ids embedded in the error so the AI can re-read + retry. Single save_post per call (no partial-state risk). Requires Keva Bridge ≥0.7.0. Gutenberg + Elementor only; other engines return engine_not_supported.
Content Write
high
Coupon Write (1)
delete_coupon
Delete Coupon
Permanently delete a WooCommerce coupon.
Coupon Write
medium
—
Customer Write (1)
wc_update_customer
Update Customer
Update a WooCommerce customer (name, email, billing/shipping).
Customer Write
medium
Infrastructure Read (10)
list_plugins
List Plugins
List installed plugins with status, version, and other metadata.
Infrastructure Read
low
—
get_plugin
Get Plugin
Get details of a specific installed plugin.
Infrastructure Read
low
—
list_themes
List Themes
List installed themes with status and metadata.
Infrastructure Read
low
—
get_theme
Get Theme
Get details of a specific installed theme.
Infrastructure Read
low
—
get_system_status
Get System Status
Get WooCommerce system status including WP version, PHP version, DB info, active plugins, and theme info.
Infrastructure Read
low
—
list_application_passwords
List Application Passwords
List application passwords for a user. Returns names and creation dates (not actual passwords). Useful for auditing API access.
Infrastructure Read
low
—
get_site_settings
Get Site Settings
Get WordPress site settings including title, description, URL, timezone, date/time format, and language.
Infrastructure Read
low
—
get_global_styles
Get Site Global Styles
Read the active theme's site-wide design tokens (theme.json). For block themes, returns the merged settings + styles (palette, fontFamilies, default typography, per-element overrides) along with is_block_theme:true and the global_styles_id used by subsequent updates. For classic themes, returns is_block_theme:false plus the small subset of color settings exposed via /wp/v2/settings — most classic-theme customizer mods are not yet AI-editable (planned for PR-10.1 with Bridge).
Infrastructure Read
low
get_brand_colors
Get Brand Color Palette
Convenience read: returns just the named color palette declared by the active theme. Each entry has { slug, name, color }. Use the slug as the target for update_brand_color. On classic themes, returns a small derived palette built from the WordPress site settings (background_color, header_textcolor).
Infrastructure Read
low
list_font_families
List Font Families
Convenience read: returns the font families declared by the active block theme. Each entry has { slug, name, fontFamily }. Use the slug as the target for update_font_family. Returns unsupported_classic_theme on classic themes — font-family editing for classic themes requires Bridge (planned for PR-10.1).
Infrastructure Read
low
Infrastructure Write (2)
activate_plugin
Activate Plugin
Activate an installed WordPress plugin.
Infrastructure Write
medium
deactivate_plugin
Deactivate Plugin
Deactivate an active WordPress plugin.
Infrastructure Write
medium
Order Read (2)
wc_list_order_notes
List Order Notes
List notes on a WooCommerce order.
Order Read
low
—
wc_list_order_refunds
List Order Refunds
List refunds for a WooCommerce order.
Order Read
low
—
Product Read (8)
wc_list_products
List Products
List WooCommerce products.
Product Read
low
—
wc_get_product
Get Product
Get details of a specific WooCommerce product.
Product Read
low
—
list_product_categories
List Product Categories
List WooCommerce product categories.
Product Read
low
—
list_product_reviews
List Product Reviews
List WooCommerce product reviews, optionally filtered by product.
Product Read
low
—
wc_list_product_variations
List Product Variations
List variations of a variable WooCommerce product.
Product Read
low
—
wc_get_product_variation
Get Product Variation
Get a specific variation of a WooCommerce product.
Product Read
low
—
wc_get_product_review
Get Product Review
Get a specific WooCommerce product review.
Product Read
low
—
wc_list_product_tags
List Product Tags
List WooCommerce product tags.
Product Read
low
—
Product Update (2)
wc_update_product
Update Product
Update a WooCommerce product (name, price, stock, status, etc.).
Product Update
medium
update_product_category
Update Product Category
Update a WooCommerce product category (name, description, display, parent).
Product Update
medium
Product Write (7)
delete_product_review
Delete Product Review
Permanently delete a WooCommerce product review.
Product Write
high
—
wc_create_product
Create Product
Create a new WooCommerce product.
Product Write
medium
wc_delete_product
Delete Product
Permanently delete a WooCommerce product.
Product Write
high
—
wc_update_product_variation
Update Product Variation
Update a WooCommerce product variation (price, stock, SKU).
Product Write
medium
wc_create_product_variation
Create Product Variation
Create a new variation for a variable WooCommerce product.
Product Write
medium
wc_update_product_review
Update Product Review
Update a WooCommerce product review (status, content).
Product Write
medium
wc_create_product_tag
Create Product Tag
Create a WooCommerce product tag.
Product Write
low
Settings Change (2)
update_brand_color
Update Brand Color
Change one named color in the active theme's palette by slug (e.g. "primary", "secondary", "accent"). Affects every block, button, link, and element that references this slug via var(--wp--preset--color--<slug>). Call get_brand_colors first to discover valid slugs. Returns { slug, previous, current } for audit/rollback. Block themes only — classic themes return unsupported_classic_theme (planned for PR-10.1 with Bridge).
Settings Change
medium
update_font_family
Update Font Family
Change the font family used by a given element slot (body, heading, h1..h6, button, caption, link). The new font_family_slug must already exist in the theme's declared fontFamilies (use list_font_families to discover them). The slot is updated to var(--wp--preset--font-family--<slug>). Block themes only — classic themes return unsupported_classic_theme.
Settings Change
medium
User Management (4)
list_users
List Users
List WordPress users.
User Management
low
—
wc_list_customers
List Customers
List WooCommerce customers.
User Management
low
—
wc_get_customer
Get Customer
Get details of a specific WooCommerce customer.
User Management
low
—
get_user
Get User
Get details of a specific WordPress user including name, email, and roles.
User Management
low
—
User Write (1)
update_user
Update User
Update a WordPress user (name, email, role).
User Write
high
Billing Read
wc_list_orderslow
List Orders
List WooCommerce orders, optionally filtered by status.
Billing Read
wc_get_orderlow
Get Order
Get details of a specific WooCommerce order.
Billing Read
wc_list_couponslow
List Coupons
List WooCommerce coupons.
Billing Read
get_refundlow
Get Refund
Get details of a specific refund on a WooCommerce order.
Billing Read
get_couponlow
Get Coupon
Get details of a specific WooCommerce coupon.
Billing Read
list_payment_gatewayslow
List Payment Gateways
List configured WooCommerce payment gateways with their status and settings.
Billing Read
list_shipping_zoneslow
List Shipping Zones
List configured WooCommerce shipping zones.
Billing Read
Billing Write
wc_update_order_statushigh
Update Order Status
Change the status of a WooCommerce order.
Billing WriteReversible
wc_add_order_notelow
Add Order Note
Add a note to a WooCommerce order.
Billing Write
wc_create_couponmedium
Create Coupon
Create a new WooCommerce discount coupon.
Billing WriteReversible
create_refundhigh
Create Refund
Create a refund for a WooCommerce order. Can optionally attempt a payment gateway refund.
Create a new blog post as a draft with title and metadata only. Body content is NOT writable through this action because direct post_content writes do not render correctly on page-builder sites (Elementor, Divi, Beaver, etc. store layout in post_meta). To add body content after creation, use wordpress.update_page_text once the post exists, or compose the post in the WP admin.
Content CreateReversible
create_pagemedium
Create Page (Metadata Only)
Create a new page as a draft with title and metadata only. Body content is NOT writable through this action because direct post_content writes do not render correctly on page-builder sites (Elementor, Divi, Beaver, etc. store layout in post_meta). To add body content after creation, use wordpress.update_page_text once the page exists, or compose the page in the WP admin.
Content CreateReversible
create_categorylow
Create Category
Create a new post category.
Content CreateReversible
create_taglow
Create Tag
Create a new post tag.
Content CreateReversible
upload_mediamedium
Upload Media
Upload an image or file to the WordPress media library from a URL or base64 data.
Content CreateReversible
Content Delete
delete_posthigh
Delete Post
Permanently delete a post.
Content Delete
delete_pagehigh
Delete Page
Permanently delete a page.
Content Delete
delete_commentmedium
Delete Comment
Permanently delete a comment.
Content Delete
remove_pricing_tiermedium
Remove Pricing Tier
Remove a single pricing tier from a page by id. Delegates to bridge_delete_block under the hood — included as a named action so the AI surface is symmetric (add / update / remove). Requires Keva Bridge plugin.
Content DeleteReversible
remove_faq_itemmedium
Remove FAQ Item
Remove a single FAQ item. Gutenberg: deletes the core/details block by id. Elementor: faq_id is composite "{widget_id}:{tab_id}" — reads current tabs, filters out the matching one, patches widget settings. To remove the entire accordion widget itself on Elementor, use bridge_delete_block with the widget id directly. Bridge required.
Content DeleteReversible
remove_testimonialmedium
Remove Testimonial
Delete a testimonial by id. Delegates to bridge_delete_block under the hood — included as a named action for AI-surface symmetry (add / update / remove). Bridge required.
Content DeleteReversible
remove_sectionhigh
Remove Section
Delete a top-level section from a page by id. Verifies the id IS a root-level child first (so the AI doesn't accidentally remove a column, widget, or nested block via this action — for non-root removals use bridge_delete_block directly). Snapshot-based rollback: the full pre-delete page tree is captured in previousState. Requires Keva Bridge. Gutenberg + Elementor only; other engines return engine_not_supported.
Content DeleteReversible
Content Read
list_postslow
List Posts
List blog posts, optionally filtered by search term or status.
Content Read
get_postlow
Get Post
Get the current content and metadata of a specific post.
Content Read
list_pageslow
List Pages
List pages, optionally filtered by search term or status.
Content Read
get_pagelow
Get Page
Get the current content and metadata of a specific page.
Content Read
list_commentslow
List Comments
List comments, optionally filtered by post or status.
Content Read
list_medialow
List Media
List media library items.
Content Read
list_categorieslow
List Categories
List post categories.
Content Read
list_tagslow
List Tags
List post tags.
Content Read
search_postslow
Search Posts
Search blog posts by keyword.
Content Read
search_pageslow
Search Pages
Search pages by keyword.
Content Read
search_commentslow
Search Comments
Search comments by keyword.
Content Read
list_post_revisionslow
List Post Revisions
List all revisions of a specific post.
Content Read
get_post_revisionlow
Get Post Revision
Get a specific revision of a post.
Content Read
list_taxonomieslow
List Taxonomies
List all registered taxonomies (categories, tags, custom taxonomies).
Content Read
list_post_typeslow
List Post Types
List all registered post types (post, page, custom post types).
Content Read
get_medialow
Get Media
Get details of a specific media library item including title, source URL, mime type, and media details.
Content Read
detect_page_builderlow
Detect Page Builder
Detect which page builder (Gutenberg, Elementor, WPBakery, Divi, Avada, Beaver Builder, Bricks, Breakdance, or Classic) a page or post uses.
Content Read
find_text_on_pagelow
Find Text on Page
Search for text across any page builder content. Detects the builder automatically and returns matching elements with their locations.
Content Read
bridge_diagnosticslow
Bridge Diagnostics
Probe the Keva Bridge plugin on a WordPress site. Returns Bridge version, available engines (Gutenberg / Elementor / Classic), detected page builders, and active cache plugins. Use this to verify Bridge is installed and to decide whether to prefer bridge_* actions over the legacy update_page_text path.
Content Read
bridge_read_pagelow
Bridge: Read Page
Read a page through Keva Bridge. Returns the engine discriminator (gutenberg | elementor | classic), the full content tree (parsed blocks for Gutenberg, decoded _elementor_data for Elementor, raw HTML for Classic), plus a writable flag indicating whether Bridge can edit this page.
Content Read
bridge_read_structurelow
Bridge: Read Structure
Compact view of a page through Keva Bridge: IDs + element types + a short hint of visible text. Cheaper than bridge_read_page when the AI just needs to find an element by hint to target a write op.
Content Read
list_regionslow
Bridge: List Keva-Managed Regions
List all [keva-region] regions discovered across the site. Each entry includes the region id, the post it lives on, current value (or null if untouched), default content, lock state, type (text/html/image/list), and version. Use this to discover what regions the site owner has marked as AI-editable before calling set_region. Optional status filter: "active" (default) | "orphaned" (shortcode removed but value retained) | "all".
Content ReadReversible
get_regionlow
Bridge: Get Keva-Managed Region
Fetch a single [keva-region] by ID. Returns current value, default, lock state, version, full change history, and (if the same region id appears on multiple posts) a duplicates list. Always call this immediately before set_region so you can pass the correct expected_version for optimistic concurrency.
Content ReadReversible
find_images_on_pagelow
Find Images on Page
List all image elements that appear in the content of a page (or post). Returns normalized entries with element_id, element_type ("gutenberg:core/image" | "elementor:image" | etc.), current url, alt text, and media library ID where known. Pass each element_id back to update_page_image to swap that specific image. Featured image is included as element_id="featured" unless include_featured=false. With Keva Bridge installed: works on every supported builder. Without Bridge: returns synthetic "img:N" IDs scraped from the rendered HTML (classic-editor pages only).
Content ReadReversible
Content Update
update_postmedium
Update Post (Metadata Only)
Update the title or status of an existing post. Does NOT update body content — for content edits use wordpress.update_page_text (find/replace) or wordpress.remove_page_element. Those actions are page-builder aware and work on Elementor, Gutenberg, Divi, Beaver Builder, Bricks, Breakdance, WPBakery, Avada, and classic posts. Writing post_content directly bypasses page builders and produces an invisible no-op on builder-rendered pages.
Content UpdateReversible
update_pagemedium
Update Page (Metadata Only)
Update the title or status of an existing page. Does NOT update body content — for content edits use wordpress.update_page_text (find/replace) or wordpress.remove_page_element. Those actions are page-builder aware and work on Elementor, Gutenberg, Divi, Beaver Builder, Bricks, Breakdance, WPBakery, Avada, and classic pages. Writing post_content directly bypasses page builders and produces an invisible no-op on builder-rendered pages.
Content UpdateReversible
update_commentmedium
Moderate Comment
Update the status or content of a comment (approve, spam, trash).
Content UpdateReversible
restore_post_revisionmedium
Restore Post Revision
Restore a post to a previous revision by copying the revision content back to the post.
Content UpdateReversible
update_mediamedium
Update Media
Update metadata (alt text, caption, description, title) of an existing media item.
Content UpdateReversible
set_featured_imagemedium
Set Featured Image
Set or remove the featured image on a post or page.
Content UpdateReversible
update_page_imagemedium
Update Page Image
Swap one image that appears on a page (hero image, team photo, etc.) by element_id. Call find_images_on_page first to discover the element_id. Pass EITHER media_id (preferred — the connector resolves the canonical URL + alt from the WP media library) OR a raw url (advanced — bypasses the library, use only for CDN-hosted assets). DIFFERENT from update_media (which only changes library metadata) and set_featured_image (which sets the post thumbnail). Bridge required for builder pages (Elementor / WPBakery / Divi / Beaver / Bricks / Oxygen / Brizy / Cwicly); classic-editor pages with synthetic "img:N" IDs use a regex HTML rewrite (best-effort). If you see element_not_found (404) after a successful find_images_on_page, the page was edited concurrently — re-discover and retry.
Content UpdateReversible
update_pricing_tiermedium
Update Pricing Tier
Update an existing pricing tier on a page. In v0.1 this uses a delete-and-re-add pattern (the old tier is removed and a new one with the updated fields is added in its place) — the returned tier_id will differ from the input. To change only text within an existing tier without changing its id, use bridge_replace_text. Requires Keva Bridge plugin. Gutenberg + Elementor only. Use get_page / bridge_read_structure first to discover the tier_id.
Content UpdateReversible
update_faq_itemmedium
Update FAQ Item
Update an existing FAQ item. Gutenberg: faq_id is a core/details block id — patches attrs.summary for question changes. For answer-text changes use bridge_replace_text (the answer lives in a child core/paragraph block which v0.1 does not patch directly — a future Bridge release will support nested innerBlocks patches). Elementor: faq_id is "{accordion_widget_id}:{tab_id}" — reads current tabs, replaces the matching tab in place, patches the widget settings. Bridge required.
Content UpdateReversible
update_testimonialmedium
Update Testimonial
Update an existing testimonial. Gutenberg: testimonial_id is the core/quote block id — patches attrs.citation for attribution changes (quote-text changes are not supported in v0.1 because the quote lives in a nested paragraph block; use bridge_replace_text for that). Elementor: patches the testimonial widget settings with whatever subset of fields the caller provides (quote → testimonial_content; author_name → testimonial_name; author_role → testimonial_job; attribution → split into name/role if individual fields not supplied). Bridge shallow-merges the settings so untouched fields stay intact.
Content UpdateReversible
Content Write
create_commentmedium
Create Comment
Create a comment on a WordPress post.
Content WriteReversible
update_page_textmedium
Update Page Text (Builder-Aware)
PREFERRED action for editing page/post body content. Performs a find-and-replace on text regardless of which page builder is used — detects Gutenberg blocks, Elementor JSON in post_meta, shortcode-based builders (WPBakery, Divi, Avada), Beaver Builder, Bricks, Breakdance, and classic content automatically, then writes back through the correct storage layer so the change actually renders. Use this for any "change X to Y" or "fix this wording" task. Pair with wordpress.find_text_on_page first if you do not know the exact existing text.
Content WriteReversible
remove_page_elementhigh
Remove Page Element
Remove page builder elements (sections, widgets, blocks) that contain specific text. Works across all supported builders.
Content WriteReversible
bridge_replace_textmedium
Bridge: Replace Text
Find/replace text on a page through Keva Bridge. Engine-aware: edits Gutenberg block innerHTML or Elementor widget settings in place, then triggers the right cache invalidation (Elementor CSS, per-post cache, sitewide post cache, keva/after_content_update hook). Same surface area as wordpress.update_page_text but with verified writes and correct Elementor handling.
Content Write
bridge_append_blockmedium
Bridge: Append Block
Append a new block (Gutenberg) or element (Elementor) to a page. Use this to add a paragraph, heading, image, or section without naive post_content concatenation. Without target_id, the block goes to the end of the page; with target_id, it nests inside the matching container. Solves the "append a sentence" gap from PR-1.
Content Write
bridge_append_textmedium
Bridge: Append Text Paragraph
Token-saver wrapper around bridge_append_block for the most common case: appending a paragraph of text to a page. Pass post_id and text; the connector picks the right block shape automatically based on the page engine (core/paragraph for Gutenberg, text-editor widget for Elementor). HTML in the text is escaped — pass HTML through bridge_append_block if raw markup is needed.
Content Write
bridge_update_blockmedium
Bridge: Update Block
PATCH-style update of a single block/element by ID. Use bridge_read_structure first to find the target ID. For Gutenberg, replaces attrs + innerHTML. For Elementor, shallow-merges into element.settings. Leaf blocks/widgets only — use bridge_replace_text for find/replace across the page.
Content Write
bridge_delete_blockhigh
Bridge: Delete Block
Remove a single block/element by ID. Use bridge_read_structure to find the target ID first. Returns 404 if the ID is no longer in the tree (e.g. someone else already removed it).
Content Write
set_regionmedium
Bridge: Update Keva-Managed Region
Set a [keva-region]'s current value. PREFERRED over update_page_text when the target is a known region id — works on ANY page builder. Pass expected_version (from a recent get_region) for optimistic concurrency — the write fails with version_conflict (409) if the stored version has advanced. Regions declared with lock="true" require human_approved: true after the human-approval flow. When the same region id exists on multiple posts, pass post_id explicitly or the call returns ambiguous_region (400).
Content WriteReversible
add_pricing_tiermedium
Add Pricing Tier
Append a new pricing tier to a page (e.g. "Add a Pro tier at $29/mo with 5 features and a Sign up button"). On Gutenberg, builds a core/column with heading + price + feature-list + button and appends it into target_id (an existing core/columns block) — when target_id is omitted, creates a fresh core/columns row at the end of the page with the new tier inside. On Elementor (free pattern, works without Pro), builds an Elementor column with heading + heading + icon-list + button widgets — appends into target_id (an existing section) or wraps in a new section. Requires Keva Bridge plugin (BRIDGE_NOT_CONFIGURED returned otherwise). For builders other than Gutenberg/Elementor, returns a graceful error pointing at bridge_append_block. Returns the new tier_id which you can pass to remove_pricing_tier / update_pricing_tier later.
Content WriteReversible
add_faq_itemmedium
Add FAQ Item
Add a single question/answer to a page. On Gutenberg: appends one core/details block (each FAQ is its own block — uses WP 6.3+ native accordion primitive). On Elementor: when target_id points at an existing accordion widget, appends a new tab into its tabs[] array (read-modify-write the widget settings). When target_id is omitted on Elementor, creates a fresh accordion widget with one starter tab. Requires Keva Bridge. Other 7 builders return WIDGET_PATTERN_UNSUPPORTED.
Content WriteReversible
add_testimonialmedium
Add Testimonial
Append a testimonial to a page. Gutenberg: builds a core/quote block (quote → child paragraph; attribution → citation attr). Elementor: builds a testimonial widget (testimonial_content / testimonial_name / testimonial_job). The attribution string is preferred — when provided it overrides separate author_name/author_role on Gutenberg; on Elementor the discrete fields drive the widget settings and are populated from attribution (split on the first comma) when not supplied. Requires Keva Bridge.
Content WriteReversible
add_sectionhigh
Add Section
Append an empty top-level section to the end of a page. The connector picks the engine-correct empty container shape (core/group with constrained layout on Gutenberg; elType:container or section on Elementor). Returns the new section_id which you can pass to subsequent bridge_append_block / bridge_append_text / widget actions (add_pricing_tier, add_faq_item, add_testimonial) to fill the section. Use this when the AI wants a fresh wrapper to drop new content into rather than crafting the engine-specific JSON by hand. Requires Keva Bridge (no new PHP endpoint — uses /append-block). For engines other than Gutenberg/Elementor, returns engine_not_supported.
Content WriteReversible
duplicate_sectionhigh
Duplicate Section
Deep-clone a section by id and insert the clone immediately after the source. For Elementor, every nested element id is regenerated server-side to a fresh 8-hex (sharing ids breaks Elementor's editor). For Gutenberg the clone gets a fresh deterministic blk_xxxxxxxx id derived from its post-splice path. Atomic single save_post. Returns the new duplicated_id which you can pass to subsequent update_section calls to vary the cloned content. Requires Keva Bridge ≥0.7.0. Gutenberg + Elementor only; other engines return engine_not_supported.
Content WriteReversible
reorder_sectionshigh
Reorder Sections
Atomically reorder top-level sections (or, when parent_id is supplied, the children of a specific container) to match ordered_ids. The ordered_ids array MUST be a permutation of the current root-level ids — if it isn't the call returns invalid_order with the actual current ids embedded in the error so the AI can re-read + retry. Single save_post per call (no partial-state risk). Requires Keva Bridge ≥0.7.0. Gutenberg + Elementor only; other engines return engine_not_supported.
Content WriteReversible
Coupon Write
delete_couponmedium
Delete Coupon
Permanently delete a WooCommerce coupon.
Coupon Write
Customer Write
wc_update_customermedium
Update Customer
Update a WooCommerce customer (name, email, billing/shipping).
Customer WriteReversible
Infrastructure Read
list_pluginslow
List Plugins
List installed plugins with status, version, and other metadata.
Infrastructure Read
get_pluginlow
Get Plugin
Get details of a specific installed plugin.
Infrastructure Read
list_themeslow
List Themes
List installed themes with status and metadata.
Infrastructure Read
get_themelow
Get Theme
Get details of a specific installed theme.
Infrastructure Read
get_system_statuslow
Get System Status
Get WooCommerce system status including WP version, PHP version, DB info, active plugins, and theme info.
Infrastructure Read
list_application_passwordslow
List Application Passwords
List application passwords for a user. Returns names and creation dates (not actual passwords). Useful for auditing API access.
Infrastructure Read
get_site_settingslow
Get Site Settings
Get WordPress site settings including title, description, URL, timezone, date/time format, and language.
Infrastructure Read
get_global_styleslow
Get Site Global Styles
Read the active theme's site-wide design tokens (theme.json). For block themes, returns the merged settings + styles (palette, fontFamilies, default typography, per-element overrides) along with is_block_theme:true and the global_styles_id used by subsequent updates. For classic themes, returns is_block_theme:false plus the small subset of color settings exposed via /wp/v2/settings — most classic-theme customizer mods are not yet AI-editable (planned for PR-10.1 with Bridge).
Infrastructure ReadReversible
get_brand_colorslow
Get Brand Color Palette
Convenience read: returns just the named color palette declared by the active theme. Each entry has { slug, name, color }. Use the slug as the target for update_brand_color. On classic themes, returns a small derived palette built from the WordPress site settings (background_color, header_textcolor).
Infrastructure ReadReversible
list_font_familieslow
List Font Families
Convenience read: returns the font families declared by the active block theme. Each entry has { slug, name, fontFamily }. Use the slug as the target for update_font_family. Returns unsupported_classic_theme on classic themes — font-family editing for classic themes requires Bridge (planned for PR-10.1).
Infrastructure ReadReversible
Infrastructure Write
activate_pluginmedium
Activate Plugin
Activate an installed WordPress plugin.
Infrastructure WriteReversible
deactivate_pluginmedium
Deactivate Plugin
Deactivate an active WordPress plugin.
Infrastructure WriteReversible
Order Read
wc_list_order_noteslow
List Order Notes
List notes on a WooCommerce order.
Order Read
wc_list_order_refundslow
List Order Refunds
List refunds for a WooCommerce order.
Order Read
Product Read
wc_list_productslow
List Products
List WooCommerce products.
Product Read
wc_get_productlow
Get Product
Get details of a specific WooCommerce product.
Product Read
list_product_categorieslow
List Product Categories
List WooCommerce product categories.
Product Read
list_product_reviewslow
List Product Reviews
List WooCommerce product reviews, optionally filtered by product.
Product Read
wc_list_product_variationslow
List Product Variations
List variations of a variable WooCommerce product.
Product Read
wc_get_product_variationlow
Get Product Variation
Get a specific variation of a WooCommerce product.
Product Read
wc_get_product_reviewlow
Get Product Review
Get a specific WooCommerce product review.
Product Read
wc_list_product_tagslow
List Product Tags
List WooCommerce product tags.
Product Read
Product Update
wc_update_productmedium
Update Product
Update a WooCommerce product (name, price, stock, status, etc.).
Product UpdateReversible
update_product_categorymedium
Update Product Category
Update a WooCommerce product category (name, description, display, parent).
Product UpdateReversible
Product Write
delete_product_reviewhigh
Delete Product Review
Permanently delete a WooCommerce product review.
Product Write
wc_create_productmedium
Create Product
Create a new WooCommerce product.
Product WriteReversible
wc_delete_producthigh
Delete Product
Permanently delete a WooCommerce product.
Product Write
wc_update_product_variationmedium
Update Product Variation
Update a WooCommerce product variation (price, stock, SKU).
Product WriteReversible
wc_create_product_variationmedium
Create Product Variation
Create a new variation for a variable WooCommerce product.
Product WriteReversible
wc_update_product_reviewmedium
Update Product Review
Update a WooCommerce product review (status, content).
Product WriteReversible
wc_create_product_taglow
Create Product Tag
Create a WooCommerce product tag.
Product WriteReversible
Settings Change
update_brand_colormedium
Update Brand Color
Change one named color in the active theme's palette by slug (e.g. "primary", "secondary", "accent"). Affects every block, button, link, and element that references this slug via var(--wp--preset--color--<slug>). Call get_brand_colors first to discover valid slugs. Returns { slug, previous, current } for audit/rollback. Block themes only — classic themes return unsupported_classic_theme (planned for PR-10.1 with Bridge).
Settings ChangeReversible
update_font_familymedium
Update Font Family
Change the font family used by a given element slot (body, heading, h1..h6, button, caption, link). The new font_family_slug must already exist in the theme's declared fontFamilies (use list_font_families to discover them). The slot is updated to var(--wp--preset--font-family--<slug>). Block themes only — classic themes return unsupported_classic_theme.
Settings ChangeReversible
User Management
list_userslow
List Users
List WordPress users.
User Management
wc_list_customerslow
List Customers
List WooCommerce customers.
User Management
wc_get_customerlow
Get Customer
Get details of a specific WooCommerce customer.
User Management
get_userlow
Get User
Get details of a specific WordPress user including name, email, and roles.