SEO
New in v3.5.0. EMCP reads and writes the SEO metadata your SEO plugin stores, the SEO title, meta description, canonical URL, robots (noindex/nofollow), focus keyword, and Open Graph / Twitter social fields, for posts and terms, through the same two-dispatcher pattern as the Forms and ACF domains.
This is distinct from the Pro SEO & Accessibility toolkit (audit-page-seo, generate-meta-tags, …), which analyses and generates from the live page structure. These tools read and set what the SEO plugin actually stores, and the generate tools write through to whichever SEO integration below is active.
Slim SEO and Visibility are free; the other six are Pro:
| Plugin | Tools | Tier |
|---|---|---|
| Slim SEO | slimseo-read / slimseo-write | Free |
| Visibility (native-aeo-pack) | visibility-read / visibility-write | Free (v3.17.1) |
| Yoast SEO | yoast-read / yoast-write | Pro |
| Rank Math | rankmath-read / rankmath-write | Pro |
| All in One SEO | aioseo-read / aioseo-write | Pro |
| SEOPress | seopress-read / seopress-write | Pro |
| The SEO Framework | seoframework-read / seoframework-write | Pro |
| SureRank | surerank-read / surerank-write | Pro |
Each pair registers only when its plugin is active: most sites run one SEO plugin and see exactly its two tools.
One unified field set
Section titled “One unified field set”Every plugin stores SEO differently (individual meta keys, options, custom tables, different robots encodings). EMCP hides all of that behind one unified field vocabulary: you read and write the same fields regardless of plugin:
| Field | Meaning |
|---|---|
title | SEO title |
description | Meta description |
canonical | Canonical URL |
noindex / nofollow | Robots directives (booleans) |
focus_keyword | Target keyword (where supported) |
og_title / og_description / og_image | Open Graph / Facebook |
twitter_title / twitter_description / twitter_image | Twitter/X card |
The adapter translates these to each plugin’s own encoding, Yoast’s '1', SEOPress’s 'yes', Rank Math’s robots array, and so on. You never deal with those.
Discover, then act
Section titled “Discover, then act”For an executed example, see Update Rank Math SEO titles with AI. It records three metadata edits, preserved robots settings, frontend verification and a setup issue found during testing.
// discoverrankmath-read({})// → { mode: "read", operations: [ { operation: "get-post-seo", … }, { operation: "get-schema", … }, … ] }
// read a post's SEOrankmath-read({ operation: "get-post-seo", arguments: { post_id: 42 } })
// set title + meta description, un-noindex itrankmath-write({ operation: "update-post-seo", arguments: { post_id: 42, title: "Best Widgets (2026)", description: "…", noindex: false } })update-*-seo changes only the fields you pass; everything else is left as-is.
Operations
Section titled “Operations”| Operation | Support |
|---|---|
get-post-seo / update-post-seo | All 8 plugins |
get-term-seo / update-term-seo | All except All in One SEO and Visibility (current EMCP adapters are post-only) |
get-schema | Rank Math, All in One SEO, SEOPress |
get-settings | Slim SEO, Yoast, Rank Math, AIOSEO, SEOPress, SureRank |
Fields a plugin doesn’t store are simply absent, e.g. Slim SEO has no focus_keyword. Read first; don’t assume a field exists.
Visibility adds fields beyond the unified set: noimageindex, nosnippet and sitemap_excluded (booleans) and schema_type, a per-post Schema.org @type override. schema_type must be one of Visibility’s own allowed values or an empty string to restore the site default; anything else is refused with invalid_schema_type and the allowed list, and nothing is written. og_image is an attachment id.
Safety by design
Section titled “Safety by design”- Check your SEO tool switches. SEO writes ship disabled by default, and on a new EMCP install the six Pro read tools start off too, as every Pro tool does. Check and switch on the needed read and write tools under EMCP Tools → Tools → Plugins, in the SEO group; an existing site’s saved choices are preserved.
- Standard capabilities. Post/term SEO writes require
edit_posts; settings requiremanage_options. - Only when active. A plugin’s pair doesn’t register unless that plugin is installed and active.
In the admin
Section titled “In the admin”The dispatchers appear under EMCP Tools → Tools → Plugins, gathered in the SEO group (not the SEO section on the WordPress tab, which holds the SEO & Accessibility toolkit). Each plugin has its own section with a Read card and a Write card. While a plugin is not active, its cards carry a Needs badge naming it and cannot be switched on. After changing a switch, choose Save changes in the save bar and reconnect your AI client.
For native WooCommerce brand archives, pass the term_id returned by the brand operations. Read back metadata after updating it, then inspect the public response with get-page-html. Server-rendered tags can differ from stored values because of plugin defaults such as noindex on empty taxonomies. With Rank Math, complete setup or select its supported skip-account-connection option before expecting frontend SEO tags.
Agent skill
Section titled “Agent skill”Pro bundles an emcp-plugins/seo Agent Skill that teaches a connected agent the unified field vocabulary and per-plugin operation support (term SEO, schema, focus keyword). Check the site’s actual tool toggles before use.
