Skip to main content
Glama

WP Audit MCP Server

MCP (Model Context Protocol) server for comprehensive WordPress site audits on WP Engine.

What is This?

This is an MCP server that gives Claude Code specialized tools for auditing and optimizing WordPress sites hosted on WP Engine. Instead of manually running PHP scripts and API calls, you can simply ask Claude to audit a site and it will use these tools automatically.

Related MCP server: wp-cli-mcp

How It Works

┌─────────────────────────────────────────────────────────────────┐
│ Your Computer                                                   │
│                                                                 │
│  Claude Code ◄──stdio──► wp-audit-mcp (Node.js)                │
│                               │                                 │
│                               ├──SSH──► WP Engine sites         │
│                               │         (runs WP-CLI/PHP)       │
│                               │                                 │
│                               └──HTTPS──► CloudFlare API        │
└─────────────────────────────────────────────────────────────────┘
  1. Claude Code starts the MCP server as a local subprocess

  2. They communicate via stdin/stdout (not network)

  3. When you ask Claude to audit a site, it calls the MCP tools

  4. The MCP server connects to WP Engine via SSH and runs PHP scripts

  5. For CloudFlare, it makes API calls directly

Features

Tool

Description

wp_baseline

Full site audit (content counts, database size, SEO status, plugin artifacts)

wp_cleanup

Database cleanup (orphaned data, revisions, transients, action scheduler)

wp_plugin_artifacts

Remove leftover tables/options from deleted plugins

wp_seo_check

Check meta description coverage

wp_seo_fix

Auto-generate or manually set meta descriptions

wp_rocket_fix

Check and optimize WP Rocket settings

wp_clear_cache

Clear all caches (WordPress, WP Rocket, page builders, WP Engine)

cloudflare_check

Audit CloudFlare security settings

cloudflare_fix

Apply recommended CloudFlare settings

ahrefs_extract

Parse and summarize Ahrefs site audit exports


Installation

Prerequisites

1. Node.js 18+

Download from nodejs.org or use a version manager:

# Check your version
node --version  # Should be v18.x or higher

# macOS (with Homebrew)
brew install node

# Windows (with Chocolatey)
choco install nodejs

# Linux (Ubuntu/Debian)
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs

2. Claude Code

Install Claude Code if you haven't:

npm install -g @anthropic-ai/claude-code

3. SSH Access to WP Engine

You need SSH key-based authentication to WP Engine sites.

