Skip to main content
Glama
cvsloane
by cvsloane

MainWP MCP Server

A Model Context Protocol (MCP) server that enables AI assistants like Claude to manage WordPress sites through the MainWP Dashboard REST API.

Table of Contents


Related MCP server: WordPress MCP Server

Overview

MainWP MCP Server bridges the gap between AI assistants and WordPress site management. It allows Claude (via Claude Code) to:

  • Monitor the health and status of all your WordPress sites

  • Check for and apply updates to WordPress core, plugins, and themes

  • Manage plugins and themes across single or multiple sites

  • Add, sync, and manage sites in your MainWP Dashboard

This is particularly useful for agencies, freelancers, or anyone managing multiple WordPress sites who wants to leverage AI assistance for routine maintenance tasks.


Features

43 tools covering the complete MainWP REST API:

Site Management (14 tools)

  • List & View: List all sites, get detailed site information, count sites

  • Health: Run health checks, track non-MainWP changes

  • Sync: Force synchronization to get the latest site data

  • Lifecycle: Add, reconnect, disconnect, suspend, unsuspend, remove sites

  • Edit: Modify site settings and group assignments

Update Management (9 tools)

  • Update Overview: See all pending updates across your entire network

  • WordPress Core: Update WordPress to the latest version

  • Plugins: Update individual or all plugins

  • Themes: Update individual or all themes

  • Translations: Update site translations

  • Ignore Management: Ignore/unignore specific updates, list ignored updates

  • Dry-Run Mode: Preview what updates would be applied without making changes

Plugin Management (5 tools)

  • Inventory: List all plugins installed on any site

  • Activation: Activate or deactivate plugins

  • Installation: Install plugins from WordPress.org

  • Removal: Delete unused plugins

Theme Management (4 tools)

  • Inventory: List all themes installed on any site

  • Activation: Change the active theme on any site

  • Installation: Install themes from WordPress.org

  • Removal: Delete unused themes

Client Management (5 tools) - Pro

  • CRM: List, add, edit, delete clients

  • Site Assignment: Assign sites to clients

Cost Tracking (5 tools) - Pro

  • Expenses: Track plugin, theme, hosting, domain, and service costs

  • Renewals: Monitor recurring costs and renewal dates

Tag Management (2 tools)

  • Organization: List all tags, get sites by tag

Safety & Security

  • Dry-Run by Default: All destructive operations simulate first

  • Bulk Confirmation: Multi-site operations require explicit confirmation

  • Rate Limiting: Prevents overwhelming your servers

  • Pro Feature Handling: Clear error messages when Pro extensions are required


Architecture

┌─────────────────┐     stdio      ┌─────────────────┐
│   Claude Code   │◄──────────────►│  MainWP MCP     │
│   (AI Client)   │                │    Server       │
└─────────────────┘                └────────┬────────┘
                                            │
                                            │ HTTPS REST API
                                            ▼
                                   ┌─────────────────┐
                                   │ MainWP Dashboard│
                                   │   (WordPress)   │
                                   └────────┬────────┘
                                            │
                              ┌─────────────┼─────────────┐
                              │             │             │
                              ▼             ▼             ▼
                        ┌──────────┐ ┌──────────┐ ┌──────────┐
                        │  Site 1  │ │  Site 2  │ │  Site N  │
                        │(WP+Child)│ │(WP+Child)│ │(WP+Child)│
                        └──────────┘ └──────────┘ └──────────┘

Prerequisites

Required Software

Software

Version

Purpose

Node.js

18.0.0+

Runtime environment

npm

8.0.0+

Package management

Git

Any

Cloning the repository

Required Infrastructure

  1. MainWP Dashboard - A WordPress installation with the MainWP Dashboard plugin installed and activated

  2. MainWP Child Sites - Each WordPress site you want to manage must have the MainWP Child plugin installed and connected to your Dashboard

  3. REST API Access - MainWP Dashboard must have the REST API enabled (included in MainWP 4.0+)

  • HTTPS: Your MainWP Dashboard should be served over HTTPS

  • PHP 8.1+: On your MainWP Dashboard for best performance

  • Adequate Memory: 512MB+ PHP memory limit on Dashboard (1GB for 50+ sites)


Installation

Step 1: Clone the Repository

git clone https://github.com/yourusername/mainwp-mcp.git
cd mainwp-mcp

Step 2: Install Dependencies

npm install

This installs:

  • @modelcontextprotocol/sdk - MCP protocol implementation

  • axios - HTTP client for API requests

  • zod - Runtime type validation

  • dotenv - Environment variable management

Step 3: Build the Project

npm run build

This compiles TypeScript to JavaScript in the dist/ directory.

Step 4: Verify Installation

npm start

You should see:

mainwp-mcp v1.0.0 started

Press Ctrl+C to stop the server.


MainWP Dashboard Setup

Before using this MCP server, you need to configure your MainWP Dashboard.

Step 1: Install MainWP Dashboard

If you haven't already:

  1. Log into your WordPress admin panel

  2. Go to Plugins → Add New

  3. Search for "MainWP Dashboard"

  4. Click Install Now, then Activate

  5. Complete the MainWP setup wizard

Step 2: Connect Child Sites

For each WordPress site you want to manage:

  1. On the child site, install and activate the MainWP Child plugin

  2. In your MainWP Dashboard, go to MainWP → Sites → Add New

  3. Enter the site URL and administrator credentials

  4. Click Add Site

Step 3: Enable REST API

  1. In your MainWP Dashboard, go to MainWP → Settings → REST API

  2. Ensure the REST API is Enabled

  3. Click Add API Key

  4. Fill in the details:

    • Description: Claude Code MCP Server (or any descriptive name)

    • Permissions: Select the permissions you want to grant

      • Read: Sites, plugins, themes, updates (recommended)

      • Write: Updates, plugin activation (optional)

  5. Click Generate API Key

  6. Important: Copy both the Consumer Key and Consumer Secret immediately - the secret won't be shown again

Step 4: Note Your API Credentials

You'll need:

  • Dashboard URL: e.g., https://your-mainwp-dashboard.com

  • Consumer Key: A 40-character hex string

  • Consumer Secret: A 40-character hex string

The API key format used by this server is: consumer_key==consumer_secret


Configuration

Environment Variables

Create a .env.local file in the project root:

cp .env.example .env.local

Edit .env.local with your settings:

# Required: MainWP Dashboard URL
# The full URL to your MainWP Dashboard WordPress installation
MAINWP_DASHBOARD_URL=https://your-mainwp-dashboard.com

# Required: API Key
# Format: consumer_key==consumer_secret (note the double equals sign)
MAINWP_API_KEY=abc123def456...==xyz789...

# Optional: Safety Settings
# Enable dry-run mode by default (recommended: true)
MAINWP_ENABLE_DRY_RUN_BY_DEFAULT=true

# Require explicit confirmation for bulk operations (recommended: true)
MAINWP_REQUIRE_CONFIRMATION_BULK=true

# Optional: Test mode (no side effects)
MAINWP_TEST_MODE=false

# Rate limit: maximum API requests per minute (default: 60)
MAINWP_RATE_LIMIT_PER_MINUTE=60

Configuration Options Reference

Variable

Required

Default

Description

MAINWP_DASHBOARD_URL

Yes

-

Full URL to your MainWP Dashboard

MAINWP_API_KEY

Yes

-

API credentials in key==secret format

MAINWP_ENABLE_DRY_RUN_BY_DEFAULT

No

true

Simulate operations by default

MAINWP_REQUIRE_CONFIRMATION_BULK

No

true

Require confirmation for multi-site ops

MAINWP_TEST_MODE

No

false

Simulate mutating operations without side effects

MAINWP_RATE_LIMIT_PER_MINUTE

No

60

Max API requests per minute


Claude Code Integration

Add to your Claude Code MCP configuration file:

Linux/macOS: ~/.config/claude-code/mcp.json Windows: %APPDATA%\claude-code\mcp.json

{
  "mcpServers": {
    "mainwp": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/mainwp-mcp/dist/index.js"],
      "env": {
        "MAINWP_DASHBOARD_URL": "https://your-mainwp-dashboard.com",
        "MAINWP_API_KEY": "your_consumer_key==your_consumer_secret",
        "MAINWP_ENABLE_DRY_RUN_BY_DEFAULT": "true",
        "MAINWP_REQUIRE_CONFIRMATION_BULK": "true",
        "MAINWP_TEST_MODE": "false",
        "MAINWP_RATE_LIMIT_PER_MINUTE": "60"
      }
    }
  }
}

Option 2: Project-Specific Configuration

Create .mcp.json in your project directory:

{
  "mcpServers": {
    "mainwp": {
      "type": "stdio",
      "command": "node",
      "args": ["./node_modules/mainwp-mcp/dist/index.js"],
      "env": {
        "MAINWP_DASHBOARD_URL": "https://your-mainwp-dashboard.com",
        "MAINWP_API_KEY": "your_consumer_key==your_consumer_secret"
      }
    }
  }
}

Verifying the Integration

  1. Restart Claude Code after adding the configuration

  2. Ask Claude: "What MCP tools are available?"

  3. You should see the mainwp_* tools listed

  4. Test with: "List all MainWP sites"


Available Tools

Site Management Tools

mainwp_sites_list

List all connected WordPress sites.

Parameters:

Name

Type

Required

Description

status

string

No

Filter by status: connected, disconnected, all

Example Response:

