← All posts

EMCP Tools 3.4.0: theme-aware, CLI-ready, and 50 templates to start from

3.3.0 taught the AI to understand your site. 3.4.0 widens what it can reach: your theme, your command line, and SVG uploads: plus 50 ready-made templates so you’re never starting from a blank page.

Most of this release is about meeting WordPress where it actually lives. Not every site runs Elementor. Not every change happens in a page builder. Here’s the tour.

🎨 A new Themes domain

The biggest addition is a Themes sub-tab on the Tools screen, theme integrations built on the same clean two-dispatcher pattern as the ACF integration (one Read tool, one Write tool, each bundling internal operations). It’s a shared base, so new framework packs are cheap to add.

Active Theme (theme-read / theme-write) works for any active theme:

  • get-theme-context: the active and parent theme, the detected framework, whether it’s a block theme, theme supports, registered menu locations, and whether a child theme already exists. One call and the AI knows what it’s working with.
  • get-mods / set-mods: read and write theme_mod values (structural keys like menu locations are refused, so nothing important gets clobbered).
  • create-child-theme: scaffold a style.css + functions.php and activate a child of the active parent, so the agent can then safely edit theme files through the Filesystem tools. It requires confirm: true, is idempotent, and refuses to build a grandchild.

Astra (astra-read / astra-write) registers automatically when Astra is the active theme: generic get-settings / update-settings over a curated allowlist (colors, typography, layout, header/footer), mirroring the WordPress Settings domain.

Spectra Blocks (spectra-read / spectra-write) registers when the Spectra plugin is active, a discover → inspect → act layer that mirrors the Elementor widget catalog. list-blocks gives you the site’s real Spectra blocks, and get-block-schema reads a block’s real attribute names and defaults from Spectra’s own source (no guessing, a wrong attribute name silently does nothing, so this matters), plus a ready-to-use example. add-block inserts a block with a proper block_id; you build the rest of the page with the existing Gutenberg tools.

Reads are on by default; the write dispatchers ship disabled-by-default. Kadence and GeneratePress packs build on the same base next.

⌨️ WP-CLI tools

Your AI can now run wp commands. run-wp-cli executes synchronously and returns stdout, stderr, and the exit code. For long migrations or bulk jobs, dispatch-wp-cli kicks the command off as a detached background process you poll with get-wp-cli-job and list-wp-cli-jobs.

Two execution modes are supported automatically: in-process via WP_CLI::runcommand() when you’re connected over the WP-CLI stdio transport (no shell at all), or a proc_open shell path (argv array, no shell interpolation) when an admin configures a wp base command for HTTP/proxy connections.

This is a powerful surface, so it’s fenced in: a command blocklist refuses eval, shell, server, raw db query/import, config set, package install, and injection/retarget flags like --exec and --path; a quote-aware, Windows-path-safe tokenizer parses commands; all four tools require manage_options, ship disabled-by-default, and every run is recorded to the change ledger from 3.3.0.

🖼️ SVG Uploads, done safely

Sites without Elementor had no clean way to allow SVG uploads. 3.4.0 adds a self-contained SVG Uploads module (opt-in, on the Modules tab). When enabled it:

  1. registers the svg mime for users who can upload files (or admins only, your choice),
  2. fixes wp_check_filetype_and_ext() so the real-content MIME check doesn’t reject SVGs on the REST / sideload path, the exact piece most SVG plugins miss, which is why programmatic uploads (and the MCP media tools) so often fail, and
  3. sanitizes every uploaded SVG with the bundled enshrined/svg-sanitize library, scripts, event handlers, javascript: URIs, and external references are stripped. It’s fail-closed: an SVG that can’t be cleaned is rejected.

Off by default given the security surface, but one toggle away when you need it.

🧰 50 starter templates (Pro)

Pro now includes a template library of 50 designs across ten verticals, bakeries, salons, clinics, agencies, portfolios, and more. Browse them on the site, then have your AI build any of them into a page. Never start from a blank canvas again.

Also in this release

  • search-images and sideload-image are now core tools. They used to be gated behind Elementor being active. Now they register on any site, they only need a stock-provider API key and the Media Library, matching the plugin’s beyond-Elementor direction.
  • get-block-schema surfaces Spectra’s shared-helper attributes (container background image/video, border radius, box shadow) with their real names, so agents drive native block attributes instead of falling back to raw HTML.

Get it

Free users get 3.4.0 through the in-dashboard updater; Pro rolls out on Freemius. Read the full changelog or dive into the docs.

As always, we’d love to see what you build. Drop a note in the community or open an issue on GitHub.

← All postsSubscribe via RSS