Modules
New in v3.1.0. Modules are substantial features you turn on and off from EMCP Tools → Modules. Unlike individual tool toggles, a module owns a whole feature, its admin surface, hooks, cron, and (where relevant) MCP tools, so disabling it is a true kill switch.
Each module boots only when active. Active module IDs live in a single option; each module keeps its own settings separately.
Available modules
Section titled “Available modules”| Module | Tier | Default | What it does |
|---|---|---|---|
| Image Optimization | Free | Off (opt-in) | Compress uploads + generate/serve WebP |
| EMCP Themer | Free | On | Builder-agnostic theme builder |
| Prompts | Free | On | The prompt library tab |
| Brand Kits | Free | On | Curated color + typography kits |
| Templates | Pro | On | The premium template library |
| AI Chat | Pro | On | In-editor AI chat (Elementor + Gutenberg) |
| Agent Skills | Pro | On | Runtime skill exposure: the list-skills/get-skill Agent Skills tools + discovery-context catalog |
A module with a dedicated screen shows a Configure → link on its card; a lighter module shows an inline settings overlay.
Image Optimization
Section titled “Image Optimization”Free and opt-in (it mutates your uploads, so it ships off). When enabled it:
- Compresses generated image sub-sizes on upload and generates
.webpsiblings, using WordPress’s ownWP_Image_Editor, with no external binaries. - Serves WebP by rewriting
wp_get_attachment_*URLs. On the front end this is gated by the browser’sAccept: image/webpheader; in REST and WP-CLI it’s always served, so the MCP media tools (get-media,sideload-image,add-stock-image, …) resolve to WebP with no tool changes. - Preserves full-size originals (optionally trimmed by a max-dimension cap) and backs up every touched file under
uploads/emcp-originals/, so the whole thing is reversible. - Includes a resumable bulk optimizer (processes your existing library in batches) and a Restore originals companion.
- Adds an in-place image resizer and the
emcp-tools/resize-mediaMCP tool (new in v3.1.1). An AI agent can resize an existing Media Library image by ID, mid-build or after the fact.
Settings: compress on/off, WebP generation on/off, front-end WebP serving on/off (REST/CLI always serve WebP), quality (1–100, default 60), max dimension (0 = off), keep originals. Availability depends on your server’s image library supporting WebP output. The card disables the toggle and explains when it can’t.
emcp-tools/resize-media
Section titled “emcp-tools/resize-media”Resizes an existing Media Library attachment in place (added in v3.1.1). By default it scales the image to fit within the given width/height (aspect ratio preserved); pass crop: true for an exact width × height. The original is backed up under uploads/emcp-originals/ (reversible), all sub-sizes + WebP siblings are regenerated, and the attachment ID and URLs stay the same, so anything already pointing at the image keeps working. Registers only when the Image Optimization module is enabled.
| Input | Required | Notes |
|---|---|---|
attachment_id | yes | The Media Library image to resize. |
width | one of width/height | Target width in px (≥ 1). |
height | one of width/height | Target height in px (≥ 1). |
crop | no | true = crop to an exact width × height (both required); default scales to fit. |
Agent Skills
Section titled “Agent Skills”Pro and on by default. This module is the on/off switch for runtime skill exposure. It registers the read-only list-skills and get-skill tools and injects the ## Skills catalog into the MCP discovery context, so a connected agent can browse and load the bundled playbooks over the MCP connection. Turning it off removes those tools and the discovery injection (reclaiming their token footprint); it does not affect the local Skills download on the Skills tab. Full detail in Agent Skills.
AI Chat
Section titled “AI Chat”Pro and on by default. Owns the whole AI Chat feature: the AI Chat admin tab, the REST routes, the conversation store, and the floating chat panel in both page editors, Elementor and the WordPress block editor. Turning the module off is a true kill switch: the tab, the editor panels, the routes, and the cron all stop.
Bring your own API key for Anthropic, OpenAI, OpenRouter, or Google Gemini. Keys are encrypted per user and never leave your site except to the provider you chose.
Reading a web page: web_fetch
Section titled “Reading a web page: web_fetch”New in v3.2.0. The chat’s model can read a URL you give it: a reference design, a competitor page, documentation, a JSON endpoint, or a stylesheet.
format: "text"(the default) returns the page’s readable text, cheap, and usually all you need.format: "html"returns sanitized markup including the<head>, when the model needs class names to reason about layout.- Fetching an HTML page also returns a
stylesheetsarray of absolute CSS URLs. Ask the AI to read one, and it lifts the design’s color tokens and type scale straight from source, far cheaper and more accurate than inferring them from a rendered page.
It cannot search the web: you have to give it a URL. Only text is readable (HTML, CSS, JSON, XML, Markdown, plain text). Images, fonts, and scripts are refused.
Building your own
Section titled “Building your own”The framework is extensible: Pro units register modules through the plugin’s loader, and the emcp_tools_register_modules action lets code register a custom module. See Filters & hooks.