{
  "sites": [
    {
      "id": "1",
      "name": "My Blog",
      "url": "https://myblog.com",
      "status": "connected",
      "wp_version": "6.4.2",
      "php_version": "8.2",
      "last_sync": "2024-01-15T10:30:00Z"
    }
  ],
  "total": 1
}

mainwp_sites_get

Get detailed information for a specific site.

Parameters:

Name

Type

Required

Description

site_id

string

Yes

The site ID from MainWP

Returns: Comprehensive site data including plugins, themes, health score, database size, etc.

mainwp_sites_count

Get the total count of connected sites.

Parameters: None

mainwp_sites_sync

Force synchronization of site data.

Parameters:

Name

Type

Required

Description

site_id

string

Yes

The site ID to sync

mainwp_sites_check

Run a health check on a site.

Parameters:

Name

Type

Required

Description

site_id

string

Yes

The site ID to check

mainwp_sites_add

Add a new site to MainWP Dashboard.

Parameters:

Name

Type

Required

Description

url

string

Yes

The site URL

admin_username

string

Yes

WordPress admin username

name

string

No

Display name for the site

mainwp_sites_reconnect

Reconnect a disconnected site.

Parameters:

Name

Type

Required

Description

site_id

string

Yes

The site ID to reconnect

mainwp_sites_disconnect

Disconnect a site from MainWP (does not delete the site).

Parameters:

Name

Type

Required

Description

site_id

string

Yes

The site ID to disconnect


Update Management Tools

mainwp_updates_list

List all pending updates across all sites.

Parameters:

Name

Type

Required

Description

site_id

string

No

Filter to specific site

type

string

No

Filter by type: wp, plugins, themes, all

Example Response:

{
  "updates": [
    {
      "site_id": "1",
      "site_name": "My Blog",
      "site_url": "https://myblog.com",
      "wp_upgrades": {
        "current": "6.4.1",
        "new": "6.4.2"
      },
      "plugin_upgrades": {
        "akismet": {
          "name": "Akismet",
          "version": "5.0",
          "new_version": "5.1"
        }
      }
    }
  ]
}

mainwp_updates_apply

Apply all pending updates for a site.

Parameters:

Name

Type

Required

Description

site_id

string

Yes

The site ID to update

dry_run

boolean

No

Simulate without applying (default: true)

mainwp_updates_wp

Update WordPress core on a site.

Parameters:

Name

Type

Required

Description

site_id

string

Yes

The site ID

dry_run

boolean

No

Simulate without applying (default: true)

mainwp_updates_plugins

Update plugins on a site.

Parameters:

Name

Type

Required

Description

site_id

string

Yes

The site ID

plugins

string[]

No

Specific plugin slugs (omit for all)

dry_run

boolean

No

Simulate without applying (default: true)

mainwp_updates_themes

Update themes on a site.

Parameters:

Name

Type

Required

Description

site_id

string

Yes

The site ID

themes

string[]

No

Specific theme slugs (omit for all)

dry_run

boolean

No

Simulate without applying (default: true)


Plugin Management Tools

mainwp_plugins_list

List all plugins installed on a site.

Parameters:

Name

Type

Required

Description

site_id

string

Yes

The site ID

status

string

No

Filter: active, inactive, all

Example Response:

{
  "plugins": [
    {
      "name": "Akismet Anti-spam",
      "slug": "akismet",
      "version": "5.1",
      "active": true,
      "update": null
    },
    {
      "name": "Hello Dolly",
      "slug": "hello-dolly",
      "version": "1.7.2",
      "active": false,
      "update": null
    }
  ]
}

mainwp_plugins_activate

Activate a plugin on a site.

Parameters:

Name

Type

Required

Description

site_id

string

Yes

The site ID

plugin

string

Yes

Plugin slug to activate

mainwp_plugins_deactivate

Deactivate a plugin on a site.

Parameters:

Name

Type

Required

Description

site_id

string

Yes

The site ID

plugin

string

Yes

Plugin slug to deactivate


Theme Management Tools

mainwp_themes_list

List all themes installed on a site.

Parameters:

Name

Type

Required

Description

site_id

string

Yes

The site ID

mainwp_themes_activate

Activate a theme on a site.

Parameters:

Name

Type

Required

Description

site_id

string

Yes

The site ID

theme

string

Yes

Theme slug to activate

mainwp_themes_install

Install a theme from WordPress.org.

Parameters:

Name

Type

Required

Description

site

string

Yes

Site ID or domain

slug

string

Yes

Theme slug from WordPress.org

dry_run

boolean

No

Simulate without installing (default: true)

mainwp_themes_delete

Delete a theme from a site (must not be active).

Parameters:

Name

Type

Required

Description

site

string

Yes

Site ID or domain

slug

string

Yes

Theme slug to delete

dry_run

boolean

No

Simulate without deleting (default: true)


Extended Site Management Tools

mainwp_sites_edit

Edit site settings in MainWP Dashboard.

Parameters:

Name

Type

Required

Description

site

string

Yes

Site ID or domain

name

string

No

New display name

groupids

string

No

Comma-separated group IDs

dry_run

boolean

No

Simulate without changes (default: true)

mainwp_sites_suspend

Suspend a site (disable monitoring and updates).

Parameters:

Name

Type

Required

Description

site

string

Yes

Site ID or domain

dry_run

boolean

No

Simulate without suspending (default: true)

mainwp_sites_unsuspend

Unsuspend a site (re-enable monitoring and updates).

Parameters:

Name

Type

Required

Description

site

string

Yes

Site ID or domain

dry_run

boolean

No

Simulate without unsuspending (default: true)

mainwp_sites_changes

Get list of changes made outside MainWP (direct WordPress admin changes).

Parameters:

Name

Type

Required

Description

site

string

Yes

Site ID or domain

mainwp_sites_remove

Permanently remove a site from MainWP Dashboard.

Parameters:

Name

Type

Required

Description

site

string

Yes

Site ID or domain

confirmed

boolean

Yes

Must be true to confirm deletion


Extended Update Management Tools

mainwp_updates_translations

Update translations on a site.

Parameters:

Name

Type

Required

Description

site

string

Yes

Site ID or domain

dry_run

boolean

No

Simulate without updating (default: true)

mainwp_updates_ignore

Ignore a plugin or theme update (globally or per-site).

Parameters:

Name

Type

Required

Description

type

string

Yes

plugin or theme

slug

string

Yes

Plugin or theme slug

site

string

No

Specific site (omit for global)

mainwp_updates_unignore

Stop ignoring a plugin or theme update.

Parameters:

Name

Type

Required

Description

type

string

Yes

plugin or theme

slug

string

Yes

Plugin or theme slug

site

string

No

Specific site (omit for global)

mainwp_updates_ignored

List all ignored updates.

Parameters:

Name

Type

Required

Description

site

string

No

Filter by specific site


Client Management Tools (Pro)

Requires MainWP Pro with Client Reports extension.

mainwp_clients_list

List all clients.

Parameters:

Name

Type

Required

Description

search

string

No

Search by name or email

page

number

No

Page number

per_page

number

No

Results per page

mainwp_clients_get

Get detailed information about a client.

Parameters:

Name

Type

Required

Description

client

string

Yes

Client ID or email

mainwp_clients_add

Add a new client.

Parameters:

Name

Type

Required

Description

name

string

Yes

Client name

email

string

Yes

Client email

company

string

No

Company name

phone

string

No

Phone number

address

string

No

Street address

city

string

No

City

state

string

No

State/Province

zip

string

No

ZIP/Postal code

country

string

No

Country

note

string

No

Internal notes

selected_sites

string

No

Comma-separated site IDs

mainwp_clients_edit

Edit a client's information.

Parameters:

Name

Type

Required

Description

client

string

Yes

Client ID or email

dry_run

boolean

No

Simulate without changes (default: true)

(all other fields from add)

No

Fields to update

mainwp_clients_delete

Delete a client.

Parameters:

Name

Type

Required

Description

client

string

Yes

Client ID or email

confirmed

boolean

Yes

Must be true to confirm deletion


Cost Tracking Tools (Pro)

Requires MainWP Pro with Cost Tracker extension.

mainwp_costs_list

List all tracked costs.

Parameters:

Name

Type

Required

Description

search

string

No

Search by name

type

string

No

single or recurring

product_type

string

No

plugin, theme, hosting, domain, service, other

page

number

No

Page number

per_page

number

No

Results per page

mainwp_costs_get

Get details about a specific cost.

Parameters:

Name

Type

Required

Description

cost

string

Yes

Cost ID

mainwp_costs_add

Add a new cost entry.

Parameters:

Name

Type

Required

Description

name

string

Yes

Cost name/description

type

string

No

single or recurring (default: single)

product_type

string

No

Category (default: other)

price

number

No

Cost amount

currency

string

No

Currency code (default: USD)

renewal_frequency

string

No

monthly, yearly, or lifetime

last_renewal

string

No

Date (YYYY-MM-DD)

next_renewal

string

No

Date (YYYY-MM-DD)

sites

string

No

Comma-separated site IDs

note

string

No

Additional notes

mainwp_costs_edit

Edit a cost entry.

Parameters:

Name

Type

Required

Description

cost

string

Yes

Cost ID

dry_run

boolean

No

Simulate without changes (default: true)

(all other fields from add)

No

Fields to update

mainwp_costs_delete

Delete a cost entry.

Parameters:

Name

Type

Required

Description

cost

string

Yes

Cost ID

confirmed

boolean

Yes

Must be true to confirm deletion