Generate an SSH key (if you don't have one):

ssh-keygen -t ed25519 -C "your-email@example.com"

Add your public key to WP Engine:

  1. Log into WP Engine Portal

  2. Go to My ProfileSSH Keys

  3. Click Add SSH Key

  4. Paste contents of ~/.ssh/id_ed25519.pub

Test the connection:

# Replace SITEID with your WP Engine environment name
ssh SITEID@SITEID.ssh.wpengine.net 'echo "Connected successfully"'

4. CloudFlare Global API Key (Optional)

Only needed if you want to use the CloudFlare tools.

  1. Log into CloudFlare Dashboard

  2. Click your profile icon → My Profile

  3. Go to API Tokens tab

  4. Find Global API Key → Click View

  5. Copy the key (you'll need this when running CloudFlare tools)

Note: Use the Global API Key, not an API Token. The Global API Key works with all zones.


Step-by-Step Installation

Step 1: Clone the Repository

# Clone to a permanent location (not in a project folder)
git clone https://github.com/markahope-aag/wp-audit-mcp.git ~/wp-audit-mcp

# Or on Windows
git clone https://github.com/markahope-aag/wp-audit-mcp.git C:\tools\wp-audit-mcp

Step 2: Install Dependencies and Build

cd ~/wp-audit-mcp   # or C:\tools\wp-audit-mcp on Windows

# Install Node.js dependencies
npm install

# Build the TypeScript code
npm run build

You should see a dist/ folder created with the compiled JavaScript.

Step 3: Configure Claude Code

Claude Code uses a .mcp.json file to know about MCP servers. You need to add this server to that file.

Option A: Use the configure script

# Run from your project directory (where you use Claude Code)
~/wp-audit-mcp/configure.sh .

# Windows
C:\tools\wp-audit-mcp\configure.sh .

Option B: Manual configuration

Create or edit .mcp.json in your project directory:

{
  "mcpServers": {
    "wp-audit": {
      "command": "node",
      "args": ["/Users/yourname/wp-audit-mcp/dist/index.js"]
    }
  }
}

Important: Use the full absolute path to dist/index.js:

  • macOS/Linux: /Users/yourname/wp-audit-mcp/dist/index.js

  • Windows: C:/tools/wp-audit-mcp/dist/index.js (use forward slashes)

Step 4: Restart Claude Code

# Start Claude Code in your project directory
cd /path/to/your/project
claude

When Claude Code starts, it will automatically start the MCP server. You should see it connect without errors.

Step 5: Verify Installation

Ask Claude:

What MCP tools do you have available for WordPress audits?

Claude should list the wp_baseline, wp_cleanup, and other tools.


Configuration Details

The .mcp.json File

The .mcp.json file tells Claude Code which MCP servers to start. It can be placed in:

  • Project directory (recommended) - Tools available for that project

  • Home directory (~/.mcp.json) - Tools available globally

Example with multiple servers:

{
  "mcpServers": {
    "wp-audit": {
      "command": "node",
      "args": ["/Users/yourname/wp-audit-mcp/dist/index.js"]
    },
    "memory": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-memory"],
      "env": {
        "MEMORY_FILE_PATH": "./.claude/memory.json"
      }
    }
  }
}

How Tools Connect to WP Engine

The MCP server uses SSH to connect to WP Engine and run WP-CLI commands:

# This is what happens behind the scenes
ssh SITEID@SITEID.ssh.wpengine.net 'wp eval-file /tmp/script.php'

The site_id parameter you provide is the WP Engine environment name, which you can find in:

  • WP Engine Portal URL: my.wpengine.com/installs/SITEID

  • Or in the site's "Overview" page

SSH Configuration (Optional)

For convenience, you can add WP Engine sites to ~/.ssh/config:

Host wpengine-mysite
    HostName mysite.ssh.wpengine.net
    User mysite
    IdentityFile ~/.ssh/id_ed25519

This doesn't affect how the MCP server works, but makes manual SSH easier.


Usage

Basic Commands

Once installed, just talk to Claude naturally:

Audit the WordPress site "mysite" on WP Engine

Or be more specific:

Use wp_baseline with site_id "mysite"

Example Session

You: I need to audit the site "clientsite" - check SEO, clean up the database,
     and fix CloudFlare settings. Zone ID is abc123def456.

Claude: I'll run a comprehensive audit. Let me start with the baseline...
        [Uses wp_baseline]

        Now checking SEO meta descriptions...
        [Uses wp_seo_check]

        I found 15 pages missing meta descriptions. Should I auto-generate them?

You: Yes, generate them.

Claude: [Uses wp_seo_fix with mode "auto"]
        Done. Now checking CloudFlare...
        [Uses cloudflare_check]

        Found issues: SSL is "flexible" (should be "full"), TLS 1.0 (should be 1.2).
        Should I fix these?

You: Yes, fix all CloudFlare issues.

Claude: [Uses cloudflare_fix]
        All CloudFlare settings updated. Let me clear all caches...
        [Uses wp_clear_cache]

        Audit complete! Here's the summary...

Tools Reference

wp_baseline

Run comprehensive baseline audit on a WordPress site.

Parameters:
  site_id: WP Engine environment name (required)

Returns: Content counts, database size, orphaned data, SEO status,
         WP Rocket settings, deleted plugin artifacts

wp_cleanup

Clean orphaned data and optimize database.

Parameters:
  site_id: WP Engine environment name (required)
  delete_revisions: Delete post revisions (default: true)

Actions: Removes orphaned postmeta, termmeta, commentmeta, auto-drafts,
         transients, old action scheduler entries. Closes pingbacks.

wp_plugin_artifacts

Remove database artifacts from deleted plugins.

Parameters:
  site_id: WP Engine environment name (required)
  plugins: Array of plugins to clean (optional - cleans all if empty)
           Options: yoast, rankmath, aioseo, wsal, revslider,
                    layerslider, woocommerce, jetpack
  dry_run: Preview changes without applying (default: false)

Actions: Drops orphaned tables, deletes leftover options

wp_seo_check

Check meta description status for pages/posts.

Parameters:
  site_id: WP Engine environment name (required)
  post_type: 'page', 'post', or 'all' (default: 'page')

Returns: Count of pages with/without meta descriptions, list of missing

wp_seo_fix

Add meta descriptions to content.

Parameters:
  site_id: WP Engine environment name (required)
  mode: 'auto' or 'manual' (default: 'auto')
  post_type: For auto mode (default: 'page')
  descriptions: For manual mode - {postId: "description"} object
  dry_run: Preview changes (default: false)

Auto mode: Extracts first 155 chars from page content
Manual mode: Sets specific descriptions for specific post IDs

wp_rocket_fix

Check and fix WP Rocket settings.

Parameters:
  site_id: WP Engine environment name (required)
  dry_run: Preview changes (default: false)

Fixes: Enables cache preload, sitemap preload, lazy loading, mobile cache

wp_clear_cache

Clear all caches on the site.

Parameters:
  site_id: WP Engine environment name (required)

Clears: WordPress object cache, transients, WP Rocket, WP Super Cache,
        Elementor, Beaver Builder, Divi, WP Engine page cache

cloudflare_check

Check CloudFlare security and performance settings.

Parameters:
  zone_id: CloudFlare Zone ID (required)
  email: CloudFlare account email (required)
  api_key: CloudFlare Global API Key (required)

Checks: SSL mode, min TLS version, HSTS, Bot Fight Mode,
        AI bot protection, crawler protection

cloudflare_fix

Apply recommended CloudFlare settings.

Parameters:
  zone_id: CloudFlare Zone ID (required)
  email: CloudFlare account email (required)
  api_key: CloudFlare Global API Key (required)
  fix_ssl: Fix SSL to 'full' (optional)
  fix_tls: Fix min TLS to 1.2 (optional)
  fix_hsts: Enable HSTS with 6-month max-age (optional)
  fix_bots: Enable bot protection (optional)
  fix_all: Apply all fixes (default: auto-detects what's needed)

ahrefs_extract

Extract and summarize an Ahrefs site audit ZIP file.

Parameters:
  zip_path: Full path to Ahrefs ZIP export (required)
  output_dir: Directory to extract to (optional)

Returns: Summary of errors, warnings, and notices from the audit

Typical Audit Workflow

  1. Baseline: wp_baseline - Understand the site's current state

  2. Ahrefs: ahrefs_extract - Parse Ahrefs audit file if provided

  3. CloudFlare: cloudflare_checkcloudflare_fix - Fix security settings

  4. Database: wp_cleanupwp_plugin_artifacts - Clean up database

  5. SEO: wp_seo_checkwp_seo_fix - Fix missing meta descriptions

  6. Caching: wp_rocket_fix - Optimize WP Rocket

  7. Finish: wp_clear_cache - Clear all caches


Troubleshooting

"SSH connection failed"

  1. Verify SSH key is added to WP Engine Portal

  2. Test manually: ssh SITEID@SITEID.ssh.wpengine.net 'echo test'

  3. Check that site_id matches the WP Engine environment name exactly

"MCP server not found"

  1. Verify the path in .mcp.json is absolute and correct

  2. Check that npm run build completed without errors

  3. Verify dist/index.js exists

"CloudFlare authentication failed"

  1. Use the Global API Key, not an API Token

  2. Verify the email matches your CloudFlare login

  3. Check the Zone ID is correct (found in CloudFlare dashboard overview)

Tools not appearing in Claude

  1. Restart Claude Code completely

  2. Check .mcp.json is in the current directory

  3. Look for errors when Claude Code starts


Supported Platforms

  • Windows - Via Git Bash, WSL, or native (with forward slashes in paths)

  • macOS - Native terminal

  • Linux - Native terminal


Development

# Run in development mode (watches for changes)
npm run dev

# Build for production
npm run build

# The server communicates via stdio, so to test manually:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node dist/index.js

License

MIT


Contributing

Issues and pull requests welcome at github.com/markahope-aag/wp-audit-mcp.

Available Tools

10 tools
ahrefs_extractA

Extract and summarize an Ahrefs site audit ZIP file. Extracts to a temp directory and provides a summary of issues found (errors, warnings, notices).

ParametersJSON Schema
NameRequiredDescriptionDefault
zip_pathYesFull path to the Ahrefs ZIP export file
output_dirNoDirectory to extract files to (default: temp/ahrefs-{sitename})

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It says extraction goes to a temp directory and that a summary of errors/warnings/notices is provided, but it does not disclose whether the temp directory is cleaned up, what happens if the directory already exists, or what the summary structure looks like. This is partial transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences, front-loaded with the core action, and every word serves a purpose. No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has 2 simple parameters and no output schema, so the description needs to explain return behavior. It mentions 'summary of issues found' but not the exact format or whether extracted files persist after execution. Adequate but with gaps in post-extraction behavior and return structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters described in the schema (zip_path and output_dir, including default). The description doesn't add significant extra meaning beyond echoing the temp directory default; the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Extract and summarize an Ahrefs site audit ZIP file.' It specifies the resource (Ahrefs site audit ZIP) and the action (extract and summarize), and distinguishes itself from sibling tools that target WordPress/Cloudflare, as this is the only Ahrefs-specific tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: when handling an Ahrefs site audit ZIP file. It does not explicitly mention alternatives or exclusions, but since siblings are unrelated (wp_*, cloudflare_*), there is no ambiguity about which tool to choose for this task.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cloudflare_checkB

Check CloudFlare security and performance settings for a zone. Returns SSL mode, TLS version, HSTS status, and bot protection settings with recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesCloudFlare account email
api_keyYesCloudFlare Global API Key
zone_idYesCloudFlare Zone ID (32-character hex string)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does list expected return outputs, which adds value, but it does not explicitly state that the operation is read-only, nor does it cover error behavior, rate limits, or permission requirements beyond the schema. The tool name 'check' implies non-destructive behavior, but an explicit statement would be stronger for a no-annotation context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that names the action and resource, then lists return items. Every word carries weight; there is no fluff or repetition. This is exemplary conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple check tool with three well-documented parameters and no output schema, the description adequately explains the return value categories and recommendations. However, it could be more complete by explicitly noting the read-only nature and when to pair it with cloudflare_fix. The overall structure is solid, but minor gaps prevent a perfect score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents each parameter (email, api_key, zone_id) clearly. The description adds no further semantic meaning to the parameters, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks CloudFlare security and performance settings for a zone, listing specific return items (SSL mode, TLS version, HSTS status, bot protection). This is specific and understandable, but it does not explicitly distinguish itself from the sibling tool cloudflare_fix, so it misses the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like cloudflare_fix. The description does not mention exclusions, prerequisites, or scenarios where another tool would be more appropriate. This leaves the agent without decision support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cloudflare_fixA

Apply recommended CloudFlare security settings. Can fix SSL mode, TLS version, HSTS, and bot protection. By default, checks current settings and only fixes what's needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesCloudFlare account email
api_keyYesCloudFlare Global API Key
fix_allNoApply all fixes regardless of current state
fix_sslNoFix SSL to 'full' mode (default: auto-detect if needed)
fix_tlsNoFix min TLS to 1.2 (default: auto-detect if needed)
zone_idYesCloudFlare Zone ID (32-character hex string)
fix_botsNoEnable bot protection (default: auto-detect if needed)
fix_hstsNoEnable HSTS (default: auto-detect if needed)

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It discloses a meaningful behavioral trait: 'By default, checks current settings and only fixes what's needed.' This is useful for agents to predict incremental behavior. However, it does not mention side effects, reversibility, API key permissions, or return values, which are relevant for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary purpose, and free of redundancy. It communicates the core action and key default behavior without wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (8 parameters, no output schema, no annotations), the description provides a good high-level overview and default behavior, but lacks details about what the function returns, potential side effects, or success/failure indicators. This is adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description doesn't add significant meaning beyond the schema; the list of fix targets (SSL, TLS, HSTS, bots) mirrors the parameter descriptions, and the default behavior is already encoded in the schema descriptions. The description adds minimal extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it applies recommended CloudFlare security settings, enumerates the specific fixes (SSL mode, TLS version, HSTS, bot protection), and implicitly distinguishes itself from the sibling cloudflare_check tool by focusing on applying fixes rather than checking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear use case ('Apply recommended CloudFlare security settings') and explains the default behavior of checking before fixing. However, it does not explicitly state when to use this tool instead of cloudflare_check or provide exclusion scenarios, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_baselineA

Run a comprehensive baseline audit on a WordPress site. Returns content counts, database size, orphaned data counts, SEO meta status, WP Rocket settings, and deleted plugin artifacts.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idYesWP Engine environment name (e.g., 'reynoldstransf')

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the tool's behavior by listing the output categories (content counts, database size, etc.), implying a read-only audit. However, it does not explicitly state that it makes no changes, nor does it mention performance implications or permissions, which leaves some ambiguity for a comprehensive audit tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the primary action and then enumerates the key return categories in a comma-separated list. There is no wasted wording, and the structure makes it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a fairly complex audit tool with no output schema, so the description must compensate by explaining return values. It lists six major categories, which gives a solid conceptual overview. However, it lacks detail on the structure or format of the returns and does not mention potential side effects or performance considerations, leaving some gaps for a tool of this scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides a complete description of the single parameter (site_id as 'WP Engine environment name'), achieving 100% schema coverage. The description adds no additional parameter meaning, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs a comprehensive baseline audit on a WordPress site, with a specific verb and resource. It lists six distinct return categories, which distinguishes it from sibling tools like wp_seo_check or wp_plugin_artifacts that focus on narrower areas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage as a broad audit for getting an overview, but it does not explicitly state when to use this instead of the more specific sibling tools, nor does it mention any exclusions or prerequisites. The context is present but not fully explicit, so it earns a 3.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_cleanupA

Run database cleanup on a WordPress site. Removes orphaned postmeta/termmeta, old revisions, auto-drafts, expired transients, old action scheduler entries, and closes pingbacks.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idYesWP Engine environment name (e.g., 'reynoldstransf')
delete_revisionsNoWhether to delete post revisions (default: true)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It explicitly lists destructive actions (removes orphaned postmeta, revisions, auto-drafts, etc.) and even includes 'closes pingbacks'. This is substantive disclosure, though it stops short of stating irreversibility or backup requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, information-dense sentence. It front-loads the purpose and follows with a concise list of actions, with no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main behavior thoroughly for a 2-parameter tool with no output schema. It lacks details like thresholds for 'old' or output expectations, but given the scope, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already well-documented. The description does not add extra parameter-level meaning, but the baseline is 3, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs database cleanup on a WordPress site and enumerates specific items removed (orphaned postmeta/termmeta, revisions, auto-drafts, etc.). This differentiates it from sibling tools like wp_clear_cache or wp_seo_check.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool ('Run database cleanup'), implying it is for database maintenance issues. However, it does not explicitly mention alternatives or when not to use it, though sibling tool names are visible.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_clear_cacheA

Clear all caches on a WordPress site including WP object cache, transients, WP Rocket, Elementor, Beaver Builder, and WP Engine page cache.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idYesWP Engine environment name (e.g., 'reynoldstransf')

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for behavioral disclosure. It transparently lists what will be cleared, indicating a mutating/destructive operation, but does not mention prerequisites like admin credentials or potential side effects such as temporary performance impact. The enumeration of affected caches adds value but leaves some behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, information-dense sentence listing all affected cache types without redundancy or unnecessary words. Every element earns its place, maximizing clarity in minimal space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with no output schema, the description thoroughly explains what the tool does and which caches are affected. It lacks mention of side effects or post-condition, but for basic selection and invocation, the scope of behavior is well covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%—the only parameter, site_id, is already described as 'WP Engine environment name' in the schema. The description adds no additional parameter meaning, so it meets the baseline but does not exceed it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Clear' with resource 'all caches on a WordPress site' and enumerates cache types (WP object cache, transients, WP Rocket, Elementor, Beaver Builder, WP Engine), distinguishing it clearly from sibling tools like wp_rocket_fix or cloudflare_fix. This is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies this is the comprehensive cache clearing tool by listing all cache types, providing strong context for when to use it. It does not explicitly name alternatives or exclusions, but the scope of 'all caches' guides selection appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_plugin_artifactsA

Remove database artifacts (tables and options) left behind by deleted plugins. Supports Yoast, Rank Math, AIOSEO, WP Activity Log, RevSlider, LayerSlider, WooCommerce, and Jetpack.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, only report what would be deleted without making changes (default: false)
pluginsNoList of plugins to clean up. Options: 'yoast', 'rankmath', 'aioseo', 'wsal', 'revslider', 'layerslider', 'woocommerce', 'jetpack'. Leave empty to clean all detected artifacts.
site_idYesWP Engine environment name (e.g., 'reynoldstransf')

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It explicitly states the action is 'remove' which implies destructive behavior, and specifies the affected data (tables and options). However, it does not mention irreversibility, permissions, or the availability of dry_run, which is important for a destructive tool. This is a moderate gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core function and followed by a necessary list of supported plugins. Every word is useful, no fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description plus schema cover the tool's purpose, parameters, and supported plugins. Without an output schema, return values are not described, but this is not critical for a cleanup tool. The main gap is the lack of explicit safety/usage context (e.g., when to dry_run, warnings about deletion), which could be improved but is not essential for basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all parameters (site_id, plugins, dry_run) are already described in the schema. The description does not add semantic meaning beyond what the schema provides, only listing supported plugins which is also present in the plugins parameter description. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it removes database artifacts (tables and options) left behind by deleted plugins. This specific verb+resource combination clearly differentiates it from siblings like wp_cleanup or wp_baseline, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for cleaning up after deleted plugins, and lists supported plugins. While it does not explicitly name alternatives or exclusions, the context is clear enough for an agent to infer when to use this tool. A slight lack of explicit 'when-not-to-use' guidance prevents a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_rocket_fixA

Check and fix WP Rocket settings. Enables cache preload, sitemap preload, lazy loading, and mobile cache.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, only report what would be changed
site_idYesWP Engine environment name (e.g., 'reynoldstransf')

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the burden of disclosing behavior. It does state that it enables four specific settings, which is meaningful. However, it does not disclose potential side effects, reversibility, or the existence of a dry-run mode that is present in the schema but not highlighted for safety.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the clear purpose ('Check and fix WP Rocket settings') followed by a specific list of enabled features. Every word earns its place with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simpler tool with two parameters and no output schema, the description covers the core function but lacks usage scenarios, side effects, and return-value information. Given the absence of annotations and the presence of sibling tools with overlapping purposes, more contextual detail would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds context about which settings are affected, but it does not explain the two parameters (site_id and dry_run) beyond what the schema already states. No additional parameter-level meaning is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb+resource pair ('Check and fix WP Rocket settings') and enumerates the exact features it enables (cache preload, sitemap preload, lazy loading, mobile cache). This clearly distinguishes it from sibling tools like wp_seo_fix and cloudflare_fix, which target different systems.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage is appropriate when WP Rocket settings need to be checked or fixed, but it does not explicitly state when to use it over alternatives or provide exclusions. Sibling tools like wp_cleanup and wp_clear_cache are not mentioned, so guidance is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_seo_checkA

Check SEO meta description status for all published pages and posts. Returns a list of content missing meta descriptions.

ParametersJSON Schema
NameRequiredDescriptionDefault
site_idYesWP Engine environment name (e.g., 'reynoldstransf')
post_typeNoPost type to check (default: 'page'). Use 'all' for pages and posts.page

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It clearly communicates the read-only nature through 'Check' and 'Returns', and adds scope details ('all published pages and posts') and output type ('list of content missing meta descriptions'). It does not discuss side effects, but the wording implies none.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the primary action and ending with the output. No filler or redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only check with only two params and no output schema, the description is sufficient. It covers purpose, scope, and output. Missing info like return format or edge cases is not critical for this tool class.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds context around 'all published pages and posts' which aligns with the post_type parameter, but does not provide new parameter-level detail beyond what is already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb 'Check' with a clear resource 'SEO meta description status' and scope 'all published pages and posts'. Clearly distinguishes from sibling wp_seo_fix, which implies fixing rather than checking.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states what it does (checks status) and what it returns (list of missing meta descriptions), making it clear this is a diagnostic tool. It does not explicitly name alternatives, but the scope and output strongly imply when to use it versus tools like wp_seo_fix.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wp_seo_fixA

Add meta descriptions to pages/posts. Can auto-generate from content or set specific descriptions for specific post IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo'auto' = generate descriptions from content for all missing pages. 'manual' = set specific descriptions (requires descriptions parameter)auto
dry_runNoIf true, only show what would be changed without making changes
site_idYesWP Engine environment name (e.g., 'reynoldstransf')
post_typeNoPost type to fix (for auto mode). Default: 'page'page
descriptionsNoFor manual mode: object mapping post IDs to descriptions. Example: {"123": "Description for post 123", "456": "Description for post 456"}

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the transparency burden. 'Add' clearly indicates a write operation, and the two modes are disclosed. However, the dry_run parameter is not mentioned in the description—a notable gap since it controls whether changes are actually made. The description also doesn't state whether existing descriptions are overwritten or only missing ones. This makes it moderately transparent but not fully explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with a clear verb and resource. Every phrase adds value—no filler or repetition. It efficiently conveys the core purpose and both operational modes, making it highly concise while remaining informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description must provide complete context. It covers the main actions but omits important behavioral details such as dry_run's effect, what happens to existing descriptions, and what the tool returns/outputs. Given the 5-parameter schema and nested object, the description is adequate but not complete—an agent would need to rely on the schema for dry_run semantics and still might miss side effects. A score of 3 reflects this gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter (mode, dry_run, site_id, post_type, descriptions) clearly documented in the schema itself. The description adds minimal extra meaning beyond summarizing the two modes. Since the schema carries the parameter detail, a baseline score of 3 is appropriate; the description does not meaningfully enrich parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Add meta descriptions to pages/posts.' It distinguishes itself from sibling tools like wp_seo_check by focusing on fixing (adding/updating) rather than checking. The two modes (auto-generate from content or set specific descriptions) further clarify its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use each mode: 'auto-generate from content' for bulk fixing, and 'set specific descriptions for specific post IDs' for targeted edits. It does not explicitly mention wp_seo_check as an alternative or provide exclusion criteria, but the mode breakdown gives practical usage context. Lacks explicit 'when not to use' guidance, so a 4 is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv1.0.0
    • First observedahrefs_extract
    • First observedcloudflare_check
    • First observedcloudflare_fix
    • First observedwp_baseline
    • First observedwp_cleanup
    • First observedwp_clear_cache
    • First observedwp_plugin_artifacts
    • First observedwp_rocket_fix
    • First observedwp_seo_check
    • First observedwp_seo_fix

TDQS

A3.9/5.0

Scored across 10 tools

Disambiguation4/5

Each tool has a distinct primary purpose, but wp_baseline overlaps with wp_seo_check and wp_rocket_fix by reporting similar data, and wp_cleanup/wp_plugin_artifacts both perform cleanup. Descriptions clarify scope, so an agent can still select correctly, but there is minor ambiguity.

Naming Consistency4/5

Names consistently use lowercase snake_case and provider prefixes (wp_, cloudflare_, ahrefs_). Many follow a verb_noun pattern (wp_seo_check, cloudflare_fix), but some are noun-like (wp_baseline, wp_plugin_artifacts), making the convention slightly mixed but still readable.

Tool Count5/5

With 10 tools, the set is well-scoped for a WordPress audit/maintenance server. Each tool addresses a distinct area—audit, cleanup, SEO, caching, performance, security, and plugin artifacts—without unnecessary redundancy.

Completeness5/5

The tool set provides check/fix pairs for SEO and Cloudflare, plus clear, cache, rocket, cleanup, and artifact removal operations, covering common WordPress maintenance workflows. The baseline audit ties everything together. No significant operational gaps for the stated purpose.

Maintenance

ActivityInactive
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers