MainWP MCP Server
Allows managing WordPress sites through the MainWP Dashboard REST API, including site management, updates, plugins, themes, clients (Pro), cost tracking (Pro), and tag management.
Enables management of WordPress sites such as monitoring health, applying updates to core/plugins/themes/translations, managing plugins and themes, and site synchronization.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MainWP MCP Servercheck for pending updates on all sites"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
MainWP Dashboard - A WordPress installation with the MainWP Dashboard plugin installed and activated
MainWP Child Sites - Each WordPress site you want to manage must have the MainWP Child plugin installed and connected to your Dashboard
REST API Access - MainWP Dashboard must have the REST API enabled (included in MainWP 4.0+)
Recommended
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-mcpStep 2: Install Dependencies
npm installThis installs:
@modelcontextprotocol/sdk- MCP protocol implementationaxios- HTTP client for API requestszod- Runtime type validationdotenv- Environment variable management
Step 3: Build the Project
npm run buildThis compiles TypeScript to JavaScript in the dist/ directory.
Step 4: Verify Installation
npm startYou should see:
mainwp-mcp v1.0.0 startedPress 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:
Log into your WordPress admin panel
Go to Plugins → Add New
Search for "MainWP Dashboard"
Click Install Now, then Activate
Complete the MainWP setup wizard
Step 2: Connect Child Sites
For each WordPress site you want to manage:
On the child site, install and activate the MainWP Child plugin
In your MainWP Dashboard, go to MainWP → Sites → Add New
Enter the site URL and administrator credentials
Click Add Site
Step 3: Enable REST API
In your MainWP Dashboard, go to MainWP → Settings → REST API
Ensure the REST API is Enabled
Click Add API Key
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)
Click Generate API Key
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.comConsumer 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.localEdit .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=60Configuration Options Reference
Variable | Required | Default | Description |
| Yes | - | Full URL to your MainWP Dashboard |
| Yes | - | API credentials in |
| No |
| Simulate operations by default |
| No |
| Require confirmation for multi-site ops |
| No |
| Simulate mutating operations without side effects |
| No |
| Max API requests per minute |
Claude Code Integration
Option 1: Global Configuration (Recommended)
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
Restart Claude Code after adding the configuration
Ask Claude: "What MCP tools are available?"
You should see the
mainwp_*tools listedTest with: "List all MainWP sites"
Available Tools
Site Management Tools
mainwp_sites_list
List all connected WordPress sites.
Parameters:
Name | Type | Required | Description |
| string | No | Filter by status: |
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 |
| 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 |
| string | Yes | The site ID to sync |
mainwp_sites_check
Run a health check on a site.
Parameters:
Name | Type | Required | Description |
| string | Yes | The site ID to check |
mainwp_sites_add
Add a new site to MainWP Dashboard.
Parameters:
Name | Type | Required | Description |
| string | Yes | The site URL |
| string | Yes | WordPress admin username |
| string | No | Display name for the site |
mainwp_sites_reconnect
Reconnect a disconnected site.
Parameters:
Name | Type | Required | Description |
| 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 |
| 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 |
| string | No | Filter to specific site |
| string | No | Filter by type: |
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 |
| string | Yes | The site ID to update |
| boolean | No | Simulate without applying (default: true) |
mainwp_updates_wp
Update WordPress core on a site.
Parameters:
Name | Type | Required | Description |
| string | Yes | The site ID |
| boolean | No | Simulate without applying (default: true) |
mainwp_updates_plugins
Update plugins on a site.
Parameters:
Name | Type | Required | Description |
| string | Yes | The site ID |
| string[] | No | Specific plugin slugs (omit for all) |
| boolean | No | Simulate without applying (default: true) |
mainwp_updates_themes
Update themes on a site.
Parameters:
Name | Type | Required | Description |
| string | Yes | The site ID |
| string[] | No | Specific theme slugs (omit for all) |
| 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 |
| string | Yes | The site ID |
| string | No | Filter: |
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 |
| string | Yes | The site ID |
| string | Yes | Plugin slug to activate |
mainwp_plugins_deactivate
Deactivate a plugin on a site.
Parameters:
Name | Type | Required | Description |
| string | Yes | The site ID |
| string | Yes | Plugin slug to deactivate |
Theme Management Tools
mainwp_themes_list
List all themes installed on a site.
Parameters:
Name | Type | Required | Description |
| string | Yes | The site ID |
mainwp_themes_activate
Activate a theme on a site.
Parameters:
Name | Type | Required | Description |
| string | Yes | The site ID |
| string | Yes | Theme slug to activate |
mainwp_themes_install
Install a theme from WordPress.org.
Parameters:
Name | Type | Required | Description |
| string | Yes | Site ID or domain |
| string | Yes | Theme slug from WordPress.org |
| 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 |
| string | Yes | Site ID or domain |
| string | Yes | Theme slug to delete |
| 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 |
| string | Yes | Site ID or domain |
| string | No | New display name |
| string | No | Comma-separated group IDs |
| boolean | No | Simulate without changes (default: true) |
mainwp_sites_suspend
Suspend a site (disable monitoring and updates).
Parameters:
Name | Type | Required | Description |
| string | Yes | Site ID or domain |
| boolean | No | Simulate without suspending (default: true) |
mainwp_sites_unsuspend
Unsuspend a site (re-enable monitoring and updates).
Parameters:
Name | Type | Required | Description |
| string | Yes | Site ID or domain |
| 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 |
| string | Yes | Site ID or domain |
mainwp_sites_remove
Permanently remove a site from MainWP Dashboard.
Parameters:
Name | Type | Required | Description |
| string | Yes | Site ID or domain |
| 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 |
| string | Yes | Site ID or domain |
| 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 |
| string | Yes |
|
| string | Yes | Plugin or theme slug |
| string | No | Specific site (omit for global) |
mainwp_updates_unignore
Stop ignoring a plugin or theme update.
Parameters:
Name | Type | Required | Description |
| string | Yes |
|
| string | Yes | Plugin or theme slug |
| string | No | Specific site (omit for global) |
mainwp_updates_ignored
List all ignored updates.
Parameters:
Name | Type | Required | Description |
| 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 |
| string | No | Search by name or email |
| number | No | Page number |
| number | No | Results per page |
mainwp_clients_get
Get detailed information about a client.
Parameters:
Name | Type | Required | Description |
| string | Yes | Client ID or email |
mainwp_clients_add
Add a new client.
Parameters:
Name | Type | Required | Description |
| string | Yes | Client name |
| string | Yes | Client email |
| string | No | Company name |
| string | No | Phone number |
| string | No | Street address |
| string | No | City |
| string | No | State/Province |
| string | No | ZIP/Postal code |
| string | No | Country |
| string | No | Internal notes |
| string | No | Comma-separated site IDs |
mainwp_clients_edit
Edit a client's information.
Parameters:
Name | Type | Required | Description |
| string | Yes | Client ID or email |
| 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 |
| string | Yes | Client ID or email |
| 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 |
| string | No | Search by name |
| string | No |
|
| string | No |
|
| number | No | Page number |
| number | No | Results per page |
mainwp_costs_get
Get details about a specific cost.
Parameters:
Name | Type | Required | Description |
| string | Yes | Cost ID |
mainwp_costs_add
Add a new cost entry.
Parameters:
Name | Type | Required | Description |
| string | Yes | Cost name/description |
| string | No |
|
| string | No | Category (default: other) |
| number | No | Cost amount |
| string | No | Currency code (default: USD) |
| string | No |
|
| string | No | Date (YYYY-MM-DD) |
| string | No | Date (YYYY-MM-DD) |
| string | No | Comma-separated site IDs |
| string | No | Additional notes |
mainwp_costs_edit
Edit a cost entry.
Parameters:
Name | Type | Required | Description |
| string | Yes | Cost ID |
| 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 |
| string | Yes | Cost ID |
| 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 |
| string | No | Filter tags by name |
mainwp_tags_sites
Get all sites assigned to a specific tag.
Parameters:
Name | Type | Required | Description |
| 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: falseto apply changes
To disable dry-run by default (not recommended for production):
MAINWP_ENABLE_DRY_RUN_BY_DEFAULT=falseBulk 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=falseTest 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=trueWhen 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 aggressiveTroubleshooting
Server Won't Start
Error: "Missing required environment variables"
Ensure MAINWP_DASHBOARD_URL and MAINWP_API_KEY are set. Check:
.env.localexists and has the correct valuesIf using MCP config, the
envblock 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_URLis correct and accessibleCheck your MainWP Dashboard is running
Ensure your firewall allows the connection
Claude Code Integration Issues
Tools not appearing in Claude Code
Verify
mcp.jsonsyntax is valid JSONCheck the path to
dist/index.jsis absolute and correctRestart Claude Code completely after config changes
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_synctoolCheck 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.mdDevelopment 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 cleanAdding New Tools
Create or edit a file in
src/tools/Define the tool schema in
src/schemas/tool-schemas.tsRegister the tool in
src/tools/index.tsAdd corresponding API method in
src/clients/mainwp-api-client.tsRebuild:
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 startAPI 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 |
| GET | List all sites |
| GET | Get site details |
| POST | Sync site data |
| GET | List pending updates |
| GET | List plugins |
| GET | List themes |
For complete API documentation, see the MainWP REST API Documentation.
Contributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch:
git checkout -b feature/my-featureMake your changes
Run
npm run buildto ensure it compilesCommit your changes:
git commit -m "Add my feature"Push to your fork:
git push origin feature/my-featureOpen 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 toolsmainwp_clients_addB
Add a new client to MainWP (Pro feature)
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | ZIP/Postal code | |
| city | No | City | |
| name | Yes | Client name (required) | |
| note | No | Internal notes about client | |
| Yes | Client email address (required) | ||
| phone | No | Phone number | |
| state | No | State/Province | |
| address | No | Street address | |
| company | No | Company name | |
| country | No | Country | |
| selected_sites | No | Comma-separated site IDs to assign |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| client | Yes | Client ID (number) or email address | |
| confirmed | No | Must be true to confirm deletion |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| zip | No | ZIP/Postal code | |
| city | No | City | |
| name | No | Updated client name | |
| note | No | Internal notes | |
| No | Updated email address | ||
| phone | No | Phone number | |
| state | No | State/Province | |
| client | Yes | Client ID (number) or email address | |
| address | No | Street address | |
| company | No | Company name | |
| country | No | Country | |
| dry_run | No | Simulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT) | |
| selected_sites | No | Comma-separated site IDs |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| client | Yes | Client ID (number) or email address |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| search | No | Search clients by name or email | |
| per_page | No | Results per page (default: 20) |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Cost name/description (required) | |
| note | No | Additional notes | |
| type | No | One-time or recurring cost | single |
| price | No | Cost amount | |
| sites | No | Comma-separated site IDs this cost applies to | |
| currency | No | Currency code (e.g., USD, EUR) | USD |
| last_renewal | No | Last renewal date (YYYY-MM-DD) | |
| next_renewal | No | Next renewal date (YYYY-MM-DD) | |
| product_type | No | Category of the cost | other |
| renewal_frequency | No | For recurring costs: billing frequency |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| cost | Yes | Cost ID (number) | |
| confirmed | No | Must be true to confirm deletion |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| cost | Yes | Cost ID (number) | |
| name | No | Updated cost name | |
| note | No | Additional notes | |
| type | No | Cost type | |
| price | No | Cost amount | |
| sites | No | Site IDs this cost applies to | |
| dry_run | No | Simulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT) | |
| currency | No | Currency code | |
| last_renewal | No | Last renewal date | |
| next_renewal | No | Next renewal date | |
| product_type | No | Product category | |
| renewal_frequency | No | Billing frequency |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| cost | Yes | Cost ID (number) |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| type | No | Filter by cost type | |
| search | No | Search costs by name | |
| per_page | No | Results per page (default: 20) | |
| product_type | No | Filter by product type |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") | |
| dry_run | No | Simulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT) | |
| plugins | Yes | Plugin slug(s) to activate, comma-separated |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") | |
| dry_run | No | Simulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT) | |
| plugins | Yes | Plugin slug(s) to deactivate, comma-separated |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") | |
| slug | Yes | Plugin slug to delete (e.g., "akismet/akismet.php") | |
| dry_run | No | Simulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") | |
| slug | Yes | Plugin slug from WordPress.org (e.g., "akismet") | |
| dry_run | No | Simulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full URL of the WordPress site | |
| name | No | Display name for the site | |
| admin | No | WordPress admin username | |
| groupids | No | Comma-separated group IDs | |
| uniqueId | No | MainWP Child unique security ID | |
| ssl_verify | No | Verify SSL certificate |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New display name for the site | |
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") | |
| dry_run | No | Simulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT) | |
| groupids | No | Comma-separated group IDs to assign |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Response format: full (all details) or basic (id, name, url, status) | full |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") | |
| confirmed | No | Must be true to confirm permanent deletion |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") | |
| dry_run | No | Simulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | Site to sync. Omit to sync all sites. | |
| confirmed | No | Confirm bulk operation affecting multiple sites (required for bulk ops) |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") | |
| dry_run | No | Simulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Search tags by name |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | Tag ID or name |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") | |
| theme | Yes | Theme slug to activate | |
| dry_run | No | Simulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT) |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") | |
| slug | Yes | Theme slug to delete (e.g., "flavor") | |
| dry_run | No | Simulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") | |
| slug | Yes | Theme slug from WordPress.org (e.g., "flavor") | |
| dry_run | No | Simulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") | |
| type | Yes | Type of updates to apply | |
| items | No | Specific plugin/theme slugs to update (comma-separated). Omit to update all. | |
| dry_run | No | Simulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT) |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | Specific site (omit to ignore globally) | |
| slug | Yes | Plugin or theme slug to ignore | |
| type | Yes | Type of update to ignore |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | Filter by specific site |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | Filter updates for a specific site. Omit for all sites. |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") | |
| dry_run | No | Simulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT) | |
| plugins | No | Specific plugin/theme slugs to update (comma-separated). Omit to update all. |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") | |
| themes | No | Specific plugin/theme slugs to update (comma-separated). Omit to update all. | |
| dry_run | No | Simulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") | |
| dry_run | No | Simulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | Specific site (omit for global) | |
| slug | Yes | Plugin or theme slug to unignore | |
| type | Yes | Type of update to unignore |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | Site ID (number) or domain name (e.g., "1" or "pavinglist.com") | |
| dry_run | No | Simulate the operation without making changes (defaults to MAINWP_ENABLE_DRY_RUN_BY_DEFAULT) |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
Security-first WordPress MCP server. 129 tools for Claude, ChatGPT, Gemini. Free on wp.org.
Scans self-hosted WooCommerce stores for AI-agent readiness and exposes a live MCP product catalog.
Run your website's AI support agent from Claude, Cursor or any MCP client. Manage the knowledge base, edit agent instructions, read conversations and leads, reply live to visitors, and check plan usage. 54 tools, OAuth sign-in, no API key. Free with every Asyntai account: https://asyntai.com/documentation/mcp/
AI-powered design and management for Webflow Sites
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with WordPress sites through the REST API. Supports multiple WordPress sites with secure authentication, enabling content management, post operations, and site configuration through natural language.53MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to interact with WordPress sites through REST APIs, allowing programmatic management of posts, users, comments, categories, and tags with secure authentication.2948MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to manage WordPress sites through natural conversation, supporting post creation, content updates, site queries, and draft-to-publish workflows via the WordPress REST API.9MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to manage WordPress sites via ~74 capabilities including content, media, plugins, themes, and more.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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