Tag Management Tools

mainwp_tags_list

List all tags/groups defined in MainWP.

Parameters:

Name

Type

Required

Description

search

string

No

Filter tags by name

mainwp_tags_sites

Get all sites assigned to a specific tag.

Parameters:

Name

Type

Required

Description

tag

string

Yes

Tag ID or name


Usage Examples

Once integrated with Claude Code, you can interact using natural language.

Checking Site Status

You: "List all my WordPress sites"
Claude: [Calls mainwp_sites_list]
"You have 5 connected sites:
1. My Blog (https://myblog.com) - WordPress 6.4.2, PHP 8.2
2. Client Site A (https://clienta.com) - WordPress 6.4.2, PHP 8.1
..."

Checking for Updates

You: "What updates are available across all sites?"
Claude: [Calls mainwp_updates_list]
"I found updates available:

My Blog (https://myblog.com):
- WordPress: 6.4.1 → 6.4.2
- Akismet: 5.0 → 5.1
- Yoast SEO: 21.5 → 21.6

Client Site A (https://clienta.com):
- WordPress: 6.4.2 (up to date)
- WooCommerce: 8.3.0 → 8.4.0
..."

Applying Updates (Dry Run)

You: "Update plugins on myblog.com"
Claude: [Calls mainwp_updates_plugins with dry_run=true]
"Dry run completed. If applied, these updates would be installed:
- Akismet: 5.0 → 5.1
- Yoast SEO: 21.5 → 21.6

Would you like me to apply these updates for real?"

You: "Yes, apply them"
Claude: [Calls mainwp_updates_plugins with dry_run=false]
"Updates applied successfully:
- Akismet updated to 5.1
- Yoast SEO updated to 21.6"

Plugin Management

You: "What plugins are installed on site ID 3?"
Claude: [Calls mainwp_plugins_list]
"Site 3 has 12 plugins installed:

Active (8):
- Akismet Anti-spam (5.1)
- Yoast SEO (21.6)
- WooCommerce (8.4.0)
...

Inactive (4):
- Hello Dolly (1.7.2)
..."

You: "Deactivate Hello Dolly on that site"
Claude: [Calls mainwp_plugins_deactivate]
"Hello Dolly has been deactivated on site 3."

Security Check

You: "Which of my sites have outdated PHP versions?"
Claude: [Calls mainwp_sites_list, analyzes results]
"2 sites are running outdated PHP:
- Old Client Site (https://oldclient.com) - PHP 7.4 (EOL)
- Legacy Site (https://legacy.com) - PHP 8.0 (security fixes only)

I recommend upgrading these to PHP 8.2 or 8.3."

Safety Features

Dry-Run Mode

By default, all operations that modify sites run in dry-run mode. This means:

  • The operation is simulated but not executed

  • You see what would happen without any risk

  • You must explicitly set dry_run: false to apply changes

To disable dry-run by default (not recommended for production):

MAINWP_ENABLE_DRY_RUN_BY_DEFAULT=false

Bulk Operation Confirmation

When operations would affect multiple sites, the server requires explicit confirmation:

You: "Update all plugins on all sites"
Claude: "This would update plugins on 15 sites. Please confirm you want to proceed."

To disable this safeguard (not recommended):

MAINWP_REQUIRE_CONFIRMATION_BULK=false

Test Mode (No Side Effects)

For smoke testing or demos, you can enable test mode to prevent any changes while still exercising tool paths:

MAINWP_TEST_MODE=true

When enabled, mutating tools return simulated results and make no API calls.

Rate Limiting

The server enforces rate limiting to prevent overwhelming your MainWP Dashboard:

  • Default: 60 requests per minute

  • Requests exceeding the limit return an error with a retry delay

  • Prevents accidental DoS of your own infrastructure

To adjust the rate limit:

MAINWP_RATE_LIMIT_PER_MINUTE=30  # More conservative
MAINWP_RATE_LIMIT_PER_MINUTE=120 # More aggressive

Troubleshooting

Server Won't Start

Error: "Missing required environment variables"

Ensure MAINWP_DASHBOARD_URL and MAINWP_API_KEY are set. Check:

  • .env.local exists and has the correct values

  • If using MCP config, the env block has both variables

Error: "Cannot find module"

Run npm run build to compile TypeScript.

API Connection Issues

Error: "401 Unauthorized"

  • Verify your API key is correct

  • Check the format: consumer_key==consumer_secret (double equals)

  • Ensure the API key hasn't been revoked in MainWP

Error: "Connection refused" or timeout

  • Verify MAINWP_DASHBOARD_URL is correct and accessible

  • Check your MainWP Dashboard is running

  • Ensure your firewall allows the connection

Claude Code Integration Issues

Tools not appearing in Claude Code

  1. Verify mcp.json syntax is valid JSON

  2. Check the path to dist/index.js is absolute and correct

  3. Restart Claude Code completely after config changes

  4. Check Claude Code logs for MCP connection errors

Permission errors

  • Ensure the API key has the required permissions in MainWP

  • Check that read/write permissions match what you're trying to do

MainWP Dashboard Issues

Sites showing as disconnected

  • Run a sync: Use mainwp_sites_sync tool

  • Check the MainWP Child plugin is active on the child site

  • Verify the child site is accessible from your Dashboard

Updates not showing

  • Force a sync on the site

  • Check that MainWP Dashboard has recent sync data

  • Verify the MainWP Child plugin version is compatible


Development

Project Structure

mainwp-mcp/
├── src/
│   ├── index.ts                 # Entry point
│   ├── server.ts                # MCP server setup
│   ├── clients/
│   │   └── mainwp-api-client.ts # REST API HTTP client
│   ├── tools/
│   │   ├── index.ts             # Tool registration
│   │   ├── site-tools.ts        # Site management tools
│   │   ├── update-tools.ts      # Update tools
│   │   ├── plugin-tools.ts      # Plugin tools
│   │   └── theme-tools.ts       # Theme tools
│   ├── types/
│   │   └── mainwp-types.ts      # TypeScript interfaces
│   ├── schemas/
│   │   └── tool-schemas.ts      # Zod validation schemas
│   └── utils/
│       ├── safety.ts            # Dry-run & confirmation logic
│       └── error-handling.ts    # Error utilities
├── dist/                        # Compiled JavaScript (git-ignored)
├── .env.example                 # Environment template
├── .env.local                   # Your config (git-ignored)
├── package.json
├── tsconfig.json
└── README.md

Development Commands

# Install dependencies
npm install

# Run in development mode (with hot reload via tsx)
npm run dev

# Build for production
npm run build

# Start production server
npm start

# Clean build artifacts
npm run clean

Adding New Tools

  1. Create or edit a file in src/tools/

  2. Define the tool schema in src/schemas/tool-schemas.ts

  3. Register the tool in src/tools/index.ts

  4. Add corresponding API method in src/clients/mainwp-api-client.ts

  5. Rebuild: npm run build

Testing

# Test API connection manually
curl -H "Authorization: Bearer YOUR_KEY==YOUR_SECRET" \
  https://your-dashboard.com/wp-json/mainwp/v2/sites

# Run a safe smoke test of all tools (test mode, no side effects)
npm run smoke-test

# Run the server and test with Claude Code
npm start

API Reference

This server uses the MainWP REST API v2.

Authentication

All requests use Bearer token authentication:

Authorization: Bearer {consumer_key}=={consumer_secret}

Base URL

https://your-dashboard.com/wp-json/mainwp/v2/

Key Endpoints Used

Endpoint

Method

Description

/sites

GET

List all sites

/sites/{id}

GET

Get site details

/sites/{id}/sync

POST

Sync site data

/updates

GET

List pending updates

/sites/{id}/plugins

GET

List plugins

/sites/{id}/themes

GET

List themes

For complete API documentation, see the MainWP REST API Documentation.


Contributing

Contributions are welcome! Please:

  1. Fork the repository

  2. Create a feature branch: git checkout -b feature/my-feature

  3. Make your changes

  4. Run npm run build to ensure it compiles

  5. Commit your changes: git commit -m "Add my feature"

  6. Push to your fork: git push origin feature/my-feature

  7. Open a Pull Request

Guidelines

  • Follow existing code style

  • Add TypeScript types for new code

  • Update documentation for new features

  • Test with a real MainWP Dashboard before submitting


License

MIT License - see LICENSE for details.


Acknowledgments

  • MainWP for the excellent WordPress management platform

  • Anthropic for Claude and the MCP protocol

  • The open-source community for the excellent TypeScript tooling

Development Status

See project_status.md for recent development activity and context.

Available Tools

43 tools
mainwp_clients_addB

Add a new client to MainWP (Pro feature)

ParametersJSON Schema
NameRequiredDescriptionDefault
zipNoZIP/Postal code
cityNoCity
nameYesClient name (required)
noteNoInternal notes about client
emailYesClient email address (required)
phoneNoPhone number
stateNoState/Province
addressNoStreet address
companyNoCompany name
countryNoCountry
selected_sitesNoComma-separated site IDs to assign

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description must disclose behavioral traits. It only states it adds a client and is Pro, omitting success criteria, error conditions, authentication needs, or side effects.

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

Conciseness4/5

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

The description is a single short sentence with no fluff, but it may be too terse for a tool with 11 parameters.

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

Completeness2/5

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

Given 11 parameters, no output schema, and no annotations, the description is insufficient. It fails to explain return values, constraints, or important notes about fields like 'selected_sites'.

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 no extra meaning beyond schema descriptions; it does not explain parameter relationships or provide usage context.

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 verb 'Add' and the resource 'client', distinguishing it from sibling tools like mainwp_clients_delete, mainwp_clients_edit, etc. It also notes the Pro feature, adding specificity.

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, nor are any prerequisites, exclusions, or typical use cases mentioned.

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

mainwp_clients_deleteB

Delete a client from MainWP (Pro feature - requires confirmation)

ParametersJSON Schema
NameRequiredDescriptionDefault
clientYesClient ID (number) or email address
confirmedNoMust be true to confirm deletion

TDQS

B3.4/5.0
Behavior3/5

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

The description adds two behavioral traits: it is a Pro feature and requires confirmation. However, it does not disclose whether deletion is irreversible, what consequences it has (e.g., cascading effects), or any permission requirements. With no annotations, the description's transparency is basic but not comprehensive.

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, efficient sentence that immediately conveys the tool's purpose and key constraints. Every word earns its place; there is no redundancy or unnecessary detail.

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

Completeness2/5

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

For a destructive action without an output schema or annotations, the description is too minimal. It omits critical context such as what happens after deletion (e.g., return value, irreversible nature), required permissions, and whether the action can be rolled back.

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%, so the parameters are already well-documented. The description does not add new meaning beyond what the schema provides, but it reiterates the confirmation requirement which aligns with the schema's description of the 'confirmed' field.

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 deletes a client from MainWP, using a specific verb ('Delete') and resource ('client'). It distinguishes from sibling tools like mainwp_clients_add or mainwp_clients_get, as it is the only deletion operation for clients.

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 (e.g., archiving or suspending). It only mentions that confirmation is required, but does not specify conditions or when not to use it.

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

mainwp_clients_editB

Edit an existing client in MainWP (Pro feature)

ParametersJSON Schema
NameRequiredDescriptionDefault
zipNoZIP/Postal code
cityNoCity
nameNoUpdated client name
noteNoInternal notes
emailNoUpdated email address
phoneNoPhone number
stateNoState/Province
clientYesClient ID (number) or email address
addressNoStreet address
companyNoCompany name
countryNoCountry
dry_runNoSimulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT)
selected_sitesNoComma-separated site IDs

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only says 'Edit an existing client', failing to disclose behavior like mutability, required permissions, error handling, or the effect of incomplete data.

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

Conciseness4/5

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

The description is a single efficient sentence, earning its place. However, it sacrifices completeness for brevity in a context where more detail would help.

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

Completeness2/5

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

Given 13 parameters, no output schema, and no annotations, the description is too minimal. It lacks information about return values, error conditions, parameter interdependencies, and practical usage context.

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?

With 100% schema coverage, the schema already describes all 13 parameters. The description adds no additional meaning or context beyond the schema, so 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 'Edit an existing client in MainWP (Pro feature)' clearly states the action (edit) and resource (client), distinguishing it from sibling tools like add, delete, get, and list.

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 on when to use this tool versus alternatives, no prerequisites, and no mention of when not to use it. The description simply states the action without context.

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

mainwp_clients_getB

Get detailed information about a specific client (Pro feature)

ParametersJSON Schema
NameRequiredDescriptionDefault
clientYesClient ID (number) or email address

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, permission requirements, or the scope of 'detailed information'. The mention of 'Pro feature' is a licensing constraint, not a behavioral trait.

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

Conciseness4/5

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

The description is a single sentence with no wasted words. It could be slightly more informative but is appropriately concise for its simplicity.

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 has one parameter and no output schema, the description is adequate for basic purpose but lacks details on what 'detailed information' includes, which is important for an AI agent to know what to expect.

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 covers 100% of the parameter with a clear description ('Client ID (number) or email address'). The tool description adds no additional meaning beyond the schema, so baseline 3.

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 'Get detailed information about a specific client', which is a specific verb and resource. It distinguishes from sibling tools like add, delete, edit, and list.

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, such as when to use mainwp_clients_list for overview vs mainwp_clients_get for details.

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

mainwp_clients_listA

List all clients in MainWP (Pro feature - requires Client Reports extension)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination
searchNoSearch clients by name or email
per_pageNoResults per page (default: 20)

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the Pro requirement and extension dependency, but lacks details on pagination or search behavior beyond the schema.

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 is front-loaded and contains 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?

Given the schema covers pagination and search params, and no output schema exists, the description provides adequate context for a list tool. It could mention paginated results explicitly but is otherwise 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 baseline is 3. The description does not add additional meaning beyond the schema's parameter descriptions.

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 verb 'List' and the resource 'clients', distinguishing it from sibling tools like add, delete, edit, get.

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 mentions it is a Pro feature requiring the Client Reports extension, but does not provide explicit guidance on when to use this tool versus alternatives like mainwp_clients_get.

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

mainwp_costs_addB

Add a new cost entry to MainWP (Pro feature)

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesCost name/description (required)
noteNoAdditional notes
typeNoOne-time or recurring costsingle
priceNoCost amount
sitesNoComma-separated site IDs this cost applies to
currencyNoCurrency code (e.g., USD, EUR)USD
last_renewalNoLast renewal date (YYYY-MM-DD)
next_renewalNoNext renewal date (YYYY-MM-DD)
product_typeNoCategory of the costother
renewal_frequencyNoFor recurring costs: billing frequency

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, increasing the descriptive burden. The description only says 'Add', implying creation but not disclosing side effects, required permissions, or whether the action is reversible. Minimal behavioral insight.

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

Conciseness4/5

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

The description is a single clear sentence with no wasted words. It could include a hint about Pro license requirement, but it is appropriately short.

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

Completeness2/5

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

For a creation tool with 10 parameters, no output schema, and no annotations, the description is too sparse. It does not explain return values, success/failure behavior, or how the cost entry is stored.

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?

All input schema properties have descriptions (100% coverage), so the schema already provides parameter semantics. The description adds no extra meaning beyond 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?

The description clearly states the verb 'Add' and the resource 'cost entry', and distinguishes it from sibling tools like mainwp_costs_edit or mainwp_costs_delete. The context 'MainWP (Pro feature)' is specific.

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?

The description provides no guidance on when to use this tool versus alternatives (e.g., mainwp_costs_edit for modifications). No when-not or context for selection is given.

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

mainwp_costs_deleteB

Delete a cost entry from MainWP (Pro feature - requires confirmation)

ParametersJSON Schema
NameRequiredDescriptionDefault
costYesCost ID (number)
confirmedNoMust be true to confirm deletion

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must carry the full burden. It reveals the confirmation gate but omits other behavioral traits: idempotency, effects of deleting non-existent cost, irreversibility, or error behavior.

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?

A single sentence without redundancy. Every word carries meaning—action, resource, feature flag, and prerequisite. No wasted text.

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

Completeness2/5

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

For a destructive tool with no output schema, the description lacks critical context: return value, error handling, reversibility, or confirmation behavior details. Suitable only if agent already knows these implicit semantics.

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 schema already fully describes both parameters (100% coverage). The description adds marginal value by restating the confirmation requirement and noting 'Pro feature', but does not explain beyond what the schema provides.

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 ('Delete') and resource ('cost entry from MainWP'), clearly distinguishing it from add, edit, get, and list siblings. Including 'Pro feature - requires confirmation' adds relevant context.

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 on when to use this tool vs. alternatives (e.g., mainwp_costs_edit). The 'requires confirmation' hint is present but does not establish usage context or exclusions.

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

mainwp_costs_editB

Edit an existing cost entry in MainWP (Pro feature)

ParametersJSON Schema
NameRequiredDescriptionDefault
costYesCost ID (number)
nameNoUpdated cost name
noteNoAdditional notes
typeNoCost type
priceNoCost amount
sitesNoSite IDs this cost applies to
dry_runNoSimulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT)
currencyNoCurrency code
last_renewalNoLast renewal date
next_renewalNoNext renewal date
product_typeNoProduct category
renewal_frequencyNoBilling frequency

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only mentions 'Pro feature' indicating a licensing requirement. No details on side effects, permissions, or mutation consequences are provided.

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

Conciseness4/5

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

Single sentence is efficient and front-loaded. However, it lacks detail that could be included without much extra length.

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

Completeness2/5

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

For a tool with 12 parameters, no output schema, and no annotations, the description is too sparse. It does not explain the operation's significance or how to use the parameters effectively.

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 descriptions for all parameters. The description adds no additional meaning beyond what the schema already provides, so baseline score 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 states 'Edit an existing cost entry' which clearly specifies the verb (edit) and resource (cost entry). It distinguishes this tool from sibling tools like add, delete, get, and list.

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 on when to use this tool versus alternatives. It does not indicate prerequisites or context for editing cost entries relative to other tools.

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

mainwp_costs_getC

Get detailed information about a specific cost entry (Pro feature)

ParametersJSON Schema
NameRequiredDescriptionDefault
costYesCost ID (number)

TDQS

C2.8/5.0
Behavior2/5

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

The description does not disclose any behavioral traits beyond the operation itself. It fails to state that it is read-only, does not mention permissions, side effects, or any constraints. With no annotations, the description should provide such context.

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

Conciseness3/5

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

The description is a single sentence, very concise. However, it is too brief and could include more informative details without becoming verbose. It is front-loaded but lacks depth.

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

Completeness2/5

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

Given the absence of an output schema and the tool's simplicity, the description should at least mention what kind of 'detailed information' is returned. It leaves agents guessing about the response format or fields.

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% as the single parameter 'cost' has a description. The tool description adds no extra meaning beyond the schema. Baseline of 3 is appropriate since schema already covers the parameter.

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 verb 'Get' and the resource 'detailed information about a specific cost entry', distinguishing it from sibling tools like mainwp_costs_list (list all) and mainwp_costs_edit (modify). The mention of 'Pro feature' adds context but is not central.

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 on when to use this tool versus alternatives like mainwp_costs_list or mainwp_costs_get. No prerequisites or exclusion criteria are mentioned. The description only notes it is a Pro feature, which is insufficient.

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

mainwp_costs_listA

List all tracked costs in MainWP (Pro feature - requires Cost Tracker extension)

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination
typeNoFilter by cost type
searchNoSearch costs by name
per_pageNoResults per page (default: 20)
product_typeNoFilter by product type

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the Pro feature and the requirement for the Cost Tracker extension, which is important behavioral context. However, it does not state that the tool is read-only, any authentication needs, or what happens when no costs exist. The description is minimal but adds some value.

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 main action ('List all tracked costs') and appends essential context in parentheses. Every word serves a purpose, and there is no redundancy.

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

Completeness2/5

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

The lack of an output schema means the description should provide some insight into the return format, but it does not. It also does not mention pagination or filtering despite the schema having five optional parameters. The description is too brief for full contextual understanding.

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 each parameter having a description. The tool description does not add any extra meaning beyond the schema, so a 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 'List all tracked costs' which is a specific verb+resource. It distinguishes from sibling tools like mainwp_costs_add, mainwp_costs_delete, mainwp_costs_edit, and mainwp_costs_get. The additional context about Pro feature and Cost Tracker extension further clarifies the tool's scope.

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 for listing costs but does not explicitly guide when to use this tool versus alternatives like mainwp_costs_get for a single cost. No when-not-to-use or exclusion information is provided.

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

mainwp_plugins_activateB

Activate one or more plugins on a WordPress site

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")
dry_runNoSimulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT)
pluginsYesPlugin slug(s) to activate, comma-separated

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It does not disclose what happens if plugins are already active, whether the operation is idempotent, or what permissions are needed. Only the basic action is stated.

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 zero unnecessary words. Every part earns its place.

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

Completeness2/5

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

No output schema is provided, and no annotations exist. The description lacks context about what the tool returns (e.g., success status, activated plugin list). For a mutation tool, this is incomplete.

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 schema documents all parameters. The description adds no extra meaning beyond the schema. 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 states clearly 'Activate one or more plugins on a WordPress site.' It uses a specific verb ('activate') and resource ('plugins on a WordPress site'), and distinguishes itself from sibling tools like 'mainwp_plugins_deactivate' and 'mainwp_plugins_install'.

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 (e.g., install vs activate). There is no mention of prerequisites or conflicts.

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

mainwp_plugins_deactivateB

Deactivate one or more plugins on a WordPress site

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")
dry_runNoSimulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT)
pluginsYesPlugin slug(s) to deactivate, comma-separated

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It does not disclose reversibility, permission requirements, side effects, or what happens to plugin settings. Minimal behavioral context.

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

Conciseness4/5

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

Single sentence, no redundancy. Front-loaded with verb and resource. Could be expanded but remains efficient.

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?

Adequate for a simple action with well-documented parameters. Missing usage guidelines and behavioral details, but covers basic function.

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 descriptions for all 3 parameters. The tool description adds no additional meaning beyond the schema, so 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?

Description clearly states verb 'deactivate', resource 'plugins', and scope 'on a WordPress site'. It uniquely identifies the tool among siblings like mainwp_plugins_activate and mainwp_plugins_delete.

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 explicit guidance on when to use or avoid this tool. No mention of prerequisites, consequences, or comparisons with sibling tools. The description merely states the action without context.

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

mainwp_plugins_deleteA

Delete a plugin from a WordPress site (must be deactivated first)

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")
slugYesPlugin slug to delete (e.g., "akismet/akismet.php")
dry_runNoSimulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT)

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It only states 'Delete' which implies destruction, but fails to mention side effects, reversibility, permissions needed, or what happens to related data. This is insufficient for an irreversible action.

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, front-loaded with the action and precondition. Every word is meaningful, no fluff.

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 deletion tool, the description covers the action and precondition. It lacks information about return values (e.g., success/failure indication) and permanence, but given the simplicity and sibling context, it is nearly 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 coverage is 100% with clear parameter descriptions for site, slug, and dry_run. The tool description does not add any additional meaning beyond what the schema provides. Baseline 3 is appropriate as the description does not enhance understanding of parameters.

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 action ('Delete a plugin') and the resource ('from a WordPress site'), and includes a necessary precondition ('must be deactivated first'). This distinguishes it from sibling tools like activate, deactivate, install, and list.

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 a clear usage guideline: the plugin must be deactivated before deletion. It implicitly tells when not to use (if plugin is active). However, it does not explicitly mention alternatives or when not to use, but the sibling tools provide context.

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

mainwp_plugins_installB

Install a plugin from WordPress.org on a site

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")
slugYesPlugin slug from WordPress.org (e.g., "akismet")
dry_runNoSimulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT)

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided. Description does not disclose side effects (e.g., overwrites existing plugin? requires activation?), error handling, or asynchronous behavior.

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?

