The Elementor MCP tools catalog

Elementor MCP tools for AI agents

Every Respira tool that reads or writes Elementor content. Widget schemas, global colors and typography, design system exports, element-level editing, cross-builder operations that work on Elementor pages.

51tools
3categories
100%writes snapshot-backed

Page Builder Core(17)

Cross-builder element operations. Target elements by selector or ID, extract content, inject content, patch pages, find builder-specific targets. The intelligence layer under every builder-native tool.

wordpress_get_builder_info
Detect which page builder is active on the site and get its version, support level (Full Intelligence / Smart Defaults / Basic), available modules/widgets, and capabilities. Call this first before working with builder content to understand what format to use. Pass debug=true to bypass the cache and include per-builder detection_signals (constants, classes, active plugin slugs, plugin headers, theme) — use this when a builder is installed but reports detected=false.
read maker
wordpress_list_theme_builder_templates
List the Divi Theme Builder global templates on the site (headers, footers, and body layouts). Each entry carries a layout_id you pass to update_theme_builder_template or apply_builder_patch to edit it, its kind (header/footer/body), name, and where it is assigned. Use this to find a global header before editing it (e.g. to build a mega menu). Works on Divi 4 and Divi 5.
read maker
wordpress_create_theme_builder_template
Create a Divi global header, footer, or body Theme Builder template, with optional page assignments. Snapshot-protected (reversible within a session). Pass structure as a Divi 4 shortcode string, or a Divi 5 block/node array. Works on Divi 4 and Divi 5.
write maker
wordpress_update_theme_builder_template
Replace the content of an existing Divi Theme Builder layout (a global header, footer, or body) by its layout_id (from list_theme_builder_templates). This rewrites the layout on EVERY page that uses it, and unlike a page edit it goes live immediately: there is no staged duplicate and no approval step, because Divi resolves a global layout by id and a second copy would compete with the original. A snapshot is taken first, so it is reversible with restore_snapshot. The first call is refused unless confirm_live_edit is true. For a targeted single-module edit, use apply_builder_patch on the same layout_id instead. Works on Divi 4 and Divi 5.
write maker
wordpress_extract_builder_content
Extract the full structured content from a page as builder-native JSON. Use this to see the complete page layout with all sections, columns, and widgets. For targeted searches, prefer find_element (faster). For a lightweight overview, prefer find_builder_targets. Returns the raw builder data structure that can be modified and passed back to inject_builder_content. Works on any post type (pages, posts, custom post types). The `builder` arg is optional — if omitted, the active site builder is auto-detected via get_builder_info.
read maker
wordpress_find_builder_targets
List all editable builder modules/blocks on a page with their types, labels, and text content — without returning the full builder JSON. Use this for a quick overview of what is on a page. For finding a specific element by text or class, use find_element instead. Returns `total_matches` (true total independent of limit), `offset`, `has_more`, and `next_offset` for pagination. WPBakery / Uncode targets now surface a populated `label` / `admin_label` / `text` so you do not have to grep the raw shortcode preview.
read maker
wordpress_get_builder_inline_schemas
Per-shortcode / per-block inline attribute schemas for the requested builder. Currently populated for WPBakery + Uncode + TagDiv via vc_map() at runtime (cached as a transient for 1h). Other builders return `schemas: {}` + `supported: false` + a structured hint. Use this to discover what attributes a specific `vc_*` / `uncode_*` shortcode accepts before writing.
read maker
wordpress_inject_builder_content
REPLACE (or append to) the entire page builder layout. WARNING: By default this REPLACES all existing content (use mode:"append" to add content without destroying existing elements). For editing a single module, use wordpress_update_module instead. Use exactly: gutenberg, divi, elementor, bricks, beaver, oxygen, breakdance, brizy, thrive, visual-composer, wpbakery, flatsome, spectra, kadence, generateblocks, greenshift. For Divi, divi_version is required ("4" or "5"). Replacing a page that already has content with mode="replace" requires confirm_replace=true, else returns 409 respira_replace_confirmation_required. Alternatives: mode="append" to add to existing content, or edit_target="live" to overwrite the live page directly. The gate prevents silent data loss.\n\nCanonical Divi 5 nested shape: `content: [{ type: "section", children: [{ type: "row", children: [{ type: "column", children: [{ type: "heading", settings: {...} }] }] }] }]` (rows/cols/columns/modules/elements/innerBlocks also accepted as `children` aliases). Each Divi module needs its render-critical attr in `settings` (e.g. heading→title, text→content, button→button_text); the plugin names any missing one via `respira_divi_required_attrs_missing`.
write maker
wordpress_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.
write maker
wordpress_apply_builder_patch
Apply a list of targeted builder patch operations. Each operation is { identifier: { id|admin_label|path|type [+match_content] }, updates: { content?, attributes?, ...flat_settings? } }. The identifier block follows the same shape as wordpress_find_element\
write maker
wordpress_find_element
Find an element in a page by ID, type, CSS class, text content, or uncode_shortcode_id. This is the PRIMARY tool for locating content to edit — use it instead of searching the database or reading PHP files. Works with all 17 page builders. Use identifier_type "content" to search by visible text (e.g. find a heading containing "2025" to update a year). On WPBakery + Uncode pages, prefer identifier_type "uncode_shortcode_id" — the id is stable across saves and theme updates while class lists and admin labels drift. Returns matching element(s) with their position, settings, and element ID for use with update_element.
read maker
wordpress_update_element
Update settings or content on a specific element in a page. This is the PRIMARY tool for making content changes (text edits, style changes, image swaps, link updates, etc.). Works with all 17 page builders. First use find_element to locate the element, then pass the same identifier here with the updates object containing the new values. On WPBakery + Uncode pages, prefer identifier_type "uncode_shortcode_id" for stable round-trip matching. Response includes target_id, original_id, edit_target ("live" or "duplicate"), is_duplicate, duplicate_created and post_status so the caller can never mistake a duplicate-routed write for a live-page change.\n\nLive-edit confirmation: when respira_allow_direct_edit=1 AND the post is a published original, the first call returns `status: "confirmation_required"` with a `next_call_examples` payload. Re-call with the suggested `edit_target` (and `confirm_live_edit: true` for the live path) to acknowledge. Both params are exposed at the top level here so autonomous flows can complete the handshake through MCP without polluting the `updates` object.
write maker
wordpress_move_element
Move an element to a different container or position within the page. Locate the element using the same identifier_type/identifier_value pattern as respira_find_element / respira_remove_element. The destination is a container PATH (e.g. "0.1" for sections[0].rows[1], or "root"/empty for top level), not a container element id.\n\nLive-edit confirmation: when writing to a published original, the first call can return `status: "confirmation_required"` with a `next_call_examples` payload. Re-call with `edit_target` (and `confirm_live_edit: true` for the live path) to acknowledge. Both params are exposed at the top level here; earlier schemas omitted them, so agents saw the handshake but could never complete it (C.Y., Elementor, bug: infinite confirmation loop).
write maker
wordpress_duplicate_element
Duplicate an element in a page. The copy is inserted immediately after the original. Uses the same identifier_type / identifier_value contract as find_element / update_element / remove_element — first locate the element, then pass the matching identifier here. Builders with no stable element IDs (WPBakery, Uncode, Flatsome, Visual Composer) should use identifier_type="text" / "css_class" / "widget_type" / "path" instead of "id".
readwrite maker
wordpress_remove_element
Remove an element from a page. Use the same identifier_type/identifier_value pattern as find_element and update_element — first locate the element, then pass the matching identifier to remove it.
destructive maker
wordpress_reorder_elements
Reorder child elements within a container. The container is identified by its PATH inside the page (e.g. "0.1" for sections[0].rows[1], or "root"/"" for the top level).\n\nLive-edit confirmation: when writing to a published original, the first call can return `status: "confirmation_required"`. Re-call with `edit_target` (and `confirm_live_edit: true` for the live path) to acknowledge. Both params are exposed at the top level here; earlier schemas omitted them, so agents could never complete the handshake.
write maker
wordpress_convert_html_to_builder
Convert HTML into native page builder content. Extracts CSS styles, maps sections to builder widgets, and creates a page with a fidelity report showing conversion accuracy.
write maker

