Element-tree editing for Oxygen Classic 4.x and the new Oxygen 6 (Bloom). Reads the JSON tree, writes through structure-aware patches.
Respira gives AI coding agents a structure-aware way to read and write Oxygen 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.
Oxygen Classic page JSON now matches an editor-saved page exactly. build_page wrote the canonical _ct_builder_json tree with a bare id root and no per-node depth / ct_depth; a natively saved Oxygen 4.9.x page uses ct_id
FIX: Oxygen 6 page generation collapsed to a single HTML code block instead of native, editable sections and modules. Respira's build path emitted Breakdance EssentialElements\* element classes, which a pure Oxygen 6 sit
FIX: update_element and extract/inject round-trips on Oxygen 6 could report success while persisting nothing — the edit landed in an attribute bucket the rebuild ignored. The Oxygen 6 build path now reads content from th
Oxygen: generated CSS was being written without the selectors it needed, so styles never reached the page. Element styling now renders, and dynamic content resolves correctly. Code blocks that contained quotes could corr
write_was_noop detector is now builder-aware. Pre-fix the v7.0.61 byte-conservation check snapshotted post_content before and after the write. Four of the seven adapters (Elementor, Bricks, Beaver, Oxygen, Breakdance, Br
The companion plugin v7.0.64 bundles five plugin-side fixes; the most important is making write_was_noop builder-aware so Elementor / Oxygen / Bricks / Beaver writes stop tripping the noop signal on every successful call
Concrete features in the current MCP server release. Tool names link directly to the adapter.
Oxygen Classic 4.x and Oxygen 6 (Bloom) both detected at site-context read time.
Element tree JSON read + structure-aware writes preserve parent / child references on every patch.
Global colors and global typography settings are accessible through Respira-managed options when Oxygen does not expose a native API.
Templates, reusable parts, and class registry are all readable; class registry writes are supported.
Snapshot-protected writes: every change creates a recoverable snapshot before touching the post.
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.
Oxygen Composite Elements (Bloom) read fine but write coverage is partial in the current release — track Bricks-parity in the changelog feed below.
Page-level Code Block and Custom CSS overrides are surfaced as-is and not parsed; the agent edits raw, no syntax validation.
Conditional display rules read; only simple rules (logged-in, post type, role) write through the MCP today.
Tools
Oxygen uses the universal toolset
Oxygen edits run through Respira's universal tools: respira_find_element, respira_update_element, respira_update_page (for full-page replacement only), respira_get_snapshot, and respira_create_page_duplicate. See the complete tool catalog.
Example prompts
Three prompts you can paste right now
Each one assumes Respira is connected to your WordPress site through the MCP server below. Copy a prompt, paste into your MCP client, run.
Update global color palette
Read the current Oxygen global color palette. Change "primary" from its current hex to #1f6feb. Show me which pages and templates reference that color before applying.
Inventory templates
List every Oxygen template on the site, what its assignment rule is, and which pages it currently renders on.
Find broken class references
Find every Oxygen element that references a global class that no longer exists in the class registry. Group results by page.
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.