Single sentence, no fluff, front-loaded verb and resource. Highly concise for a simple action.

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

Completeness2/5

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

Missing details on installation process, success/failure response, and prerequisites. Incomplete for an agent to fully understand the tool's consequences.

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 descriptive parameter comments. Description adds no additional meaning beyond the schema, so 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?

Description clearly states verb 'install', resource 'plugin from WordPress.org', and target 'site'. Distinct from sibling tools like mainwp_plugins_activate and mainwp_themes_install.

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 on when to use this tool vs alternatives (e.g., activate if already installed). No mention of prerequisites like site being connected or slug validity.

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

mainwp_plugins_listA

List all plugins installed on a WordPress site

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")

TDQS

A3.5/5.0
Behavior3/5

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

As a simple list operation with no annotations, the description doesn't disclose any behavioral traits beyond basic functionality. No mention of scope, side effects, or response characteristics.

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, clear sentence with no unnecessary words. It is front-loaded and efficient.

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 simplicity of the tool (list plugins with one parameter) and no output schema, the description is minimally adequate but lacks details on what information is returned (e.g., plugin names, versions).

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% for the only parameter (site), so the baseline is 3. The description adds no extra meaning beyond what's 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?

The description clearly states the action (list) and the resource (plugins) with context (on a WordPress site). It distinguishes itself from sibling tools like install, activate, deactivate, and delete.

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 on when to use this tool versus alternatives (e.g., filtering, specific plugin details). The description does not provide any context for selection.

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