Widget Shortcuts(27)

Convenience tools for adding common page-builder widgets (heading, button, image, section, etc.) without needing the full element schema. Accepts natural prompts like "add a hero with title X".

add_heading
Add a heading widget to a page.
write maker
add_text
Add a text/paragraph widget to a page.
write maker
add_button
Add a button widget to a page.
write maker
add_image
Add an image widget to a page.
write maker
add_section
Add a section container to a page.
write maker
add_video
Add a video widget to a page.
write maker
add_divider
Add a divider/horizontal rule to a page.
write maker
add_spacer
Add vertical spacing to a page.
write maker
add_icon
Add an icon widget to a page.
write maker
add_icon_list
Add an icon list widget to a page.
write maker
add_social_icons
Add social media icons to a page.
write maker
add_form
Add a contact form to a page.
write maker
add_map
Add a Google Maps widget to a page.
write maker
add_counter
Add a number counter widget to a page.
write maker
add_progress_bar
Add a progress bar widget to a page.
write maker
add_testimonial
Add a testimonial widget to a page.
write maker
add_tabs
Add a tabbed content widget to a page.
write maker
add_accordion
Add an accordion/FAQ widget to a page.
write maker
add_toggle
Add a toggle (collapsible content) widget to a page.
write maker
add_alert
Add an alert/notice widget to a page.
write maker
add_html
Add a raw HTML widget to a page.
write maker
add_sidebar
Add a sidebar widget area to a page.
write maker
add_slider
Add an image/content slider to a page.
write maker
add_pricing_table
Add a pricing table widget to a page.
write maker
wordpress_add_stock_image
Search for a stock image, download it to the Media Library, and add it as an image widget to a page — all in one call. Builder-agnostic: works with Elementor, Bricks, Beaver Builder, etc. Saves 3 separate tool calls.
write maker

