Features Pricing Blog About
Compare vs Screaming Frog vs Sitebulb vs Slickplan vs Octopus.do vs VisualSitemaps
Use Cases For Agencies Site Migration Content Audit For SEO Pros Data Extraction
Start Free Trial
Documentation

IATO MCP Plugin Documentation

Complete reference for the free WordPress MCP plugin — 40 tools, authentication, configuration, and data flows.

Download Plugin Back to Plugin Page

On This Page


Overview

IATO MCP turns any self-hosted WordPress site into an MCP server. The plugin runs entirely inside WordPress as a REST API endpoint — no external server or infrastructure required. AI clients like Claude Desktop, Gemini, and ChatGPT connect directly to your site via the Model Context Protocol.

AI Client (Claude Desktop / Gemini / ChatGPT)
    |
    |  MCP JSON-RPC over HTTP (one POST per call)
    |
WordPress Plugin  (iato-mcp)
  POST /wp-json/iato-mcp/v1/message    ← all MCP tool calls
  POST /wp-json/iato-mcp/v1/rollback   ← rollback a change by receipt ID
  GET  /wp-json/iato-mcp/v1/oauth/*    ← Claude Desktop auth flow
    |
    |  With IATO API key configured, bridge tools call:
    |
IATO Platform  (iato.ai/api/v1)
  Auth: Authorization: Bearer {iato_api_key}
  Read-only: sitemap, SEO fixes, orphans, broken links, suggestions

Requirements

The plugin works on any self-hosted WordPress installation. No special server configuration needed.

RequirementDetails
WordPress6.2 or higher
PHP8.0 or higher
IATO AccountOptional — only needed for bridge tools
HostingAny: shared (Bluehost, SiteGround), VPS (DigitalOcean, Linode), managed WP (WP Engine, Flywheel, Cloudways), or local dev

Quickstart

One screen, five steps, under five minutes. The 40 WordPress tools work immediately. The 12 bridge tools require an IATO API key.

  1. Install the plugin from the WordPress.org plugin directory (search "IATO MCP" in WP Admin → Plugins → Add New), then activate.
  2. Open the Setup Wizard at Settings → IATO MCP. The wizard is a single screen — no multi-step flow.
  3. Generate an Application Password for your WordPress user (Users → Profile → Application Passwords). The wizard shows you exactly where to click.
  4. Paste the JSON snippet shown in the wizard into your MCP client's configuration (Claude Desktop → Settings → Developer, or equivalent). The snippet includes the endpoint URL and the Bearer token the wizard just generated.
  5. (Optional) Paste your IATO API key into the wizard field to enable the 12 bridge tools. Validate explicitly via the Test connection button — saving is fast and local. Skip this step if you only need the WordPress tools.

Restart your MCP client. The 40 WordPress tools (52 with an IATO key) will appear in the client's tool list.


Configuration

All settings are managed in WP Admin under Settings → IATO MCP.

MCP Endpoint

Read-only. Shows your site's MCP URL: https://yoursite.com/wp-json/iato-mcp/v1/message

MCP API Key

Plugin-generated Bearer key (IATO-XXXXXXXX). Use Copy to clipboard or Regenerate to create a new one.

IATO API Key

Enter your IATO account API key here to enable the 12 bridge tools. Validate explicitly via the Test connection button next to the field — saving is fast and local.

Default Crawl ID

Fallback crawl ID used by bridge tools when crawl_id is not passed in the tool call.

Enabled Tools

Per-tool enable/disable checkboxes. Disable tools you don't need to reduce the tool list for your AI client.


Connecting AI Clients

Any AI client that supports the Model Context Protocol can connect to your WordPress site.

Claude Desktop (OAuth)

Go to Claude Desktop → Settings → Connectors → Add. Enter your site's MCP endpoint URL (shown in Settings → IATO MCP). Click Authorize — the OAuth flow completes automatically.

Manual Configuration

For other MCP clients, add this to your client's configuration file:

{
  "mcpServers": {
    "wordpress": {
      "url": "https://yoursite.com/wp-json/iato-mcp/v1/message",
      "headers": {
        "Authorization": "Bearer IATO-XXXXXXXX"
      }
    }
  }
}

Replace the URL and API key with the values from Settings → IATO MCP.


Tool Reference

The plugin exposes 40 WordPress tools plus 12 IATO bridge tools (the bridge tools require an IATO API key). Grouped by category. Frozen as of plugin v1.4.0.

Content 5 tools

get_postsList published posts with filters
get_postSingle post details and meta
create_postCreate a new post or page
update_postEdit title, content, excerpt, status
search_postsFull-text search across posts

Site 3 tools

get_site_infoBasic site information and health
get_site_settingsWordPress settings (admin only)
resolve_urlWalk the WordPress rewrite cascade and detect Elementor Theme Builder template shadowing on a slug

SEO 4 tools

get_seo_dataRead SEO meta fields (Yoast / RankMath / SEOPress)
update_seo_dataUpdate SEO title and meta description
update_canonicalSet canonical URL for a post
update_structured_dataAdd JSON-LD structured data

Media 2 tools

get_mediaList media library items
update_alt_textUpdate image alt text

Navigation 6 tools

get_menusList navigation menus
get_menu_itemsMenu item details and structure
create_menu_itemAdd new menu item (admin)
update_menu_itemAdd a page to a menu (admin)
update_menu_item_detailsEdit menu item properties (admin)
delete_menu_itemRemove a menu item (admin)

Taxonomy 6 tools

get_termsList categories, tags, or any taxonomy
assign_termAssign terms to a post
create_termCreate a new term (admin)
update_termEdit an existing term (admin)
delete_termRemove a term (admin)
update_taxonomyReplace all terms on a post

Redirects 1 tool

update_redirectCreate or update redirect rules (admin)

Comments 1 tool

get_commentsList and filter comments

Rollback 1 tool

rollbackReverse any AI-made write using its change_receipt ID. Validates before_value to prevent stale rollbacks. See Rollback Endpoint for receipt format and error semantics.

Elementor — Document level 3 tools

get_page_builderDetect which page builder a post uses
get_elementor_dataReturn Elementor data with format: raw | compact | summary. Includes a canonical revision hash for use as if_revision on subsequent writes
update_elementor_dataUpdate Elementor JSON and regenerate rendered content

Elementor — Widget v2 8 tools

Widget-grained editing — patch a single widget without re-uploading the whole document. All writes accept if_revision for optimistic concurrency and idempotency_key for safe retries (60-second replay window).

list_elementor_widgetsList every widget on a post with id, type, and breadcrumb path
get_elementor_widgetReturn a single widget's raw settings by widget id
find_elementor_widgetsFind widgets across many posts by type and optional setting filters
set_heading_levelFlip an Elementor heading widget's level (h1–h6) in one call
set_widget_settingSet a single setting on a single widget — the most common write
update_elementor_widgetPatch a widget's settings; replace-only array semantics
update_elementor_widgets_bulkUpdate many widgets across many posts in one HTTP call
update_elementor_patchApply RFC 6902 JSON Patch operations for surgical array edits (escape hatch for the replace-only semantics on the others)

IATO Bridge Tools 12 tools — requires IATO API key

Tools that call the IATO API. The read tools resolve IATO node/page IDs to WordPress post IDs and slugs so your AI client can chain directly into the WP native tools. The crawl management tools let Claude trigger and monitor crawls without leaving the conversation.

Read 9 tools

ToolReturns
get_iato_sitemapFull site hierarchy with WordPress post IDs attached
get_iato_nav_auditNavigation menus + orphan pages in one audit
get_iato_orphan_pagesPages not linked from any nav menu
get_iato_taxonomyIATO categories/tags mapped to WordPress term IDs
get_iato_seo_fixesSEO issues with auto-fixable vs. manual classification and WP slugs
get_iato_content_gapsThin content, missing H1, low image count, low internal link count
get_iato_broken_linksBroken pages and broken resources, mapped to source posts
get_iato_suggestionsAI-prioritized improvements across SEO / content / links / performance
get_iato_perf_reportSlowest and largest pages with WP slugs

Crawl Management 3 tools

ToolDescription
start_iato_crawlStart a new crawl of the site (admin only; consumes IATO platform quota)
get_iato_crawl_statusCheck status and progress of a specific crawl job
list_iato_crawlsList recent crawl jobs to find the most recent completed crawl_id

Widget-Grained Editing

Plugin v1.3.0 introduced 8 widget-level Elementor tools that patch a single widget without re-uploading the whole document. A 4-page heading-level flip dropped from ~100 KB / 16 requests on v1.2 to ~2.2 KB / 1 request on v1.3 — ~60× wire reduction.

Picking the right tool

When…Use
You're flipping a heading levelset_heading_level
You're setting one named setting on one widgetset_widget_setting (most common write)
You're patching multiple settings on one widgetupdate_elementor_widget
You're updating many widgets across many postsupdate_elementor_widgets_bulk (single HTTP call)
You need to mutate inside an array (insert / remove / reorder items)update_elementor_patch with RFC 6902 ops

Optimistic concurrency — the if_revision flow

Every get_elementor_data and widget-level read returns a canonical revision hash. Pass it as if_revision on a write to fail fast if the document changed since you read it:

// 1. read
const { revision, widgets } = await get_elementor_widget({ post_id: 42, widget_id: "abc123" });

// 2. write with the revision you read
await update_elementor_widget({
  post_id: 42,
  widget_id: "abc123",
  settings_patch: { title: "New title" },
  if_revision: revision,
  idempotency_key: "set-hero-title-2026-04-28"
});

If the revision doesn't match the current document state, the write is rejected with a conflict error so your client can re-read and decide. Without if_revision, last-write-wins.

Idempotency — the idempotency_key flow

Pass idempotency_key on any widget write to make retries safe. The plugin caches the response for 60 seconds, scoped per (user, tool) pair. A retry within that window with the same key returns the cached result without re-applying the write.

Use any string — UUID, slugified intent, request id from your client. The plugin only checks for collisions; it doesn't interpret the value.

Replace-only array semantics

settings_patch on update_elementor_widget and update_elementor_widgets_bulk uses replace-only semantics for arrays — if you patch an array setting, you replace the entire array. There is no merge for nested array elements.

To insert, remove, or reorder items inside an array without rewriting the whole array, use update_elementor_patch with RFC 6902 JSON Patch operations (add, remove, replace, move, copy, test).

Theme Builder shadowing

Elementor's Theme Builder can override the default WordPress render of a slug with a template. A request to /about/ may render the singular page template, an Elementor Theme Builder singular template, or a more specific page-about template — depending on the rewrite cascade.

Two ways to detect this:

Full detection requires Elementor 3.20+. On older versions, the resolver returns limited_resolution: true and falls back to the WordPress-only cascade.

Capability discovery

The MCP initialize handshake advertises plugin capabilities so clients can feature-detect without a tools/list round-trip. When Elementor is active, the response includes:

{
  "capabilities": {
    "elementor": { "v2": true }
  }
}

Absent or false means the v2 widget tools won't be registered — either Elementor isn't installed, or the plugin is on an older version. Clients should gate widget-level prompts on this flag.

Example prompts

Two prompts that exercise the v2 capability end-to-end:


SEO Plugin Adapter

The plugin auto-detects which SEO plugin is active and reads/writes the correct post meta keys. Detection priority: Yoast → RankMath → SEOPress → Fallback. No configuration needed.

PluginTitle KeyDescription KeyCanonical Key
Yoast SEO_yoast_wpseo_title_yoast_wpseo_metadesc_yoast_wpseo_canonical
RankMathrank_math_titlerank_math_descriptionrank_math_canonical_url
SEOPress_seopress_titles_title_seopress_titles_desc_seopress_robots_canonical
FallbackNative WordPress post title (no SEO plugin detected)

Redirect Plugin Detection

The update_redirect tool auto-detects which redirect plugin is active and uses its API. If no plugin is found, a built-in option-based fallback handles redirects.

PriorityPluginNotes
1RedirectionMost popular redirect plugin. Uses its REST API to create/update rules.
2Safe Redirect ManagerStores redirects as custom post type. Supported via direct CPT creation.
3Yoast PremiumUses Yoast Premium's redirect manager when available.
FallbackBuilt-inOption-based fallback stored in iato_redirects. Capped at 500 rules.

Change Receipts

Every write tool returns a change_receipt object in its response, providing a full audit trail for AI-made changes.

Receipt Format

{
  "change_id": "wr_a1b2c3d4e5f67890",
  "post_id": 42,
  "target_type": "page",
  "field": "meta_description",
  "before_value": "Old description",
  "after_value": "New SEO-optimized description",
  "applied_at": "2026-03-26T14:30:00Z"
}

Target Types

Target TypeUsed By
pageupdate_seo_data, update_post
imageupdate_alt_text
menu_itemcreate_menu_item, update_menu_item, delete_menu_item, update_menu_item_details
taxonomyassign_term, create_term, update_term, delete_term, update_taxonomy
redirectupdate_redirect
structured_dataupdate_structured_data

Receipts are stored in the {prefix}iato_change_receipts database table, created automatically on plugin activation.


Rollback Endpoint

Restore any AI-made change using its change receipt ID.

Endpoint

POST /wp-json/iato-mcp/v1/rollback

Authentication

Same as MCP endpoint: Bearer token (Authorization: Bearer IATO-XXXXXXXX).

Request Body

{
  "change_id": "wr_a1b2c3d4e5f67890",
  "post_id": 42,
  "target_type": "page",
  "field": "meta_description",
  "before_value": "New SEO-optimized description"
}

Validation

CheckErrorStatus
change_id must existChange receipt not found404
Not already rolled backChange already rolled back400
before_value must match stored valueStale rollback — value has changed since receipt was issued400

Response

{
  "success": true,
  "rolled_back_at": "2026-03-26T15:00:00Z",
  "change_id": "wr_a1b2c3d4e5f67890"
}

Supported rollbacks: all write tool changes including SEO meta, alt text, menu items, taxonomy, canonical URLs, structured data, and redirects.


Setup Wizard

Accessible at wp-admin/admin.php?page=iato-mcp-setup. Requires manage_options capability. One screen — no multi-step flow.

FieldPurpose
MCP Endpoint URLRead-only — the URL you paste into your MCP client config
MCP API KeyPlugin-generated Bearer token (IATO-XXXXXXXX). Copy or regenerate
Application Password setupLink + instructions for generating a WordPress Application Password
JSON config snippetReady-to-paste MCP client configuration block with the correct URL and auth header
IATO API Key (optional)Enter to enable the 12 bridge tools. Validate explicitly via Test connection — saving is fast and local.

Authentication

The plugin uses a plugin-generated API key stored in wp_options, plus support for WordPress-native Application Passwords. Four authentication methods are supported.

MethodHowNotes
Application PasswordAuthorization: Basic <base64(username:app_password)>WordPress-native auth (WP 5.6+). Generate at Users → Profile → Application Passwords. Recommended for non-OAuth MCP clients.
Bearer TokenAuthorization: Bearer IATO-XXXXXXXXPlugin-generated key. Created on activation, stored in wp_options as iato_mcp_key.
Query Parameter?mcp_key=IATO-XXXXXXXXFallback for clients that cannot set custom headers.
OAuth 2.0Automatic via class-oauth.phpClaude Desktop Connect button triggers this automatically.

Key generation: on plugin activation, wp_generate_password(32, false) creates the key. Users can regenerate via Settings → IATO MCP → Regenerate Key.


Data Flows

Two example workflows showing how the plugin bridges AI clients, WordPress, and IATO.

Flow 1 — SEO Audit and Fix

"Audit my site and fix all meta description issues"
1. AI calls get_iato_seo_fixes(crawl_id)
   → Plugin calls IATO: run_seo_audit + get_seo_issues
   → Returns: [{url, issue_type, current, suggested, wp_post_id, wp_slug}]

2. AI calls update_seo_data(id: wp_post_id, description: suggested)
   → Plugin writes to Yoast/RankMath/SEOPress meta on each post

Flow 2 — Navigation Audit and Fix

"Show me orphan pages not in any menu and add them"
1. AI calls get_iato_nav_audit(sitemap_id)
   → Plugin calls IATO: get_menus + get_menu_items + find_orphan_pages
   → Returns: {menus: [...], orphans: [{url, wp_post_id, wp_slug}]}

2. AI calls update_menu_item(menu_id, post_id: wp_post_id, dry_run: true)
   → Preview what would be added

3. AI calls update_menu_item(menu_id, post_id: wp_post_id)
   → wp_update_nav_menu_item() adds page to menu

Troubleshooting

Plugin can't reach IATO

Verify the API key in Settings → IATO MCP and click Test connection. The validation call goes to GET /api/v1/workspaces. If it fails, check your firewall or hosting egress rules allow outbound HTTPS to iato.ai. Ensure your IATO subscription is active.

Claude Desktop can't see tools

The Application Password isn't configured, or the JSON config pasted into Claude Desktop is missing or malformed. Re-open the Setup Wizard, regenerate the Application Password, copy the JSON snippet exactly, paste into Claude Desktop's config, and restart Claude Desktop fully (quit, not just close the window).

Bridge tools returning errors

Confirm your IATO subscription is active and the Default Crawl ID is set to a valid, completed crawl. Bridge tools require both an IATO API key and valid crawl data.

OAuth not completing

Ensure your site is publicly accessible (not behind basic auth or a firewall). Claude Desktop needs to reach your site's OAuth endpoints. Check that the MCP endpoint URL in Settings is correct.

Plugin not appearing after upload

Verify WordPress 6.2+ and PHP 8.0+. Check the Plugins page for error messages. The plugin requires the REST API to be enabled (default in WordPress).

Tools not showing in AI client

Check that the tools are enabled in Settings → IATO MCP → Enabled Tools. Disabled tools are not exposed via the MCP endpoint.


Changelog

v1.3.5 — Docs accuracy pass

v1.3.4 — Bulk receipt optimization

v1.3.3 — Revision payload optimization

v1.3.2 — Receipt schema fix

v1.3.1 — v2 capability fixes

v1.3.0 — Widget-grained Elementor editing

v1.2.0 — Crawl management

v1.1.12 — Marketing-page parity

v1.1.11 — Readme accuracy pass

v1.1.10 — Initial WP.org submission

v1.0.0 — WordPress.org submission

Initial public release. Pure MCP server for self-hosted WordPress: 30 WordPress tools plus 9 IATO bridge tools.

Deliberate scope changes from pre-release builds:

What's in v1.0.0:

Download IATO MCP

Turn your self-hosted WordPress site into an MCP server. Free, open source, works with any AI client.

Get it on WordPress.org
Free · GPL v2 · WordPress 6.2+ · PHP 8.0+