mainwp_sites_addB

Add a new WordPress site to MainWP Dashboard

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesFull URL of the WordPress site
nameNoDisplay name for the site
adminNoWordPress admin username
groupidsNoComma-separated group IDs
uniqueIdNoMainWP Child unique security ID
ssl_verifyNoVerify SSL certificate

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It does not disclose behavioral traits like whether duplicates are prevented, if existing connections are overridden, or authentication requirements. The simple statement 'Add a new WordPress site' hides important side effects and conditions.

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

Conciseness4/5

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

The description is a single sentence, extremely concise with no redundant words. However, conciseness here sacrifices completeness; while it's efficient, it could include more useful information without being verbose.

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

Completeness2/5

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

Given the tool has 6 parameters (1 required), no output schema, and no annotations, the description is insufficient. It fails to explain return values, error scenarios, or how the addition process works (e.g., if it verifies connectivity). The agent lacks context to handle potential failures.

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%, so parameters are already described with name, type, and purpose. The description adds no additional meaning or context about which parameters are critical or how they interact. 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 the action ('Add a new WordPress site') and the target system ('MainWP Dashboard'), using a specific verb and resource. It distinguishes from sibling tools like mainwp_sites_edit or mainwp_sites_remove, so the agent can infer this is for creation.

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 on when to use this tool versus alternatives. The description does not mention prerequisites, such as whether a site must be installed with MainWP Child plugin, or when to use add vs. edit vs. reconnect. This leaves the agent with no context for decision-making.

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

mainwp_sites_changesA

Get list of changes made outside MainWP (direct WordPress admin changes)

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states the purpose but does not disclose behavioral traits such as whether it returns only recent changes, permission requirements, or response format. For a retrieval tool, more transparency about scope or limits would be beneficial.

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 concise sentence, containing no extraneous information. It efficiently communicates the core functionality.

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?

While the tool is simple with one parameter, the description lacks details about the output or the nature of changes (e.g., date range, severity). Without an output schema, a bit more context about what the list contains 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 coverage is 100%, so the schema already documents the 'site' parameter clearly. The tool description does not add extra meaning beyond the schema, meeting the baseline expectation.

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 retrieves changes made outside MainWP, distinguishing it from sibling tools like mainwp_sites_list which list sites, or mainwp_sites_get which gets specific site details. The verb 'Get list' and resource 'changes' are 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 Guidelines3/5

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

The description implies the tool is for retrieving external changes but lacks explicit guidance on when to use it versus alternatives like mainwp_sites_get or mainwp_updates_list. No mention of prerequisites or when not to use.

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

mainwp_sites_checkB

