Widget-and-container editing across Elementor Free and Pro. Edits v3 widgets fully and writes v4 Atomic elements across a 20-type catalog.
Respira gives AI coding agents a structure-aware way to read and write Elementor content through a duplicate-first workflow. Page and element writes are snapshotted, and changes can be reviewed before going live.
Everything below is read from this repo at build time: tool registrations come from the MCP server adapter files; changelog entries are filtered from the same source the /releases timeline uses.
Elementor v4 atomic styles applied through an explicit styles:{} block were generated but never worn by the element. The flat-CSS write path already linked the minted style id into the element's class list; the styles-bl
Elementor global colours: the kit's system colours (primary, secondary, text, accent) could not be changed. update_elementor_global_colors only ever wrote custom_colors, so passing a system _id appended a duplicate custo
Globals are now versioned. Deleting a Bricks global class, a Divi preset, or an Elementor kit color now leaves a recovery point. "The agent deleted my global class" used to be unrecoverable; now you can roll it back. Res
Elementor Pro Global Widgets no longer cause a PHP 500 after any page edit. simplify_structure() only preserved id/elType/settings/elements/widgetType/isInner, so the top-level templateID property on Global Widget elemen
update_module on Elementor returned a bare "module not found" (HTTP 500) for a widget id that find_element had just resolved. On template-heavy sites the hero/H1 is often rendered into the page from a global widget or a
update_module reported success but wrote nothing when an Elementor widget edit was sent under the builder-native settings bucket. Elementor stores widget attributes under settings (what get_attributes_key() returns and w
Concrete features in the current MCP server release. Tool names link directly to the adapter.
Reads three widget trees in parallel: includes/widgets/ (v3 core), modules/*/widgets/ (v3 module), and modules/atomic-widgets/elements/ (v4 atomic).
Writes v4 Atomic elements (partial): 20 catalogued types (9 atomic widgets + 11 layout containers) with $$type envelope preservation, plus per-breakpoint (tablet, mobile, tablet_extra, mobile_extra, widescreen) and per-state (hover, focus, active, and more) styling in the per-element styles map. Trees are normalised and validated before they persist.
Tags each widget as widget_v3 or widget_v4 so AI prompts target the right schema.
Dedicated tools for global colors, typography variables, and design system reads (wordpress_elementor_design_system, wordpress_update_elementor_global_colors).
Atomic v4 variables (respira_elementor_color_variables, _typography_variables, _spacing_variables, _breakpoint_variables) round-trip cleanly with the $$type envelope.
Pro widgets are read-detected; if Pro is active, Pro widgets show in wordpress_list_elementor_widgets alongside Free.
Known limits
Where you still need a human pass
Honest list of edges. If you hit one of these, the snapshot workflow gives you a clean rollback path.
Atomic types outside the 20-type catalog refuse with a 422 that lists the supported types instead of silently dropping the write; edit those elements in the Elementor canvas for now.
Caller-supplied widget IDs (e.g. global-primary) are preserved, but Elementor regenerates internal IDs on its own writes — diff carefully.
Some Pro display conditions (date ranges, geolocation) read fine but can't be written through the MCP yet.
Theme builder templates (header, footer, single, archive) are listed but the structural editor for them is read-only in the current release.
Tools
8 Elementor-specific tools
Registered in mcp-server/src/elementor-tools.ts at MCP server build time. Each tool name is the canonical id you call from the MCP client.
Each one assumes Respira is connected to your WordPress site through the MCP server below. Copy a prompt, paste into your MCP client, run.
Refresh CTA copy on every landing page
Find every Elementor button widget whose text is "Get started" on pages tagged "campaign". Change the text to "Start free" and the URL to /pricing. Show me the diff first.
Migrate to Elementor v4 atomic variables
List every color value used across all pages built with Elementor. Group them by RGB value and tell me which would fit into a design-system palette of 6 colors.
Audit Pro widget usage
Which Elementor Pro widgets are actually used on this site, on how many pages each? Output a markdown table.
Setup
Connect Respira's MCP server
Drop this into your MCP client config (Claude Desktop, Cursor, Codex, Windsurf — any MCP-compatible client). Generate an API key from your Respira dashboard first.
cookies. the legal kind. one click and i'll get out of your way.
what you'd actually be saying yes to
tune your cookie preferences
essentials stay on regardless. the rest is opt-in. nothing fires until you tap save.
essentials
the cookies that make logging in work and remember which partner sent you. switching these off would just break the site, so the law does not let me make you opt out.
first-touch source on a /respira_acq cookie, plus a flag if an ai chatbot referred you. helps me figure out what is working without turning you into a tracking pixel statue.
messaging
customer.io for in-app notes, chatwoot when you click the support bubble. off by default. on means i can actually answer you in the app.