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 6 accepts its real elements in build_page. Multi-element types the builder advertises (Columns, Column, Div, Grid, Accordion, Tabs, TextLink, and more) were rejected with a 422, because the write path validated wi
Oxygen 6 (Jenga) authoring intelligence. Oxygen Classic had an intelligence package; Oxygen 6 had none, so the agent rediscovered Oxygen's structure each run, often dumped whole pages into a single HTML block, and used t
Breakdance / Oxygen 6 writes are now verified against the database, not the object cache. The post-write check read the saved value back through WordPress's object cache, which update_post_meta primes in the same request
Oxygen 6 "IO-TS decoding failed" no longer bricks the editor site-wide. Oxygen 6.0.0 swapped Breakdance's lenient JSON parse for a strict io-ts decoder that rejects null where it expects an object/array. Imported header/
Oxygen 6 now builds with the real Section / Heading / Button elements when the "Breakdance Elements for Oxygen" add-on is active. The builder previously collapsed every element to a handful of low-level core types (a hea
Oxygen 6 (Jenga) handshake guidance. The instructions now distinguish Oxygen 6 from Oxygen Classic and hand the agent the native Oxygen 6 element vocabulary, the oxygen_header / oxygen_footer / oxygen_template post types
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.
macOS Claude Desktop: this belongs in claude_desktop_config.json, not config.json. On some versions the "Edit Config" button opens config.json — a separate preferences file in the same folder that is not read for MCP servers — so the paste appears to do nothing. If the server doesn't show up after restarting, edit the right file directly: open -a TextEdit ~/Library/Application\ Support/Claude/claude_desktop_config.json
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.