Check the health and connectivity status of a WordPress site

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description fully bears the burden of behavioral disclosure. It states only that the tool 'checks', implying a read operation, but does not confirm non-destructiveness, required permissions, or behavior on failure. This is insufficient for a clear 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 a single, front-loaded sentence with no extraneous information. Every word contributes to understanding the tool's purpose.

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 lack of output schema and annotations, the description provides only the basic purpose. It omits details like return format, error handling, or connectivity test specifics. For a simple health check this may be minimally adequate, but more context 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 coverage is 100%, so the schema already documents the parameter fully. The tool description does not add any additional meaning or usage hints beyond the schema description. Baseline 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's action (check) and resource (health and connectivity status of a WordPress site). It distinguishes from sibling tools like mainwp_sites_get (gets details) and mainwp_sites_sync (syncs data), but could be more specific about what 'health and connectivity status' entails.

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 usage guidance is provided. The description does not indicate when to use this tool over alternatives, when not to use it, or any prerequisites. This leaves the agent to infer usage from the tool name alone.

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

mainwp_sites_countA

Get the total count of connected WordPress sites

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, and the description does not disclose behavioral traits like runtime, performance, or side effects. It only states the read operation, which is minimally informative.

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?

Single sentence, 9 words, no wasted information. Perfectly concise for a simple tool.

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 zero-parameter tool returning a count, the description is nearly complete. Missing return type (e.g., integer) but implied by 'count'.

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

Parameters4/5

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

No parameters exist, and schema coverage is 100%. Per guidelines, baseline is 4 for 0 parameters.

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 clearly states 'Get the total count of connected WordPress sites', with a specific verb and resource. It distinguishes itself from sibling tools like mainwp_sites_list (which returns a list) by focusing on a count.

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?

No explicit guidance on when to use this tool vs alternatives such as mainwp_sites_list. The purpose is implied but not compared to siblings.

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

mainwp_sites_disconnectA

Disconnect a WordPress site from MainWP Dashboard (keeps site data)

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses a key behavioral trait: 'keeps site data', indicating no data loss. However, it does not explain details like impact on monitoring, reverse operation, or required permissions.

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?

A single, efficient sentence that provides essential information without any unnecessary words. Perfectly concise.

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 tool with one parameter and no output schema, the description covers the core operation and key side-effect (data preservation). Minor gap: no mention of what happens after disconnection (e.g., site remains in list). Overall adequate.

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% and the schema already describes the 'site' parameter as ID or domain. The description adds no further parameter information, so baseline 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 action ('Disconnect') and the resource ('WordPress site from MainWP Dashboard'), and distinguishes from sibling tools like 'remove' (likely deletes data) and 'suspend' (temporary) by noting that site data is kept.

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 explicit guidance on when to use this tool versus alternatives such as 'mainwp_sites_remove' or 'mainwp_sites_suspend'. The description does not provide context for selection.

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

mainwp_sites_editB

Edit site settings (name, groups) in MainWP Dashboard

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew display name for the site
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")
dry_runNoSimulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT)
groupidsNoComma-separated group IDs to assign

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions 'Edit' which implies mutation, but it does not elaborate on permissions, reversibility, or side effects of the operation. The dry_run parameter is not described in the description.

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

Conciseness3/5

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

The description is one short sentence, which is concise, but it lacks some front-loaded details that could improve utility without becoming verbose. It is adequate but not optimized.

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

Completeness2/5

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

Given the tool has 4 parameters and no output schema or annotations, the description should provide more context about mutation behavior, such as whether groupids overwrites or appends, and the effect of dry_run. Current description is insufficient for a write operation.

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 minimal extra meaning beyond the schema, only briefly mentioning 'name, groups' which maps to parameters. No additional constraints or examples are 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 clearly states the verb 'Edit' and the resource 'site settings', and it specifies the fields being edited (name, groups). Among siblings, it is distinguished from add, get, list, and other operations.

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 for editing existing sites, but it does not explicitly state when to use this tool over alternatives like add, suspend, or remove. No exclusions or prerequisites are mentioned.

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

mainwp_sites_getB

Get detailed information about a specific WordPress site

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose behavioral traits such as read-only nature, authentication requirements, or rate limits. It simply states 'get detailed information' without further elaboration on side effects or constraints.

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

Conciseness4/5

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

The description is a single, concise sentence that efficiently conveys the tool's purpose. While brief, it avoids unnecessary words and front-loads the key action.

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

Completeness2/5

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

Despite low complexity, the description omits important details such as what 'detailed information' includes (no output schema), permissions required, or any potential delays. For a tool with no output schema, this leaves agents guessing about return values.

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 the 'site' parameter clearly documented (accepts ID or domain). The description adds no extra meaning beyond the schema, meeting the baseline for high coverage.

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 retrieves detailed information for a specific WordPress site, using a verb+resource structure, and distinguishes from sibling tools like mainwp_sites_list which lists all sites.

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 on when to use this tool versus alternatives (e.g., mainwp_sites_list for multiple sites, mainwp_sites_edit for modifications). The description lacks usage context.

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

mainwp_sites_listB

List all WordPress sites connected to MainWP Dashboard

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoResponse format: full (all details) or basic (id, name, url, status)full

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, and the description does not disclose behavioral traits beyond listing sites. Missing details such as pagination, required permissions, or whether it returns all sites at once.

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?

Single sentence, front-loaded with purpose, no superfluous text.

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?

With one parameter and no output schema, the description gives the essential purpose. The schema explains the parameter fully, but return value details (e.g., what 'full' vs 'basic' contains) are covered by the schema, making it nearly 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?

Input schema coverage is 100%, including a description for the 'format' parameter. The tool description adds no extra meaning beyond the schema, earning baseline 3.

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 'List all WordPress sites connected to MainWP Dashboard' uses a specific verb ('List') and resource ('WordPress sites'), clearly distinguishing it from sibling tools like mainwp_sites_get (single site) or mainwp_sites_add (create).

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 on when to use this tool versus alternatives (e.g., mainwp_sites_list vs mainwp_sites_get). The description only states what it does without context for selection.

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

mainwp_sites_reconnectB

Reconnect to a WordPress site that has lost connection

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It states the action but does not mention side effects, error conditions, or whether it requires authentication or permissions. The agent is left without critical behavioral context.

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

Conciseness4/5

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

A single, concise sentence that is front-loaded. It could be slightly more structured (e.g., listing the allowed parameter types), but it is efficient and not verbose.

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 simple tool with one parameter and no output schema, the description is minimally adequate. However, it lacks detail on what happens if the site is already connected or if the site ID/domain is invalid, which 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?

The input schema provides 100% coverage with a clear description for the 'site' parameter. The description adds no extra meaning beyond the schema, so a baseline 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 uses a specific verb 'Reconnect' and a clear resource 'WordPress site that has lost connection'. It distinguishes this tool from siblings like mainwp_sites_disconnect and mainwp_sites_check, which handle other states.

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 on when to use this tool versus alternatives (e.g., when to use reconnect vs check or sync). It does not provide prerequisites or conditions for reconnecting, leaving the agent to infer usage.

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

mainwp_sites_removeA

Permanently remove a site from MainWP Dashboard (requires confirmation)

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")
confirmedNoMust be true to confirm permanent deletion

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the disclosure that removal is permanent and requires confirmation is minimal but adequate. It lacks details on consequences (irreversibility, impact on associated data) that would be expected for a destructive action.

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?

A single sentence that is clear, direct, and contains no unnecessary words. It effectively communicates the essential purpose and a key requirement.

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 deletion tool, the description conveys the core function. However, it does not mention return values or error conditions, which would be helpful given the absence of an output schema.

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 good descriptions for both parameters (site ID/domain and confirmation). The description adds no additional meaning beyond what the schema already provides.

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 action ('permanently remove') and the resource ('site from MainWP Dashboard'), and it distinguishes from sibling tools like suspend or disconnect by emphasizing permanence and confirmation.

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 for permanent deletion and that confirmation is required, but does not explicitly guide when to use this tool versus alternatives (e.g., suspend vs. remove) or provide when-not-to-use conditions.

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

mainwp_sites_suspendB

Suspend a WordPress site (temporarily disable monitoring and updates)

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")
dry_runNoSimulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT)

TDQS

B3.2/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It says 'temporarily disable monitoring and updates' but lacks details on side effects, permissions, reversibility beyond the existence of unsuspend, or any other behavioral traits.

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

Conciseness4/5

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

Single sentence, efficiently front-contained. No unnecessary words, but could be slightly more informative without becoming verbose.

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 low complexity (2 params, no output schema, no nested objects), the description is adequate but lacks behavioral context and usage scenarios. Sibling tools indicate a broader ecosystem, and more context would help.

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 covers both parameters with descriptions (site and dry_run). Description adds no extra parameter info beyond the schema, so 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 the verb 'Suspend' and the resource 'WordPress site', and explains it disables monitoring and updates. It distinguishes from the sibling 'mainwp_sites_unsuspend'.

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 on when to use or not use this tool, no alternatives mentioned, no prerequisites or context for usage.

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

mainwp_sites_syncB

Sync data from WordPress site(s) to MainWP Dashboard

ParametersJSON Schema
NameRequiredDescriptionDefault
siteNoSite to sync. Omit to sync all sites.
confirmedNoConfirm bulk operation affecting multiple sites (required for bulk ops)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits such as whether the sync is destructive, requires authentication, or is asynchronous. The vague 'sync data' provides no insight into these aspects.

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

Conciseness4/5

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

The description is a single concise sentence with no fluff, but it lacks structural elements like bullet points or additional context that might improve usability.

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

