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. Every write is snapshotted. Every change 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 _ct_builder_json now persists with the canonical root object instead of a bare array. Native Oxygen Classic stores _ct_builder_json as { "id": 0, "name": "root", "depth": 0, "children": [ ...sections... ]
M.P.'s diff flagged three other differences from native Oxygen pages — missing ct_sign_sha256 shortcode signatures, _wp_page_template = ct_template vs default, and the absence of the _ct_template_* postmeta family. None
The _wp_page_template difference specifically is theme-dependent (M.P.'s site uses default + _ct_builder_active; a clean Oxygen install uses ct_template), so changing the Respira default globally would break clean instal
Oxygen Classic inject_content wraps the entire write body in try/catch \Throwable and surfaces the exception through WP_Error. Pre-7.0.17 the four update_post_meta calls in class-builder-oxygen.php (lines 887/899/902/909
Oxygen inject path no longer fires admin_init from inside a REST request. The "last resort" branch in force_load_oxygen_cache_helpers (introduced in 7.0.0 to load Oxygen's cache helper outside admin context) called do_ac
clear_oxygen_cache wrapped in try/catch \Throwable inside inject_content. Cache invalidation talks to Oxygen, WP Rocket, and any plugin listening on oxygen_after_save_components_meta. The DB write happens before this ste
Oxygen validator accepts ct_id as a fallback for id. Native Oxygen payloads carry ct_id (the runtime element ID Oxygen's shortcode renderer uses). Pre-7.0.9 the validator demanded a generic id and rejected payloads with
Option-value semantic checks no longer block writes. Pre-7.0.9 the validator ran Respira_Oxygen_Settings_Validator::validate() (which checks color formats, enum allow-lists, numeric coercion, etc.) and lumped every miss
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.
warning
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.
construction
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.
chat
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.
terminal
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.