Elementor Intelligence(7)

Elementor-native tools: widget registry, widget schemas, global colors and typography, design-system introspection, JSON validation, custom JS. Operates on the real Elementor data structures.

wordpress_list_elementor_widgets
List all registered Elementor widgets with metadata (name, title, icon, categories, keywords). Optionally filter by category. Use this to discover available widgets before building pages or to find the correct widget_type for get_widget_schema.
read maker needs elementor
wordpress_get_elementor_widget_schema
Get the full JSON Schema for a specific Elementor widget type — every setting/control it accepts, with types, descriptions, defaults, and allowed values. Use this before update_element to know exactly what settings a widget supports. Example: get schema for "heading" to learn it accepts title, tag, alignment, etc.
read maker needs elementor
wordpress_elementor_design_system
Export the Elementor design system: global colors (system + custom) and typography (system + custom). Single-call context for AI agents — use this to understand the site\
readwrite maker needs elementor
wordpress_update_elementor_global_colors
Add or update global colors in the Elementor active kit. Merges by _id — existing colors with matching _id are updated, new _ids are appended. Does not delete existing colors.
write maker needs elementor
wordpress_update_elementor_global_typography
Add or update global typography styles in the Elementor active kit. Merges by _id — existing entries with matching _id are updated, new _ids are appended.
write maker needs elementor
wordpress_elementor_add_custom_js
Add custom JavaScript to an Elementor page by inserting an HTML widget containing a <script> tag into a container. Use for analytics, tracking, animations, or custom interactivity. The JS is stripped of any <script> tags (auto-wrapped).
write maker needs elementor
wordpress_validate_elementor_json
Validate Elementor JSON for rendering fidelity. Catches common conversion issues: missing _margin (causes WordPress default margin injection), missing typography_typography:"custom" flag (causes Elementor to silently ignore fonts), column width collapsing, boxed-vs-fullwidth confusion, and missing mobile breakpoints. Use this to validate JSON from any pipeline (HTML-to-Elementor, manual builds, or external converters) before injection.
read maker needs elementor

All tools, all builders

Need the complete picture? Browse every Respira MCP tool across 22 categories with filters for operation, license tier, and safety feature.

See the full tools catalog →
The community · building in public

You're not the only one talking to WordPress.

The Respira community is where agency owners debug Divi migrations at 11pm, where vibe coders swap prompts that actually ship, and where the roadmap gets written out loud. Breathe with us.

Lines of code pushed through Respira
11,172,733
Live from the Respira ecosystem · updates as the agent ships
Slack
Async threads, release-day huddles, and the #show-your-work channel that never sleeps.
Join
Discord
Live voice on release days, screenshare debugging, and the vibe-coder corner that's always buzzing.
Join
GitHub Discussions
Long-form Q&A, bug reports, feature requests, and the public roadmap.
Open