Completeness2/5

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

For a sync operation with no output schema and minimal annotations, the description is incomplete. It does not explain what data is synced, the impact on existing data, or expected results, leaving significant gaps.

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 existing parameter descriptions are adequate. The tool description adds no additional meaning beyond what the schema provides, resulting in a baseline score.

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 specifies the verb 'sync' and the resource 'data from WordPress site(s) to MainWP Dashboard', distinguishing it from sibling tools that perform CRUD, check, or list operations.

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 on when to use this tool versus alternatives like mainwp_sites_check or mainwp_sites_list. The description lacks any context for appropriate usage scenarios.

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

mainwp_sites_unsuspendA

Unsuspend a WordPress site (re-enable monitoring and updates)

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")
dry_runNoSimulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT)

TDQS

A3.6/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 full responsibility. It discloses the basic effect (re-enabling monitoring/updates) but does not cover prerequisites, side effects, or whether it's reversible. Adequate but minimal.

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 no wasted words. It efficiently conveys the core purpose.

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 tool with 2 parameters, no output schema, and no annotations, the description is largely complete. It covers the main purpose and the effect. Minor omission: it doesn't state that the site must be suspended first.

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% for both parameters, so the schema already describes them. The description adds no additional parameter-level information beyond what is 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?

The description clearly states the action (unsuspend) and resource (WordPress site), with parenthetical context explaining the effect (re-enable monitoring and updates). This distinguishes it from the sibling tool 'mainwp_sites_suspend'.

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. It does not mention that the site must be in a suspended state, or that this is the inverse of 'mainwp_sites_suspend'.

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

mainwp_tags_listC

List all tags/groups defined in MainWP Dashboard

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoSearch tags by name

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It only states the purpose without disclosing behavior such as pagination, ordering, or response format. The search parameter is not explained beyond schema.

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

Conciseness4/5

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

Very concise single sentence. No wasted words, but it is minimal. Could be slightly improved by adding front-loaded context about what the tool does not do.

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 low complexity (1 optional param, no output schema), the description is adequate but lacks context about related tools (e.g., mainwp_tags_sites) and typical use cases. Could mention that this is a read-only operation.

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% for the single parameter, so baseline is 3. Description adds no additional semantics about the search parameter (e.g., case sensitivity, exact match vs partial).

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?

Description clearly states it lists all tags/groups in MainWP Dashboard, using verb 'list' and specific resource 'tags/groups'. However, it does not differentiate from sibling tool mainwp_tags_sites, which likely deals with tag-site relationships.

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 on when to use this tool versus alternatives like mainwp_tags_sites. No mention of prerequisites, when to use search, or exclusions.

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

mainwp_tags_sitesA

Get all sites that have a specific tag/group assigned

ParametersJSON Schema
NameRequiredDescriptionDefault
tagYesTag ID or name

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It indicates a read operation ('Get') but does not disclose additional behavioral traits such as pagination, error handling for invalid tags, or data freshness. The description is minimal but sufficient for a simple read operation.

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 with no unnecessary words. It is concise and front-loaded, providing essential information efficiently.

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?

Given the low complexity (one parameter, no output schema), the description is fairly complete. It states the tool retrieves all sites for a given tag, which is sufficient. However, it could explicitly mention that the output is a list of sites.

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 has 100% coverage with parameter 'tag' described as 'Tag ID or name'. The description does not add extra meaning beyond the schema, so it meets the baseline for high coverage.

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 'Get all sites that have a specific tag/group assigned', which specifies the verb (Get) and resource (sites filtered by tag). It effectively distinguishes from sibling tools like mainwp_sites_list (all sites) and mainwp_tags_list (list tags).

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 when sites need to be filtered by a specific tag, but it does not explicitly state when not to use this tool or mention alternatives. This provides adequate but not explicit guidance.

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

mainwp_themes_activateC

Activate a theme on a WordPress site

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")
themeYesTheme slug to activate
dry_runNoSimulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits but only states 'activate'. It does not mention that activating a theme changes the active theme, overrides the previous one, or that it requires proper permissions. The dry_run parameter, which affects behavior, is not mentioned. The minimal description provides insufficient behavioral context.

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

Conciseness4/5

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

The description is a single concise sentence with no fluff. It is front-loaded with the core purpose. However, it could be slightly expanded to include key parameters or usage hints without losing conciseness.

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

Completeness2/5

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

Given the tool has 3 parameters and no output schema, the description is incomplete. It provides no information on return values (e.g., success/error messages) or post-activation state. The lack of usage guidelines and behavioral transparency leaves significant gaps for an agent to correctly invoke the tool.

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 each parameter described. The description adds no extra meaning beyond the schema; it does not explain the format of the site ID or theme slug, or clarify the dry_run parameter. As per guidelines, baseline 3 is appropriate when schema does the heavy lifting.

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 action 'Activate a theme' and the target 'on a WordPress site'. The verb and resource are specific, and the tool name differentiates it from sibling tools like mainwp_themes_install and mainwp_themes_delete. However, it does not explicitly distinguish from mainwp_plugins_activate, relying on the theme-specific name.

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 (e.g., installing a theme first, or using mainwp_themes_list to find available themes). There is no mention of prerequisites like the theme needing to be already installed. The description lacks any usage context.

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

mainwp_themes_deleteA

Delete a theme from a WordPress site (must not be active)

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")
slugYesTheme slug to delete (e.g., "flavor")
dry_runNoSimulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It only discloses the precondition, not the irreversibility, auth requirements, or error behavior of deletion. Minimal behavioral context.

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

Conciseness4/5

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

Single sentence that is direct and contains no fluff. Efficient, though could be slightly improved with a clearer delimiter.

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

Completeness2/5

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

No output schema and no annotations. Description lacks information about return values, success/failure indicators, or error cases. Incomplete for a deletion tool without additional context.

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 descriptions for all three parameters. The description does not add new meaning beyond the schema, so baseline 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?

Clearly states 'Delete a theme from a WordPress site' with a specific verb and resource, and includes a constraint. Distinguishes from siblings like mainwp_themes_activate and mainwp_themes_install.

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?

Explicitly states a precondition ('must not be active'), guiding the agent to only use this tool for inactive themes. Does not give alternatives or when-not-to-use, but the condition is clear.

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

mainwp_themes_installB

Install a theme from WordPress.org on a site

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")
slugYesTheme slug from WordPress.org (e.g., "flavor")
dry_runNoSimulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states 'install' but does not disclose whether the operation is destructive, requires authentication, or has side effects. The 'dry_run' parameter is not mentioned, leaving behavioral aspects unclear.

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

Conciseness4/5

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

The description is a single, clear sentence with no redundant information. It is front-loaded and every word is necessary, though it could be slightly expanded without losing conciseness.

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 simple operation and complete schema, the description is minimally adequate. However, it does not explain what happens after installation (e.g., success message, error handling) and lacks return value details since no output schema exists.

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 has 100% description coverage, so the schema already documents all parameters. The tool description adds no additional meaning beyond what is in the schema, meeting the baseline but not exceeding 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?

The description clearly states the action ('install') and the resource ('a theme from WordPress.org on a site'). It distinguishes this tool from siblings like 'mainwp_themes_activate' and 'mainwp_themes_delete' by specifying the installation action.

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 (install a theme) but provides no explicit guidance on when to use this tool versus alternatives (e.g., activate or list). It does not mention prerequisites or when not to use it, so the agent must infer from context.

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

mainwp_themes_listB

List all themes installed on a WordPress site

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits like return format, pagination, required permissions, or how it handles errors. The bare statement 'List all themes' leaves much unspecified.

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 conveys the core purpose with zero extra words. It is appropriately sized for a simple list tool.

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 simple list tool with one parameter and no output schema, the description is adequate but minimal. It does not explain what information is returned (e.g., theme details, active status), which would be helpful for an agent.

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 schema already explains the site parameter (ID or domain). The description adds no additional meaning beyond the schema; 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?

The description clearly states the action (list), the resource (themes), and the scope (installed on a WordPress site). It effectively distinguishes from sibling tools like mainwp_themes_activate or mainwp_themes_delete.

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, such as when to list themes versus activate or install. There is no mention of prerequisites or context for usage.

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

mainwp_updates_applyB

Apply updates to a WordPress site (supports dry-run mode)

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")
typeYesType of updates to apply
itemsNoSpecific plugin/theme slugs to update (comma-separated). Omit to update all.
dry_runNoSimulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so description must cover behavioral traits. It mentions 'apply' (mutation) and dry-run, but lacks details on reversibility, permissions, failure modes, or side effects. Minimal disclosure for a potentially destructive operation.

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?

Single, front-loaded sentence with no filler. Every word adds value.

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

Completeness2/5

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

With 4 parameters, no output schema, and a complex mutation operation, the description is too brief. Missing details like return behavior, error handling, or post-update state.

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?

All parameters are fully described in the schema (100% coverage), so the description adds no extra semantic value beyond naming dry-run. 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 the action ('apply updates') and the resource ('WordPress site'), with a specific mention of dry-run mode. This distinguishes it from sibling tools like mainwp_updates_ignore or mainwp_updates_list.

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?

No explicit guidance on when to use this tool versus alternatives (e.g., applying updates vs ignoring or listing). The dry-run note is useful but not enough to clarify decision-making.

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

mainwp_updates_ignoreA

Ignore a plugin or theme update (globally or for a specific site)

ParametersJSON Schema
NameRequiredDescriptionDefault
siteNoSpecific site (omit to ignore globally)
slugYesPlugin or theme slug to ignore
typeYesType of update to ignore

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any behavioral traits beyond the basic action. Effects of ignoring (e.g., on update lists, reversibility) are not mentioned.

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?

A single, clear sentence that is front-loaded and contains no unnecessary words. Highly concise.

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 simple mutation tool with no output schema, the description is brief but lacks information on return values or side effects. It is adequate but could be more 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 coverage is 100% with descriptions for all 3 parameters. The description adds context for the 'site' parameter by clarifying global vs specific, but does not substantially extend meaning beyond 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?

The description clearly states the tool ignores a plugin or theme update, and specifies scope (globally or for a specific site). It distinguishes from sibling tools like mainwp_updates_unignore and mainwp_updates_apply.

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 for ignoring updates but provides no explicit guidance on when to use vs alternatives (e.g., unignore, apply). No conditions or exclusions are mentioned.

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

mainwp_updates_ignoredA

List all ignored plugin and theme updates

ParametersJSON Schema
NameRequiredDescriptionDefault
siteNoFilter by specific site

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description should disclose behavior more fully. While it is a simple list operation, it does not mention scope (e.g., across all sites) or output format. It is minimally transparent.

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 6-word sentence with no unnecessary words. It is extremely concise and front-loaded.

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 simplicity (1 optional parameter, no output schema), the description is adequate but could be more complete by stating that it returns a list of ignored updates across all sites unless filtered.

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 schema already describes the 'site' parameter as 'Filter by specific site' (100% coverage). The description adds no additional semantic meaning beyond the schema baseline.

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 verb 'list' and the resource 'ignored plugin and theme updates', distinguishing from siblings like mainwp_updates_list (all updates) and mainwp_updates_ignore (action to ignore).

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 such as mainwp_updates_list or other updates tools. The description only states what it does without context.

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

mainwp_updates_listA

List all pending updates across WordPress sites (core, plugins, themes)

ParametersJSON Schema
NameRequiredDescriptionDefault
siteNoFilter updates for a specific site. Omit for all sites.

TDQS

A3.7/5.0
Behavior3/5

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

No annotations provided, so the description alone must convey behavior. It states the tool lists updates, but does not explicitly confirm it is read-only or disclose any side effects, permissions, or rate limits. Adequate but minimal.

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?

Single sentence, front-loaded with the verb 'List', contains no extraneous information. Efficient and clear.

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 description explains what the tool returns (list of pending updates) but does not specify the structure or fields of the list. Given the simplicity with one optional parameter and no output schema, it is minimally complete but could be improved.

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% for the single 'site' parameter, which is described in the schema. The description adds no additional meaning beyond the schema's description.

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 lists pending updates across WordPress sites, specifying types (core, plugins, themes). It distinguishes from sibling tools like mainwp_updates_apply or mainwp_updates_plugins by focusing on the general list of all pending updates.

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?

No explicit guidance on when to use this tool versus siblings like mainwp_updates_plugins or mainwp_updates_themes. The description implies it for a broad overview, but does not mention alternatives or exclusion criteria.

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

mainwp_updates_pluginsB

Update plugins on a WordPress site

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")
dry_runNoSimulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT)
pluginsNoSpecific plugin/theme slugs to update (comma-separated). Omit to update all.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided; description merely states the action without disclosing side effects, reversibility, or behavior when no updates are available.

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

Conciseness4/5

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

Single sentence is concise, but structure could be improved with separation of parameter details.

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

Completeness2/5

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

Lacks explanation of return values, error handling, and the effect of omitting the plugins parameter (update all vs none).

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%, so the description adds no value beyond the schema's own parameter descriptions.

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 clearly states 'Update plugins on a WordPress site' with a specific verb and resource, distinguishing it from sibling tools like list, activate, or delete.

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 on when to use this tool vs alternatives (e.g., update all vs specific plugins), no mention of prerequisites or when to enable dry_run.

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

mainwp_updates_themesC

Update themes on a WordPress site

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")
themesNoSpecific plugin/theme slugs to update (comma-separated). Omit to update all.
dry_runNoSimulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states 'update', implying a write operation, but lacks details on permissions, side effects (e.g., backups), or whether the operation is synchronous. For a mutation tool, more transparency is needed.

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

Conciseness4/5

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

The description is a single concise sentence, which is efficient but lacks structure. It is not overly verbose, but could benefit from front-loading key details or using bullet points for readability.

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

Completeness2/5

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

Given the tool performs updates (a destructive action) and has three parameters, the description is insufficient. It does not explain return values, error handling, or the effect of the 'dry_run' parameter. No output schema is provided, so the description should compensate.

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%. The description adds no additional meaning beyond what the schema provides for parameters 'site', 'themes', and 'dry_run'. Baseline 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 verb 'Update', resource 'themes', and context 'on a WordPress site'. However, it does not differentiate from sibling tools like 'mainwp_updates_apply' or 'mainwp_themes_activate', which have overlapping purposes.

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. There is no mention of prerequisites, exclusions, or scenarios where this tool is preferred over sibling tools such as 'mainwp_updates_apply'.

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

mainwp_updates_translationsB

Update translations on a WordPress site

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")
dry_runNoSimulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description is the sole source of behavioral info. It states 'Update translations' implying a mutation but does not disclose whether the operation is idempotent, safe to re-run, or what permissions are needed. No output schema or side effects are described.

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

Conciseness4/5

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

The description is very short and to the point, with no wasted words. It is appropriately concise for a simple tool, though it could benefit from additional context without becoming verbose.

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

Completeness2/5

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

Given the absence of annotations and output schema, the description is insufficient. It does not explain what the result looks like (e.g., success status, changed items) or any behavioral constraints. A more complete description would cover return values or post-conditions.

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 covers both parameters (site with description, dry_run with description) at 100% coverage. The description does not add any extra meaning or usage hints beyond what the schema provides, so the baseline score 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 'Update translations on a WordPress site' clearly states the action (update) and the resource (translations). It is specific and easily distinguishes the tool from siblings like mainwp_updates_apply or mainwp_updates_plugins, which handle other types of updates.

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 (e.g., when to update translations vs. plugins/themes/core updates). There is no mention of prerequisites, context, or when not to use it.

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

mainwp_updates_unignoreB

Stop ignoring a plugin or theme update

ParametersJSON Schema
NameRequiredDescriptionDefault
siteNoSpecific site (omit for global)
slugYesPlugin or theme slug to unignore
typeYesType of update to unignore

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description bears full responsibility for behavioral disclosure. It only states the action, with no information about permissions, side effects, or what occurs if the update is not currently ignored. Minimal transparency.

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

Conciseness4/5

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

The description is a single, concise sentence. It is front-loaded with the core action and resource, but could benefit from a brief usage note.

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

Completeness2/5

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

The description lacks context about the tool's relationship to sibling tools like `mainwp_updates_ignore` and `mainwp_updates_ignored`. It does not explain the optional `site` parameter or the effect of omitting it. Given the tool's simplicity, more completeness would be helpful.

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%, so the description adds little beyond what the schema already provides. The description's mention of 'plugin or theme' matches the schema's type enum, but no deeper semantics are added.

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 action ('Stop ignoring') and the resource ('plugin or theme update'). It effectively distinguishes the tool from its sibling `mainwp_updates_ignore`, which performs the opposite operation.

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 the inverse of `mainwp_updates_ignore`, but does not explicitly state when to use this tool versus alternatives like `mainwp_updates_apply` or `mainwp_updates_ignored`. No guidance on prerequisites or conditions.

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

mainwp_updates_wpB

Update WordPress core to the latest version

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesSite ID (number) or domain name (e.g., "1" or "pavinglist.com")
dry_runNoSimulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must carry behavioral information. It fails to disclose whether the update is safe, what happens if already latest, or if there are side effects (e.g., backup needed).

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

Conciseness3/5

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

The description is a single sentence with no fluff, but it is underspecified. It lacks important context that could be added without being verbose.

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 simple tool with no output schema, the description covers the basic purpose but misses behavioral context that would help an agent use it correctly. It is minimally adequate.

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 no extra meaning beyond the schema; it does not clarify how 'site' is used or the behavior of 'dry_run'.

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 action ('Update'), the resource ('WordPress core'), and the target ('to the latest version'). It is distinct from sibling tools like mainwp_updates_plugins and mainwp_updates_themes, which target different components.

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 on when to use this tool versus alternatives (e.g., mainwp_updates_apply). No context about prerequisites, such as needing to check current version first, or scenarios where an update might fail.

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

TDQS

B3.4/5.0
Disambiguation4/5

Tools are clearly grouped by resource (clients, costs, plugins, etc.) with distinct actions. Some potential confusion exists between 'apply' updates and specific update types, but descriptions clarify. Overall, most tools are unambiguous.

Naming Consistency5/5

All tools follow a consistent pattern: 'mainwp_<resource>_<verb>'. Verbs are uniform (add, delete, list, etc.) and resources are clearly named. No mixing of conventions.

Tool Count4/5

43 tools is high, but the server covers multiple sub-domains (sites, plugins, themes, updates, clients, costs, tags). Each sub-domain has a reasonable number of operations. Slightly over the typical range, but justified by the scope.

Completeness3/5

The tool set covers most CRUD and lifecycle operations for sites, plugins, themes, updates, clients, and costs. However, tag management is incomplete (only list and get sites by tag; no create/delete/edit). This is a notable gap.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cvsloane/mainwp-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server