Skip to main content
Glama

MCP Hub

The AI-native management hub for WordPress, WooCommerce, and self-hosted services.

Connect your sites, stores, repos, and databases — manage them all through Claude, ChatGPT, Cursor, or any MCP client.

GitHub Release License: MIT Python 3.11+ PyPI Docker Plugins: 8 CI


Why MCP Hub?

WordPress powers 43% of the web. WooCommerce runs 36% of online stores. Yet no MCP server existed for managing them through AI — until now.

MCP Hub is the first MCP server that lets you manage WordPress, WooCommerce, and 8 other self-hosted services through any AI assistant. Instead of clicking through dashboards, just tell your AI what to do:

"Update the SEO meta description for all WooCommerce products that don't have one"

"Create a new blog post about our Black Friday sale and schedule it for next Monday"

"Check the health of all 12 WordPress sites and report any with slow response times"

What Makes MCP Hub Different

Feature

ManageWP

MainWP

AI Content Plugins

MCP Hub

Multi-site management

Yes

Yes

No

Yes

AI agent integration

No

No

No

Native (MCP)

Full WordPress API

Dashboard

Dashboard

Content only

67 tools

WooCommerce management

No

Limited

No

28 tools

Git/CI management

No

No

No

65 tools (Gitea)

Automation workflows

No

No

No

56 tools (n8n)

Self-hosted

No

Yes

N/A

Yes

Open source

No

Core only

Varies

Fully open

Price

$0.70-8/site/mo

$29-79/yr

$19-79/mo

Free


Related MCP server: WordPress MCP Server

8 Public Plugins, Hundreds of Tools

The exact tool count grows as new plugins ship and existing ones gain endpoints. What you actually expose is controlled by your ENABLED_PLUGINS setting and per-key scope — pick a plugin-specific endpoint to keep the surface area small.

Plugin

Approx. Tools

What You Can Do

WordPress

~70

Posts, pages, media (incl. AI image generation), users, menus, taxonomies, SEO (Rank Math/Yoast)

WooCommerce

~30

Products, orders, customers, coupons, reports, shipping

WordPress Specialist

~58

Plugins, themes, users, options, cron, page editing, site config + layout, db inspection/maintenance, bulk fan-out (companion-backed)

Gitea

~65

Repos, issues, pull requests, releases, webhooks, organizations, labels, batch files, tree, search, compare

n8n

~55

Workflows, executions, credentials, variables, audit

Supabase

~70

Database, auth, storage, edge functions, realtime

OpenPanel

~40

Events, export, insights, profiles, projects, system

Coolify

~65

Applications, deployments, servers, projects, databases, services

System

~25

Health monitoring, API keys, OAuth management, audit

Per-site duplication does not inflate the tool count — adding a second WordPress site reuses the same WordPress tools with a different site argument.


Quick Start

git clone https://github.com/airano-ir/mcphub.git
cd mcphub
cp env.example .env
# Edit .env — set MASTER_API_KEY, then add sites via the web dashboard
docker compose up -d

Option 2: Docker Hub (No Clone)

# Create a .env file with MASTER_API_KEY (see "Configure Your Sites" below)
docker run -d --name mcphub -p 8000:8000 --env-file .env airano/mcphub:latest

Option 3: From Source

git clone https://github.com/airano-ir/mcphub.git
cd mcphub
pip install -e .
cp env.example .env
# Edit .env — set MASTER_API_KEY
python server.py --transport streamable-http --port 8000

Verify It Works

After starting the server, wait ~30 seconds then:

# Check server health
curl http://localhost:8000/health

Open the web dashboard in your browser: http://localhost:8000/dashboard

You should see the login page. Log in with your MASTER_API_KEY or via GitHub/Google OAuth (if configured).

Try It Now (No Setup Required)

Don't want to self-host? Use the hosted instance at mcp.example.com:

  1. Log in with GitHub or Google

  2. Add your sites via the dashboard (My Sites → Add Service)

  3. Go to Connect page — generate config for your AI client

  4. Copy-paste the config into Claude Desktop, VS Code, or Claude Code

Your personal MCP endpoint: https://mcp.example.com/u/{your-user-id}/{alias}/mcp


Configure Your Sites

Sites are managed via the web dashboard — no environment variables needed.

  1. Set MASTER_API_KEY in your .env file

  2. Start the server and open the dashboard

  3. Add sites with their credentials (URL, username, password/token)

# .env — only system configuration needed
MASTER_API_KEY=your-secure-key-here

System Configuration:

Variable

Required

Default

Description

MASTER_API_KEY

Recommended

Auto-generated

Master API key for admin access

LOG_LEVEL

No

INFO

Logging level (DEBUG, INFO, WARNING, ERROR)

ENCRYPTION_KEY

For Live Platform

—

AES-256-GCM key for credential encryption

OAUTH_JWT_SECRET_KEY

For OAuth

—

JWT secret for ChatGPT auto-registration (not needed for Claude/Cursor)

OAUTH_BASE_URL

For OAuth

—

Public URL of your server (not needed for Claude/Cursor)

OAuth is only needed for ChatGPT Remote MCP auto-registration. For Claude Desktop, Claude Code, Cursor, and VS Code — just use MASTER_API_KEY with Bearer token auth.

Plugin Credential Reference — when adding sites via dashboard, you'll need:

Plugin

Required Credentials

Notes

WordPress

URL, Username, App Password

How to create App Password

WooCommerce

URL, Consumer Key, Consumer Secret

WooCommerce → Settings → Advanced → REST API

WordPress Specialist

URL, Username, App Password

Requires Airano MCP Bridge v2.18.3+ on the WP site; user must have manage_options

Gitea

URL, Token

Settings → Applications → Personal Access Token

n8n

URL, API Key

Settings → API → Create API Key

Supabase

URL, Service Role Key

Supabase Dashboard → Settings → API

OpenPanel

URL, Client ID, Client Secret

OpenPanel Dashboard → Project Settings

Connect Your AI Client

All MCP clients use Bearer token authentication: Authorization: Bearer YOUR_API_KEY

Use a plugin-specific endpoint (e.g., /wordpress/mcp) instead of /mcp to reduce tool count and save tokens. See Architecture below.

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "mcphub-wordpress": {
      "type": "streamableHttp",
      "url": "http://your-server:8000/wordpress/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Add to .mcp.json in your project:

{
  "mcpServers": {
    "mcphub-wordpress": {
      "type": "http",
      "url": "http://your-server:8000/wordpress/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

Go to Settings > MCP Servers > Add Server:

  • Name: MCP Hub WordPress

  • URL: http://your-server:8000/wordpress/mcp

  • Headers: Authorization: Bearer YOUR_API_KEY

Add to .vscode/mcp.json:

{
  "servers": {
    "mcphub-wordpress": {
      "type": "http",
      "url": "http://your-server:8000/wordpress/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

MCP Hub supports Open Dynamic Client Registration (RFC 7591). ChatGPT can auto-register as an OAuth client:

  1. Deploy MCP Hub with OAUTH_BASE_URL set

  2. In ChatGPT, add MCP server: https://your-server:8000/mcp

  3. ChatGPT auto-discovers OAuth metadata and registers

Transport types: Use "type": "streamableHttp" for Claude Desktop and "type": "http" for VS Code/Claude Code. Using "type": "sse" will cause 400 Bad Request errors.


Architecture

/mcp                        → Admin endpoint (every enabled tool)
/system/mcp                 → System tools only
/wordpress/mcp              → WordPress tools
/woocommerce/mcp            → WooCommerce tools
/wordpress-specialist/mcp   → WordPress Specialist tools (companion-backed)
/gitea/mcp                  → Gitea tools
/n8n/mcp                    → n8n tools
/supabase/mcp               → Supabase tools
/openpanel/mcp              → OpenPanel tools
/coolify/mcp                → Coolify tools
/project/{alias}/mcp        → Per-project endpoint (auto-injects site)
/u/{user_id}/{alias}/mcp    → Per-user endpoint (hosted/OAuth users)

Recommendation: Use plugin-specific endpoints instead of the all-tools /mcp admin endpoint to keep your AI client's tool window small (and your token bill lower).

Endpoint

Use Case

/u/{user_id}/{alias}/mcp

Hosted users (OAuth login) — single service

/project/{alias}/mcp

Single-site workflow (recommended)

/{plugin}/mcp

Multi-site management for one service

/mcp

Admin & discovery only — every enabled tool

Security

  • OAuth 2.1 + PKCE (RFC 8414, 7591, 7636) with auto-registration for Claude/ChatGPT

  • Per-project API keys with scoped permissions (read/write/admin)

  • Rate limiting: 60/min, 1,000/hr, 10,000/day per client

  • GDPR-compliant audit logging with automatic sensitive data filtering

  • Web dashboard with real-time health monitoring (8 pages, EN/FA i18n)

Compatibility Note: MCP Hub requires FastMCP 3.x (>=3.0.0,<4.0.0). The legacy multi-endpoint server and ProjectManager have been removed in v3.5.0.

WordPress Plugin Requirements

Some MCP Hub tools require companion WordPress plugins:

Tools

Requirement

SEO + capability/audit tools (wordpress_get_post_seo, capability probe, audit hook, etc.)

Airano MCP Bridge (GitHub) + Rank Math or Yoast SEO

Companion-backed maintenance (wordpress_wp_cache_flush, transient cleanup/list, DB check/optimize)

Airano MCP Bridge v2.18.5+

WordPress Specialist (~58 tools: plugins / themes / users / options / cron / page editing / site config + layout / db inspection / bulk fan-out)

Airano MCP Bridge v2.18.5+

OpenPanel analytics integration

OpenPanel Self-Hosted (Download ZIP)

WooCommerce tools

WooCommerce plugin installed on your WordPress site

No WordPress tool requires Docker socket or a WordPress container name. Shared-hosted and companion-managed sites use WordPress Application Passwords plus the Airano MCP Bridge REST routes.


Documentation

Guide

Description

Getting Started

Full setup walkthrough

Architecture

System design and module reference

API Keys Guide

Per-project API key management

OAuth Guide

OAuth 2.1 setup for Claude/ChatGPT

Gitea Guide

Gitea plugin configuration

WordPress Attachment Ingestion

Chat-attached media and plugin/theme zip handoff

WordPress/WooCommerce Scope Recipes

Least-privilege recipes for content, catalog, media, analytics, and admin tasks

Deployment Guide

Docker and Coolify deployment

Troubleshooting

Common issues and solutions

Plugin Development

Build your own plugin


Development

# Install with dev dependencies
pip install -e ".[dev]"

# Run tests
pytest

# Format and lint
black . && ruff check --fix .

# Run server locally
python server.py --transport streamable-http --port 8000

Support This Project

MCP Hub is free and open-source. Development is funded by community donations.

Donate with Crypto (NOWPayments) — Global, no geographic restrictions.

Goal

Monthly

Enables

Infrastructure

$50/mo

Demo hosting, CI/CD, domain

Part-time maintenance

$500/mo

Updates, security patches, issue triage

Active development

$2,000/mo

New plugins, features, community support


Contributing

We welcome contributions! See CONTRIBUTING.md for guidelines.

Priority areas:

  • New plugin development

  • Client setup guides

  • Workflow templates and examples

  • Test coverage expansion

  • Translations (i18n)


License

MIT License. See LICENSE.


Available Tools

554 tools
check_all_projects_healthA

Check health status of all projects with enhanced metrics.

Performs comprehensive health checks on all configured projects including:

  • Accessibility and response time

  • Error rates and recent failures

  • Alert threshold violations

  • Historical metrics (last hour)

Returns: JSON string with detailed health status and metrics

Inputs: no named parameters. Returns: result

cloudflare_create_dns_recordCloudflare: Create dns recordB
Destructive

[UNIFIED] Create a DNS record (DNS:Edit permission). For a proxied A/AAAA record set proxied=true; for CNAME to another host keep proxied=false when the target is outside Cloudflare, or true when both sides are proxied. TTL 1 means automatic.

Inputs: name (required), site (required), type (required), content (required), +5 more.

cloudflare_create_kv_namespaceCloudflare: Create kv namespaceB

[UNIFIED] Create a Workers KV namespace (Workers KV Storage Edit permission). The title must be unique within the account.

Inputs: site (required), title (required), account_id.

cloudflare_create_r2_bucketCloudflare: Create r2 bucketB

[UNIFIED] Create an R2 bucket (requires R2 edit permission). Bucket names must be 3-63 lowercase letters, digits and hyphens, starting/ending with a letter or digit, unique within the account.

Inputs: site (required), bucket_name (required), account_id.

cloudflare_delete_dns_recordCloudflare: Delete dns recordA
Destructive

[UNIFIED] Delete a DNS record (DNS:Edit permission). DESTRUCTIVE — the record and its resolution stop working immediately; recreate it with create_dns_record if needed.

Inputs: site (required), zone_id (required), record_id (required).

cloudflare_delete_kv_keyCloudflare: Delete kv keyB
Destructive

[UNIFIED] Delete a single KV key (Workers KV Storage Edit permission). DESTRUCTIVE — the value is permanently lost.

Inputs: site (required), key_name (required), namespace_id (required), account_id.

cloudflare_delete_kv_namespaceCloudflare: Delete kv namespaceA
Destructive

[UNIFIED] Delete a KV namespace and ALL its keys (Workers KV Storage Edit permission). DESTRUCTIVE — every key in the namespace is permanently lost.

Inputs: site (required), namespace_id (required), account_id.

cloudflare_delete_r2_bucketCloudflare: Delete r2 bucketA
Destructive

[UNIFIED] Delete an R2 bucket and all its objects (requires R2 edit permission). DESTRUCTIVE — every object in the bucket is permanently lost.

Inputs: site (required), bucket_name (required), account_id.

cloudflare_delete_workers_scriptCloudflare: Delete workers scriptA
Destructive

[UNIFIED] Delete a Workers script (requires Workers Scripts Edit permission). DESTRUCTIVE — the script and its routes stop working immediately.

Inputs: site (required), script_name (required), account_id.

cloudflare_get_dns_recordCloudflare: Get dns recordC
Read-only

[UNIFIED] Fetch a single DNS record by id with its full details.

Inputs: site (required), zone_id (required), record_id (required).

cloudflare_get_kv_valueCloudflare: Get kv valueB
Read-only

[UNIFIED] Read a single KV value by key name (Workers KV Storage Read permission). Returns the stored value as text.

Inputs: site (required), key_name (required), namespace_id (required), account_id.

cloudflare_get_r2_bucketCloudflare: Get r2 bucketB
Read-only

[UNIFIED] Fetch R2 bucket metadata by name (requires R2 read permission) — creation date, storage class, location, object count.

Inputs: site (required), bucket_name (required), account_id.

cloudflare_get_userCloudflare: Get userB
Read-only

[UNIFIED] Fetch the Cloudflare user profile authenticated by the stored API token (id, email, username). Read-only.

Inputs: site (required).

cloudflare_get_workers_scriptCloudflare: Get workers scriptC
Read-only

[UNIFIED] Fetch Workers script metadata (id, name, modified_on, usage model). Does not return the script body.

Inputs: site (required), script_name (required), account_id.

cloudflare_get_zoneCloudflare: Get zoneC
Read-only

[UNIFIED] Fetch one Cloudflare zone by id — full details including name servers, status, plan, SSL and security settings.

Inputs: site (required), zone_id (required).

cloudflare_list_accountsCloudflare: List accountsA
Read-only

[UNIFIED] List Cloudflare accounts visible to the stored API token (id + name). Useful to discover the Account ID for Workers/KV/R2 tools when the site does not pin one.

Inputs: site (required).

cloudflare_list_dns_recordsCloudflare: List dns recordsB
Read-only

[UNIFIED] List DNS records for a zone with optional filters (type, name, content) and pagination. Returns id, type, name, content, TTL, proxied status and comment for each record.

Inputs: site (required), zone_id (required), name, page, +3 more.

cloudflare_list_kv_keysCloudflare: List kv keysB
Read-only

[UNIFIED] List keys in a KV namespace (Workers KV Storage Read permission). Returns key names + metadata and a cursor for pagination.

Inputs: site (required), namespace_id (required), limit, cursor, +1 more.

cloudflare_list_kv_namespacesCloudflare: List kv namespacesB
Read-only

[UNIFIED] List Workers KV namespaces in the account (requires Workers KV Storage permission and Account ID). Returns each namespace's id and title.

Inputs: site (required), per_page, account_id.

cloudflare_list_r2_bucketsCloudflare: List r2 bucketsB
Read-only

[UNIFIED] List R2 buckets in the account (requires R2 read permission and Account ID). Returns bucket names, creation dates and storage class info.

Inputs: site (required), cursor, per_page, account_id.

cloudflare_list_workers_scriptsCloudflare: List workers scriptsB
Read-only

[UNIFIED] List Workers scripts in the account (requires Workers Scripts permission and Account ID). Returns script names, modification dates and sizes.

Inputs: site (required), account_id.

cloudflare_list_zonesCloudflare: List zonesA
Read-only

[UNIFIED] List Cloudflare zones the token can access. Supports filtering by exact zone name and status (active, pending, development, deleted, moved), plus pagination. Returns zone id, name, status, name servers and plan.

Inputs: site (required), name, page, status, +1 more.

cloudflare_purge_cacheCloudflare: Purge cacheA
Destructive

[UNIFIED] Purge cached content for a zone. Requires the token's Cache Purge permission. Provide exactly one strategy: purge_everything (all cached content), files (specific URLs), tags (cache tags), or prefixes (URL prefixes). Impact is temporary — cache rebuilds on next requests.

Inputs: site (required), zone_id (required), tags, files, +2 more.

cloudflare_put_kv_valueCloudflare: Put kv valueB
Destructive

[UNIFIED] Write a KV value for a key (Workers KV Storage Edit permission). Creates the key if it does not exist. Optionally set expiration (absolute Unix timestamp) or expiration_ttl (seconds from now).

Inputs: site (required), value (required), key_name (required), namespace_id (required), +3 more.

cloudflare_update_dns_recordCloudflare: Update dns recordA
Destructive

[UNIFIED] Update an existing DNS record (DNS:Edit permission). Only the provided fields change; omitted fields keep their current value.

Inputs: site (required), zone_id (required), record_id (required), ttl, +6 more.

cloudflare_verify_tokenCloudflare: Verify tokenA
Read-only

[UNIFIED] Verify that the configured Cloudflare API token is valid and active. Returns the token id and status. Useful as a self-diagnostic when other tools fail with permission errors.

Inputs: site (required).

coolify_cancel_deploymentCoolify: Cancel deploymentC
Destructive

[UNIFIED] Cancel a running deployment.

Inputs: site (required), uuid (required).

coolify_create_application_composeCoolify: Create application composeA
Destructive

[UNIFIED] REMOVED by Coolify — this endpoint no longer exists and every call fails. Use coolify_create_service for raw Compose, or coolify_create_application_public with build_pack='dockercompose' for a git-backed Compose app.

Inputs: site (required), server_uuid (required), project_uuid (required), environment_name (required), +6 more.

coolify_create_application_dockerfileCoolify: Create application dockerfileB
Destructive

[UNIFIED] Create a Coolify application from a Dockerfile (without git). Requires project_uuid, server_uuid, environment, and dockerfile content.

Inputs: site (required), dockerfile (required), server_uuid (required), project_uuid (required), +7 more.

coolify_create_application_docker_imageCoolify: Create application docker imageC
Destructive

[UNIFIED] Create a Coolify application from a Docker image. Requires project_uuid, server_uuid, environment, docker_registry_image_name, and ports_exposes.

Inputs: site (required), server_uuid (required), project_uuid (required), ports_exposes (required), +8 more.

coolify_create_application_envCoolify: Create application envC
Destructive

[UNIFIED] Create an environment variable for a Coolify application.

Inputs: key (required), site (required), uuid (required), value (required), +7 more.

coolify_create_application_private_github_appCoolify: Create application private github appB
Destructive

[UNIFIED] Create a Coolify application from a private GitHub repository using an already configured Coolify GitHub App. Use github_app_uuid, or source_uuid as a backwards-compatible alias.

Inputs: site (required), build_pack (required), git_branch (required), server_uuid (required), +10 more.

coolify_create_application_publicCoolify: Create application publicC
Destructive

[UNIFIED] Create a Coolify application from a public Git repository. Requires project_uuid, server_uuid, environment, git_repository, git_branch, build_pack, and ports_exposes.

Inputs: site (required), build_pack (required), git_branch (required), server_uuid (required), +8 more.

coolify_create_clickhouseCoolify: Create clickhouseC
Destructive

[UNIFIED] Create a ClickHouse database on Coolify.

Inputs: site (required), server_uuid (required), project_uuid (required), environment_name (required), +3 more.

coolify_create_database_backupCoolify: Create database backupC
Destructive

[UNIFIED] Create a manual backup of a Coolify database.

Inputs: site (required), uuid (required).

coolify_create_environmentCoolify: Create environmentC
Destructive

[UNIFIED] Create a new environment in a Coolify project.

Inputs: name (required), site (required), project_uuid (required), description.

coolify_create_mariadbCoolify: Create mariadbC
Destructive

[UNIFIED] Create a MariaDB database on Coolify.

Inputs: site (required), server_uuid (required), project_uuid (required), environment_name (required), +3 more.

coolify_create_mongodbCoolify: Create mongodbC
Destructive

[UNIFIED] Create a MongoDB database on Coolify.

Inputs: site (required), server_uuid (required), project_uuid (required), environment_name (required), +3 more.

coolify_create_mysqlCoolify: Create mysqlC
Destructive

[UNIFIED] Create a MySQL database on Coolify.

Inputs: site (required), server_uuid (required), project_uuid (required), environment_name (required), +3 more.

coolify_create_postgresqlCoolify: Create postgresqlC
Destructive

[UNIFIED] Create a PostgreSQL database on Coolify.

Inputs: site (required), server_uuid (required), project_uuid (required), environment_name (required), +3 more.

coolify_create_projectCoolify: Create projectC
Destructive

[UNIFIED] Create a new Coolify project. Projects group applications, databases, and services.

Inputs: name (required), site (required), description.

coolify_create_redisCoolify: Create redisC
Destructive

[UNIFIED] Create a Redis database on Coolify.

Inputs: site (required), server_uuid (required), project_uuid (required), environment_name (required), +3 more.

coolify_create_serverCoolify: Create serverC
Destructive

[UNIFIED] Register a new server in Coolify. Requires name, IP, port, user, and a private key UUID for SSH access.

Inputs: ip (required), name (required), site (required), private_key_uuid (required), +6 more.

coolify_create_serviceCoolify: Create serviceC
Destructive

[UNIFIED] Create a Coolify service from a predefined template. Requires project_uuid, server_uuid, environment, and service type.

Inputs: site (required), type (required), server_uuid (required), project_uuid (required), +4 more.

coolify_create_service_envCoolify: Create service envC
Destructive

[UNIFIED] Create an environment variable for a Coolify service.

Inputs: key (required), site (required), uuid (required), value (required), +2 more.

coolify_delete_applicationCoolify: Delete applicationC
Destructive

[UNIFIED] Delete a Coolify application permanently. Optionally clean up configs, volumes, and networks.

Inputs: site (required), uuid (required), delete_volumes, docker_cleanup, +2 more.

coolify_delete_application_envCoolify: Delete application envC
Destructive

[UNIFIED] Delete an environment variable from a Coolify application.

Inputs: site (required), uuid (required), env_uuid (required).

coolify_delete_databaseCoolify: Delete databaseC
Destructive

[UNIFIED] Delete a Coolify database permanently. Optionally clean up volumes and Docker resources.

Inputs: site (required), uuid (required), delete_volumes, docker_cleanup, +1 more.

coolify_delete_projectCoolify: Delete projectB
Destructive

[UNIFIED] Delete a Coolify project permanently. All resources in the project will be removed.

Inputs: site (required), uuid (required).

coolify_delete_serverCoolify: Delete serverC
Destructive

[UNIFIED] Delete a server from Coolify. This cannot be undone!

Inputs: site (required), uuid (required).

coolify_delete_serviceCoolify: Delete serviceC
Destructive

[UNIFIED] Delete a Coolify service permanently. Optionally clean up volumes and Docker resources.

Inputs: site (required), uuid (required), delete_volumes, docker_cleanup, +1 more.

coolify_delete_service_envCoolify: Delete service envC
Destructive

[UNIFIED] Delete an environment variable from a Coolify service.

Inputs: site (required), uuid (required), env_uuid (required).

coolify_deployCoolify: DeployC
Destructive

[UNIFIED] Trigger deployment by tag name or resource UUID. Can deploy multiple resources at once using comma-separated values.

Inputs: site (required), pr, tag, uuid, +3 more.

coolify_get_applicationCoolify: Get applicationC
Read-only

[UNIFIED] Get details of a specific Coolify application by UUID.

Inputs: site (required), uuid (required).

coolify_get_application_logsCoolify: Get application logsC
Read-only

[UNIFIED] Get logs for a Coolify application.

Inputs: site (required), uuid (required), lines.

coolify_get_databaseCoolify: Get databaseC
Read-only

[UNIFIED] Get details of a specific Coolify database by UUID.

Inputs: site (required), uuid (required).

coolify_get_database_backupsCoolify: Get database backupsB
Read-only

[UNIFIED] Get backup configuration and history for a Coolify database.

Inputs: site (required), uuid (required).

coolify_get_deploymentCoolify: Get deploymentC
Read-only

[UNIFIED] Get details of a specific deployment by UUID.

Inputs: site (required), uuid (required).

coolify_get_environmentCoolify: Get environmentB
Read-only

[UNIFIED] Get details of a specific environment in a Coolify project by name.

Inputs: site (required), project_uuid (required), environment_name (required).

coolify_get_projectCoolify: Get projectC
Read-only

[UNIFIED] Get details of a specific Coolify project by UUID.

Inputs: site (required), uuid (required).

coolify_get_serverCoolify: Get serverC
Read-only

[UNIFIED] Get details of a specific server by UUID, including settings.

Inputs: site (required), uuid (required).

coolify_get_server_domainsCoolify: Get server domainsC
Read-only

[UNIFIED] Get all domains configured on a specific server.

Inputs: site (required), uuid (required).

coolify_get_server_resourcesCoolify: Get server resourcesC
Read-only

[UNIFIED] Get all resources (applications, databases, services) deployed on a specific server.

Inputs: site (required), uuid (required).

coolify_get_serviceCoolify: Get serviceC
Read-only

[UNIFIED] Get details of a specific Coolify service by UUID.

Inputs: site (required), uuid (required).

coolify_list_app_deploymentsCoolify: List app deploymentsC
Read-only

[UNIFIED] List deployment history for a specific application.

Inputs: site (required), uuid (required), skip, take.

coolify_list_application_envsCoolify: List application envsC
Read-only

[UNIFIED] List environment variables for a Coolify application.

Inputs: site (required), uuid (required).

coolify_list_applicationsCoolify: List applicationsA
Read-only

[UNIFIED] List Coolify applications with compact output by default. Use include_details=true for full Coolify payloads.

Inputs: site (required), tag, name, limit, +2 more.

coolify_list_backup_executionsCoolify: List backup executionsC
Read-only

[UNIFIED] List executions of one scheduled backup of one database. Get the scheduled backup UUID from coolify_get_database_backups.

Inputs: site (required), uuid (required), scheduled_backup_uuid (required).

coolify_list_databasesCoolify: List databasesC
Read-only

[UNIFIED] List all Coolify databases.

Inputs: site (required).

coolify_list_deploymentsCoolify: List deploymentsB
Read-only

[UNIFIED] List all running deployments on the Coolify instance.

Inputs: site (required).

coolify_list_environmentsCoolify: List environmentsC
Read-only

[UNIFIED] List all environments in a Coolify project.

Inputs: site (required), project_uuid (required).

coolify_list_github_appsCoolify: List github appsB
Read-only

[UNIFIED] List configured Coolify GitHub Apps for private repository deployments.

Inputs: site (required).

coolify_list_projectsCoolify: List projectsC
Read-only

[UNIFIED] List all Coolify projects.

Inputs: site (required).

coolify_list_serversCoolify: List serversC
Read-only

[UNIFIED] List all servers registered in the Coolify instance.

Inputs: site (required).

coolify_list_service_envsCoolify: List service envsC
Read-only

[UNIFIED] List environment variables for a Coolify service.

Inputs: site (required), uuid (required).

coolify_list_servicesCoolify: List servicesB
Read-only

[UNIFIED] List Coolify services with compact output by default. Use include_details=true for full Coolify payloads.

Inputs: site (required), name, limit, fields, +1 more.

coolify_restart_applicationCoolify: Restart applicationC
Destructive

[UNIFIED] Restart a Coolify application.

Inputs: site (required), uuid (required).

coolify_restart_databaseCoolify: Restart databaseC
Destructive

[UNIFIED] Restart a Coolify database.

Inputs: site (required), uuid (required).

coolify_restart_serviceCoolify: Restart serviceC
Destructive

[UNIFIED] Restart a Coolify service.

Inputs: site (required), uuid (required).

coolify_start_applicationCoolify: Start applicationC
Destructive

[UNIFIED] Deploy/start a Coolify application. Triggers a new deployment.

Inputs: site (required), uuid (required), force, instant_deploy.

coolify_start_databaseCoolify: Start databaseC
Destructive

[UNIFIED] Start a Coolify database.

Inputs: site (required), uuid (required).

coolify_start_serviceCoolify: Start serviceC
Destructive

[UNIFIED] Start a Coolify service.

Inputs: site (required), uuid (required).

coolify_stop_applicationCoolify: Stop applicationC
Destructive

[UNIFIED] Stop a running Coolify application.

Inputs: site (required), uuid (required), docker_cleanup.

coolify_stop_databaseCoolify: Stop databaseC
Destructive

[UNIFIED] Stop a running Coolify database.

Inputs: site (required), uuid (required).

coolify_stop_serviceCoolify: Stop serviceC
Destructive

[UNIFIED] Stop a running Coolify service.

Inputs: site (required), uuid (required).

coolify_update_applicationCoolify: Update applicationC
Destructive

[UNIFIED] Update a Coolify application settings. Supports name, description, domains, build settings, health checks, resource limits, and more.

Inputs: site (required), uuid (required), name, domains, +63 more.

coolify_update_application_envCoolify: Update application envC
Destructive

[UNIFIED] Update an environment variable for a Coolify application.

Inputs: key (required), site (required), uuid (required), value (required), +7 more.

coolify_update_application_envs_bulkCoolify: Update application envs bulkC
Destructive

[UNIFIED] Bulk update environment variables for a Coolify application.

Inputs: data (required), site (required), uuid (required).

coolify_update_databaseCoolify: Update databaseC
Destructive

[UNIFIED] Update a Coolify database settings.

Inputs: site (required), uuid (required), name, image, +33 more.

coolify_update_projectCoolify: Update projectC
Destructive

[UNIFIED] Update a Coolify project name or description.

Inputs: site (required), uuid (required), name, description.

coolify_update_serverCoolify: Update serverC
Destructive

[UNIFIED] Update server configuration.

Inputs: site (required), uuid (required), ip, name, +4 more.

coolify_update_serviceCoolify: Update serviceC
Destructive

[UNIFIED] Update a Coolify service settings.

Inputs: site (required), uuid (required), name, description, +1 more.

coolify_update_service_envCoolify: Update service envC
Destructive

[UNIFIED] Update an environment variable for a Coolify service.

Inputs: key (required), site (required), uuid (required), value (required), +2 more.

coolify_update_service_envs_bulkCoolify: Update service envs bulkC
Destructive

[UNIFIED] Bulk update environment variables for a Coolify service.

Inputs: data (required), site (required), uuid (required), allow_compose_environment_override.

coolify_validate_serverCoolify: Validate serverB
Destructive

[UNIFIED] Validate server connectivity and configuration. With install=true, can also install prerequisites/Docker and restart the Docker daemon — mutating, so this tool requires write scope.

Inputs: site (required), uuid (required), install.

export_health_metricsB

Export all health metrics to a JSON file.

Inputs: output_path. Returns: result

get_audit_logC

Get audit log entries (Phase X.3).

Inputs: limit, event_type, project_id. Returns: object

get_endpointsB

List all available MCP endpoints (Phase X.3).

Inputs: no named parameters. Returns: object

get_project_healthC

Get detailed health information for a specific project.

Inputs: project_id (required). Returns: result

get_project_infoB

Get detailed information about a specific project.

Inputs: project_id (required). Returns: result

get_project_metricsC

Get historical metrics for a specific project.

Inputs: project_id (required), hours. Returns: result

get_rate_limit_statsC

Get rate limiting statistics.

Inputs: client_id. Returns: result

get_system_infoC

Get comprehensive system information (Phase X.3).

Inputs: no named parameters. Returns: object

get_system_metricsA

Get overall MCP server metrics and statistics.

Returns system-wide metrics including:

  • Uptime

  • Total requests (success/failure)

  • Average response time

  • Error rate percentage

  • Requests per minute

Returns: JSON string with system metrics

Inputs: no named parameters. Returns: result

get_system_uptimeA

Get MCP server uptime information.

Returns: JSON string with uptime in various formats (seconds, minutes, hours, days)

Inputs: no named parameters. Returns: result

gitea_close_issueGitea: Close issueC
Destructive

[UNIFIED] Close an issue.

Inputs: repo (required), site (required), owner (required), issue_number (required).

gitea_close_pull_requestGitea: Close pull requestC
Destructive

[UNIFIED] Close a pull request without merging.

Inputs: repo (required), site (required), owner (required), pr_number (required).

gitea_compareGitea: CompareA
Read-only

[UNIFIED] Compare two commits / branches / tags in a Gitea repository. Returns commits + file diffs between base and head (the Gitea compare endpoint).

Inputs: base (required), head (required), repo (required), site (required), +1 more.

gitea_create_branchGitea: Create branchC

[UNIFIED] Create a new branch in a Gitea repository from existing branch or commit.

Inputs: repo (required), site (required), owner (required), new_branch_name (required), +2 more.

gitea_create_fileGitea: Create fileC
Destructive

[UNIFIED] Create a new file in a Gitea repository with commit message.

Inputs: path (required), repo (required), site (required), owner (required), +7 more.

gitea_create_filesGitea: Create filesA
Destructive

[UNIFIED] Create or update multiple files in a single commit. Uses Gitea's /repos/{owner}/{repo}/contents batch endpoint. Per-file operations: create | update | delete. For create/update, pass raw UTF-8 content (default) or a base64 string with content_is_base64=true per file. Delete requires each file's current sha.

Inputs: repo (required), site (required), files (required), owner (required), +3 more.

gitea_create_issueGitea: Create issueC

[UNIFIED] Create a new issue in a Gitea repository with optional labels, assignees, and milestone.

Inputs: repo (required), site (required), owner (required), title (required), +6 more.

gitea_create_issue_commentGitea: Create issue commentC

[UNIFIED] Add a comment to an issue.

Inputs: body (required), repo (required), site (required), owner (required), +1 more.

gitea_create_labelGitea: Create labelC

[UNIFIED] Create a new label in a repository.

Inputs: name (required), repo (required), site (required), color (required), +2 more.

gitea_create_milestoneGitea: Create milestoneC

[UNIFIED] Create a new milestone in a repository.

Inputs: repo (required), site (required), owner (required), title (required), +3 more.

gitea_create_pr_commentGitea: Create pr commentC

[UNIFIED] Add a comment to a pull request.

Inputs: body (required), repo (required), site (required), owner (required), +1 more.

gitea_create_pr_reviewGitea: Create pr reviewC
Destructive

[UNIFIED] Create a review for a pull request (approve, request changes, or comment).

Inputs: repo (required), site (required), event (required), owner (required), +2 more.

gitea_create_pull_requestGitea: Create pull requestC

[UNIFIED] Create a new pull request in a Gitea repository.

Inputs: base (required), head (required), repo (required), site (required), +7 more.

gitea_create_releaseGitea: Create releaseC

[UNIFIED] Create a release (tag + release metadata) on a Gitea repository. Set draft to hide it from users until published.

Inputs: repo (required), site (required), owner (required), tag_name (required), +5 more.

gitea_create_repositoryGitea: Create repositoryA

[UNIFIED] Create a new Gitea repository. Can create user or organization repository with optional auto-initialization.

Inputs: name (required), site (required), org, readme, +6 more.

gitea_create_tagGitea: Create tagC

[UNIFIED] Create a new tag in a Gitea repository at specific commit.

Inputs: repo (required), site (required), owner (required), tag_name (required), +2 more.

gitea_create_webhookGitea: Create webhookC
Destructive

[UNIFIED] Create a new webhook for a repository to receive event notifications.

Inputs: url (required), repo (required), site (required), owner (required), +5 more.

gitea_delete_branchGitea: Delete branchC
Destructive

[UNIFIED] Delete a branch from a Gitea repository. Cannot delete default branch.

Inputs: repo (required), site (required), owner (required), branch (required).

gitea_delete_fileGitea: Delete fileB
Destructive

[UNIFIED] Delete a file from a Gitea repository. Requires current file SHA for conflict detection.

Inputs: sha (required), path (required), repo (required), site (required), +3 more.

gitea_delete_labelGitea: Delete labelC
Destructive

[UNIFIED] Delete a label from a repository.

Inputs: repo (required), site (required), owner (required), label_id (required).

gitea_delete_repositoryGitea: Delete repositoryB
Destructive

[UNIFIED] Delete a Gitea repository permanently. This action cannot be undone!

Inputs: repo (required), site (required), owner (required).

gitea_delete_tagGitea: Delete tagC
Destructive

[UNIFIED] Delete a tag from a Gitea repository.

Inputs: tag (required), repo (required), site (required), owner (required).

gitea_delete_webhookGitea: Delete webhookC
Destructive

[UNIFIED] Delete a webhook from a repository.

Inputs: repo (required), site (required), owner (required), webhook_id (required).

gitea_fork_repositoryGitea: Fork repositoryA
Destructive

[UNIFIED] Fork a Gitea repository. Without organization, forks under the calling user. name optionally renames the fork.

Inputs: repo (required), site (required), owner (required), name, +1 more.

gitea_get_branchGitea: Get branchB
Read-only

[UNIFIED] Get details of a specific branch including latest commit and protection settings.

Inputs: repo (required), site (required), owner (required), branch (required).

gitea_get_fileGitea: Get fileC
Read-only

[UNIFIED] Get file contents from a Gitea repository. Returns file content (Base64 encoded) and metadata.

Inputs: path (required), repo (required), site (required), owner (required), +1 more.

gitea_get_issueGitea: Get issueC
Read-only

[UNIFIED] Get details of a specific issue by number.

Inputs: repo (required), site (required), owner (required), issue_number (required).

gitea_get_organizationGitea: Get organizationC
Read-only

[UNIFIED] Get information about a Gitea organization by name.

Inputs: org (required), site (required).

gitea_get_pr_diffGitea: Get pr diffC
Read-only

[UNIFIED] Get the unified diff of a pull request.

Inputs: repo (required), site (required), owner (required), pr_number (required).

gitea_get_pull_requestGitea: Get pull requestC
Read-only

[UNIFIED] Get details of a specific pull request by number.

Inputs: repo (required), site (required), owner (required), pr_number (required).

gitea_get_repositoryGitea: Get repositoryC
Read-only

[UNIFIED] Get details of a specific Gitea repository. Returns complete repository information.

Inputs: repo (required), site (required), owner (required).

gitea_get_treeGitea: Get treeA
Read-only

[UNIFIED] List the file tree of a Gitea repository. sha may be a branch name, tag, or commit (default: HEAD). recursive=true returns the entire tree in one payload. Use this instead of issuing many get_file calls when you don't know the paths ahead of time.

Inputs: repo (required), site (required), owner (required), sha, +3 more.

gitea_get_userGitea: Get userC
Read-only

[UNIFIED] Get information about a Gitea user by username.

Inputs: site (required), username (required).

gitea_get_webhookGitea: Get webhookC
Read-only

[UNIFIED] Get details of a specific webhook.

Inputs: repo (required), site (required), owner (required), webhook_id (required).

gitea_list_branchesGitea: List branchesC
Read-only

[UNIFIED] List all branches in a Gitea repository with commit information and protection status.

Inputs: repo (required), site (required), owner (required), page, +1 more.

gitea_list_issue_commentsGitea: List issue commentsC
Read-only

[UNIFIED] List all comments on an issue.

Inputs: repo (required), site (required), owner (required), issue_number (required).

gitea_list_issuesGitea: List issuesC
Read-only

[UNIFIED] List issues in a Gitea repository with filters. Returns paginated list of issues.

Inputs: repo (required), site (required), owner (required), q, +4 more.

gitea_list_labelsGitea: List labelsC
Read-only

[UNIFIED] List all labels in a repository.

Inputs: repo (required), site (required), owner (required).

gitea_list_milestonesGitea: List milestonesC
Read-only

[UNIFIED] List all milestones in a repository.

Inputs: repo (required), site (required), owner (required), state.

gitea_list_organizationsGitea: List organizationsC
Read-only

[UNIFIED] List organizations for the current authenticated user.

Inputs: site (required), page, limit.

gitea_list_org_reposGitea: List org reposC
Read-only

[UNIFIED] List all repositories of an organization.

Inputs: org (required), site (required), page, limit.

gitea_list_org_teamsGitea: List org teamsB
Read-only

[UNIFIED] List all teams in an organization.

Inputs: org (required), site (required), page, limit.

gitea_list_pr_commentsGitea: List pr commentsC
Read-only

[UNIFIED] List all comments on a pull request.

Inputs: repo (required), site (required), owner (required), pr_number (required).

gitea_list_pr_commitsGitea: List pr commitsC
Read-only

[UNIFIED] List all commits in a pull request.

Inputs: repo (required), site (required), owner (required), pr_number (required).

gitea_list_pr_filesGitea: List pr filesB
Read-only

[UNIFIED] List all changed files in a pull request with additions/deletions count.

Inputs: repo (required), site (required), owner (required), pr_number (required).

gitea_list_pr_reviewsGitea: List pr reviewsC
Read-only

[UNIFIED] List all reviews on a pull request.

Inputs: repo (required), site (required), owner (required), pr_number (required).

gitea_list_pull_requestsGitea: List pull requestsC
Read-only

[UNIFIED] List pull requests in a Gitea repository with filters.

Inputs: repo (required), site (required), owner (required), page, +5 more.

gitea_list_releasesGitea: List releasesB
Read-only

[UNIFIED] List releases of a Gitea repository (paginated).

Inputs: repo (required), site (required), owner (required), page, +1 more.

gitea_list_repositoriesGitea: List repositoriesB
Read-only

[UNIFIED] List Gitea repositories for a user/organization or current user. Returns repository list with metadata.

Inputs: site (required), page, type, limit, +1 more.

gitea_list_tagsGitea: List tagsC
Read-only

[UNIFIED] List all tags in a Gitea repository with commit information.

Inputs: repo (required), site (required), owner (required), page, +1 more.

gitea_list_team_membersGitea: List team membersC
Read-only

[UNIFIED] List all members of a team.

Inputs: site (required), team_id (required), page, limit.

gitea_list_user_reposGitea: List user reposC
Read-only

[UNIFIED] List all public repositories of a Gitea user.

Inputs: site (required), username (required), page, limit.

gitea_list_webhooksGitea: List webhooksC
Read-only

[UNIFIED] List all webhooks configured for a repository.

Inputs: repo (required), site (required), owner (required).

gitea_merge_pull_requestGitea: Merge pull requestC
Destructive

[UNIFIED] Merge a pull request using specified merge method.

Inputs: repo (required), site (required), owner (required), pr_number (required), +4 more.

gitea_reopen_issueGitea: Reopen issueC
Destructive

[UNIFIED] Reopen a closed issue.

Inputs: repo (required), site (required), owner (required), issue_number (required).

gitea_reopen_pull_requestGitea: Reopen pull requestC
Destructive

[UNIFIED] Reopen a closed pull request.

Inputs: repo (required), site (required), owner (required), pr_number (required).

gitea_request_pr_reviewersGitea: Request pr reviewersC
Destructive

[UNIFIED] Request reviewers for a pull request.

Inputs: repo (required), site (required), owner (required), pr_number (required), +1 more.

gitea_search_codeGitea: Search codeB
Read-only

[UNIFIED] Search code inside Gitea. When owner and repo are set, the search scopes to that repository; otherwise it's an instance-wide code search. Returns Gitea's raw {ok, data: [...]} shape.

Inputs: site (required), keyword (required), page, repo, +2 more.

gitea_search_usersGitea: Search usersC
Read-only

[UNIFIED] Search for Gitea users by query or user ID.

Inputs: site (required), q, uid.

gitea_test_webhookGitea: Test webhookC
Destructive

[UNIFIED] Send a test payload to a webhook to verify it's working.

Inputs: repo (required), site (required), owner (required), webhook_id (required).

gitea_update_fileGitea: Update fileC
Destructive

[UNIFIED] Update an existing file in a Gitea repository. Requires current file SHA for conflict detection.

Inputs: sha (required), path (required), repo (required), site (required), +6 more.

gitea_update_issueGitea: Update issueC
Destructive

[UNIFIED] Update an existing issue. Can modify title, body, state, assignees, labels, and milestone.

Inputs: repo (required), site (required), owner (required), issue_number (required), +7 more.

gitea_update_pull_requestGitea: Update pull requestC
Destructive

[UNIFIED] Update an existing pull request. Can modify title, body, state, assignees, labels, and milestone.

Inputs: repo (required), site (required), owner (required), pr_number (required), +7 more.

gitea_update_repositoryGitea: Update repositoryC
Destructive

[UNIFIED] Update Gitea repository settings like name, description, visibility, and features.

Inputs: repo (required), site (required), owner (required), name, +10 more.

gitea_update_webhookGitea: Update webhookC
Destructive

[UNIFIED] Update an existing webhook's configuration, events, or active status.

Inputs: repo (required), site (required), owner (required), webhook_id (required), +5 more.

gitea_upload_abortGitea: Upload abortB
Destructive

[UNIFIED] Abort a Gitea binary upload session and delete its spill file.

Inputs: site (required), session_id (required).

gitea_upload_chunkGitea: Upload chunkA
Destructive

[UNIFIED] Append one base64-encoded chunk to a Gitea binary upload session. Chunks must arrive in order. Prefer the HTTP upload URL from gitea_upload_start when available; this is the fallback path.

Inputs: site (required), index (required), data_b64 (required), session_id (required), +1 more.

gitea_upload_finishGitea: Upload finishB
Destructive

[UNIFIED] Finalize a complete Gitea binary upload session. For release_asset sessions this verifies optional sha256, then sends the original bytes to Gitea as multipart/form-data.

Inputs: site (required), session_id (required).

gitea_upload_release_assetGitea: Upload release assetA
Destructive

[UNIFIED] Upload a small base64-encoded release asset to a Gitea release. For larger files, prefer gitea_upload_start plus the returned HTTP upload URL, then gitea_upload_finish.

Inputs: repo (required), site (required), owner (required), filename (required), +2 more.

gitea_upload_startGitea: Upload startA
Destructive

[UNIFIED] Start a Gitea binary upload session. First supported kind is release_asset. On per-user MCP endpoints this returns /u/{user_id}/{alias}/gitea-upload/{session_id}, so callers can PUT raw bytes with curl --data-binary @file using the same Bearer token. TTL 1h, hard cap 500 MB by default.

Inputs: repo (required), site (required), owner (required), filename (required), +4 more.

gitea_upload_statusGitea: Upload statusC
Read-only

[UNIFIED] Query a Gitea binary upload session status and target metadata.

Inputs: site (required), session_id (required).

gmail_add_labelGmail: Add labelB
Destructive

[UNIFIED] Add one or more labels to a message (e.g. STARRED, IMPORTANT, or a user label id from list_labels).

Inputs: site (required), label_ids (required), message_id (required).

gmail_get_attachmentGmail: Get attachmentA
Read-only

[UNIFIED] Get a message attachment by id. Returns the attachment filename, mime type, size, and base64-encoded data. Find attachment ids in a get_message (format=full) response under parts[].body.attachmentId.

Inputs: site (required), message_id (required), attachment_id (required).

gmail_get_messageGmail: Get messageA
Read-only

[UNIFIED] Get a single Gmail message by id, including headers and (with format=full) the body parts. Use format=metadata for headers only (cheaper) or format=raw for the full RFC822 message.

Inputs: site (required), message_id (required), format.

gmail_list_labelsGmail: List labelsA
Read-only

[UNIFIED] List all Gmail labels (system + user) with their ids. System label ids include INBOX, UNREAD, STARRED, IMPORTANT, TRASH, SENT, DRAFT. Use these ids with mark_read / mark_unread / add_label / remove_label.

Inputs: site (required).

gmail_list_messagesGmail: List messagesA
Read-only

[UNIFIED] List Gmail messages. Optionally filter with a Gmail search query (q), label ids, and paginate. Returns message ids + thread ids; use gmail_get_message to read a message's content.

Inputs: site (required), q, label_ids, page_token, +1 more.

gmail_mark_readGmail: Mark readB
Destructive

[UNIFIED] Mark a message as read (removes the UNREAD label).

Inputs: site (required), message_id (required).

gmail_mark_unreadGmail: Mark unreadB
Destructive

[UNIFIED] Mark a message as unread (adds the UNREAD label).

Inputs: site (required), message_id (required).

gmail_remove_labelGmail: Remove labelB
Destructive

[UNIFIED] Remove one or more labels from a message (e.g. STARRED, INBOX to archive, or a user label id).

Inputs: site (required), label_ids (required), message_id (required).

gmail_trash_messageGmail: Trash messageB
Destructive

[UNIFIED] Move a Gmail message to trash. Recoverable until ~30 days.

Inputs: site (required), message_id (required).

gmail_untrash_messageGmail: Untrash messageB
Destructive

[UNIFIED] Remove a message from trash (restore to inbox).

Inputs: site (required), message_id (required).

google_search_console_inspect_urlSearch Console: Inspect urlA
Read-only

[UNIFIED] Inspect a URL's indexing status within a Search Console property. Returns the index status (INDEXED, NOT_INDEXED, etc.), crawling data, mobile usability, rich results, and AMP status. The inspection URL must be under the property's scope — cross-property inspection is rejected by the Google API.

Inputs: site (required), site_url (required), inspection_url (required), language.

google_search_console_list_propertiesSearch Console: List propertiesA
Read-only

[UNIFIED] List all Search Console properties (sites) the authenticated user has access to, with their permission levels. Returns property URLs (domain properties as sc-domain:example.com, URL-prefix properties as https://example.com/) and permission levels (siteFullUser, siteOwner, siteRestrictedUser).

Inputs: site (required).

google_search_console_list_sitemapsSearch Console: List sitemapsA
Read-only

[UNIFIED] List sitemaps submitted for a Search Console property, including their submission status, last processed date, errors, and warnings. Use list_properties first to discover available property URLs.

Inputs: site (required), site_url (required), page_token.

google_search_console_search_analyticsSearch Console: Search analyticsC
Read-only

[UNIFIED] Query Search Analytics data for a property with bounded dimensions and date ranges. Returns rows with clicks, impressions, CTR, and position broken down by the specified dimensions. Date range is limited to 548 days (~18 months). Maximum 25,000 rows per request.

Inputs: site (required), end_date (required), site_url (required), start_date (required), +5 more.

list_projectsA

List all discovered projects.

Returns information about all projects that have been configured through environment variables.

Returns: JSON string with list of projects

Inputs: no named parameters. Returns: result

manage_api_keys_createC

Create a new API key for a project.

Inputs: project_id (required), scope, description, expires_in_days. Returns: object

manage_api_keys_deleteB

Permanently delete an API key (cannot be undone).

Inputs: key_id (required). Returns: object

manage_api_keys_get_infoC

Get detailed information about a specific API key.

Inputs: key_id (required). Returns: object

manage_api_keys_listA

List API keys with optional filtering.

Requires: Global API key (Master API Key or global admin key)

Filtering Behavior:

  • project_id=null (default): Returns ALL keys (global + project-specific)

  • project_id="*": Returns ONLY global keys

  • project_id="wordpress_site1": Returns keys for that project + global keys

Inputs: project_id, include_revoked. Returns: object

manage_api_keys_revokeA

Revoke an API key (soft delete - can be restored).

Inputs: key_id (required). Returns: object

manage_api_keys_rotateA

Rotate all keys for a project.

Creates new keys with the same scopes and revokes old ones. Use this for security rotation or if keys may be compromised.

Inputs: project_id (required). Returns: object

n8n_activate_workflown8n: Activate workflowB
Destructive

[UNIFIED] Activate a workflow so it runs automatically when triggered. Workflow must have at least one trigger node.

Inputs: site (required), workflow_id (required).

n8n_add_project_usersn8n: Add project usersB
Destructive

[UNIFIED] [Enterprise] Add users to a project with roles. Requires n8n Enterprise/Pro license.

Inputs: site (required), users (required), project_id (required).

n8n_change_project_user_rolen8n: Change project user roleB
Destructive

[UNIFIED] [Enterprise] Change a user's role in a project. Requires n8n Enterprise/Pro license.

Inputs: role (required), site (required), user_id (required), project_id (required).

n8n_change_user_rolen8n: Change user roleC
Destructive

[UNIFIED] Change a user's global role.

Inputs: site (required), user_id (required), new_role (required).

n8n_create_credentialn8n: Create credentialB

[UNIFIED] Create a new credential. Use get_credential_schema to see required fields.

Inputs: data (required), name (required), site (required), type (required).

n8n_create_projectn8n: Create projectB
Destructive

[UNIFIED] [Enterprise] Create a new project. Requires n8n Enterprise/Pro license.

Inputs: name (required), site (required).

n8n_create_tagn8n: Create tagC

[UNIFIED] Create a new tag for workflow organization.

Inputs: name (required), site (required).

n8n_create_usern8n: Create userC
Destructive

[UNIFIED] Invite/create a new user.

Inputs: site (required), email (required), role.

n8n_create_variablen8n: Create variableB

[UNIFIED] [Enterprise] Create a new environment variable. Requires n8n Enterprise/Pro license.

Inputs: key (required), site (required), value (required).

n8n_create_workflown8n: Create workflowB

[UNIFIED] Create a new workflow from JSON definition. Workflow will be inactive by default. Note: settings and static_data are OPTIONAL - omit them entirely if not needed.

Inputs: name (required), site (required), nodes, settings, +2 more.

n8n_deactivate_workflown8n: Deactivate workflowA
Destructive

[UNIFIED] Deactivate a workflow. It will no longer run automatically but can still be executed manually.

Inputs: site (required), workflow_id (required).

n8n_delete_credentialn8n: Delete credentialC
Destructive

[UNIFIED] Delete a credential.

Inputs: site (required), credential_id (required).

n8n_delete_executionn8n: Delete executionB
Destructive

[UNIFIED] Delete a single execution record. This removes the execution from history.

Inputs: site (required), execution_id (required).

n8n_delete_executionsn8n: Delete executionsC
Destructive

[UNIFIED] Bulk delete multiple execution records.

Inputs: site (required), execution_ids (required).

n8n_delete_projectn8n: Delete projectB
Destructive

[UNIFIED] [Enterprise] Delete a project. Requires n8n Enterprise/Pro license.

Inputs: site (required), project_id (required).

n8n_delete_tagn8n: Delete tagD
Destructive

[UNIFIED] Delete a tag.

Inputs: site (required), tag_id (required).

n8n_delete_tagsn8n: Delete tagsC
Destructive

[UNIFIED] Bulk delete multiple tags.

Inputs: site (required), tag_ids (required).

n8n_delete_usern8n: Delete userC
Destructive

[UNIFIED] Delete a user from the instance.

Inputs: site (required), user_id (required).

n8n_delete_variablen8n: Delete variableB
Destructive

[UNIFIED] [Enterprise] Delete an environment variable. Requires n8n Enterprise/Pro license.

Inputs: key (required), site (required).

n8n_delete_workflown8n: Delete workflowC
Destructive

[UNIFIED] Permanently delete a workflow. This action cannot be undone.

Inputs: site (required), workflow_id (required).

n8n_duplicate_workflown8n: Duplicate workflowC
Destructive

[UNIFIED] Create a copy of an existing workflow with a new name.

Inputs: site (required), new_name (required), workflow_id (required).

n8n_execute_workflown8n: Execute workflowB
Destructive

[UNIFIED] Manually execute a workflow and return execution ID. Use get_execution to check status and results.

Inputs: site (required), workflow_id (required).

n8n_execute_workflow_with_datan8n: Execute workflow with dataC
Destructive

[UNIFIED] Execute workflow with custom input data. Useful for workflows with webhook or manual triggers.

Inputs: data (required), site (required), workflow_id (required).

n8n_export_workflown8n: Export workflowB
Read-only

[UNIFIED] Export a workflow as JSON. Can be used for backup or sharing.

Inputs: site (required), workflow_id (required).

n8n_get_credentialn8n: Get credentialB
Read-only

[UNIFIED] Get credential metadata by ID. Note: Listing all credentials is not supported in n8n Public API.

Inputs: site (required), credential_id (required).

n8n_get_credential_scheman8n: Get credential schemaB
Read-only

[UNIFIED] Get the schema for a credential type. Shows required fields.

Inputs: site (required), credential_type (required).

n8n_get_executionn8n: Get executionB
Read-only

[UNIFIED] Get detailed information about a specific execution including status, timing, and node outputs.

Inputs: site (required), execution_id (required), include_data.

n8n_get_execution_datan8n: Get execution dataB
Read-only

[UNIFIED] Get full execution data including all node inputs and outputs. Useful for debugging.

Inputs: site (required), execution_id (required).

n8n_get_instance_infon8n: Get instance infoB
Read-only

[UNIFIED] Get n8n instance information including version and configuration.

Inputs: site (required).

n8n_get_projectn8n: Get projectA
Read-only

[UNIFIED] [Enterprise] Get project details by ID. Requires n8n Enterprise/Pro license.

Inputs: site (required), project_id (required).

n8n_get_tagn8n: Get tagC
Read-only

[UNIFIED] Get tag details by ID.

Inputs: site (required), tag_id (required).

n8n_get_usern8n: Get userC
Destructive

[UNIFIED] Get user details by ID or email.

Inputs: site (required), user_id (required), include_role.

n8n_get_variablen8n: Get variableB
Read-only

[UNIFIED] [Enterprise] Get variable value by key. Requires n8n Enterprise/Pro license.

Inputs: key (required), site (required).

n8n_get_workflown8n: Get workflowB
Read-only

[UNIFIED] Get detailed information about a specific workflow including nodes, connections, and settings.

Inputs: site (required), workflow_id (required).

n8n_get_workflow_tagsn8n: Get workflow tagsC
Read-only

[UNIFIED] Get list of tags assigned to a workflow.

Inputs: site (required), workflow_id (required).

n8n_health_checkn8n: Health checkB
Read-only

[UNIFIED] Check if the n8n instance is healthy and accessible.

Inputs: site (required).

n8n_import_workflown8n: Import workflowC
Destructive

[UNIFIED] Import a workflow from JSON definition. Similar to create but accepts full workflow JSON.

Inputs: site (required), workflow_json (required), name_override.

n8n_list_executionsn8n: List executionsC
Read-only

[UNIFIED] List workflow executions with filters by status, workflow, and date. Returns execution history. All filter parameters are OPTIONAL.

Inputs: site (required), limit, cursor, status, +3 more.

n8n_list_projectsn8n: List projectsB
Read-only

[UNIFIED] [Enterprise] List all projects. Requires n8n Enterprise/Pro license. All parameters are OPTIONAL.

Inputs: site (required), limit, cursor.

n8n_list_tagsn8n: List tagsC
Read-only

[UNIFIED] List all tags used for workflow organization. All parameters are OPTIONAL.

Inputs: site (required), limit, cursor.

n8n_list_usersn8n: List usersC
Destructive

[UNIFIED] List all users in the n8n instance. All parameters are OPTIONAL.

Inputs: site (required), limit, cursor, include_role.

n8n_list_variablesn8n: List variablesC
Read-only

[UNIFIED] [Enterprise] List all environment variables. Requires n8n Enterprise/Pro license. All parameters are OPTIONAL.

Inputs: site (required), limit, cursor.

n8n_list_workflowsn8n: List workflowsB
Read-only

[UNIFIED] List all n8n workflows with optional filters. Returns workflow ID, name, active status, tags, and metadata. All filter parameters are OPTIONAL.

Inputs: site (required), name, tags, limit, +2 more.

n8n_remove_project_usern8n: Remove project userB
Destructive

[UNIFIED] [Enterprise] Remove a user from a project. Requires n8n Enterprise/Pro license.

Inputs: site (required), user_id (required), project_id (required).

n8n_retry_executionn8n: Retry executionB
Destructive

[UNIFIED] Retry a failed execution. Creates a new execution with the same input data.

Inputs: site (required), execution_id (required).

n8n_run_security_auditn8n: Run security auditC
Destructive

[UNIFIED] Run a security audit on the n8n instance. Returns security diagnostics grouped by category. All parameters are OPTIONAL.

Inputs: site (required), categories.

n8n_set_variablesn8n: Set variablesB
Destructive

[UNIFIED] [Enterprise] Bulk set multiple variables at once. Requires n8n Enterprise/Pro license.

Inputs: site (required), variables (required).

n8n_set_workflow_tagsn8n: Set workflow tagsB
Destructive

[UNIFIED] Assign tags to a workflow. Replaces existing tags. Pass empty array [] to remove all tags.

Inputs: site (required), workflow_id (required), tag_ids.

n8n_source_control_pulln8n: Source control pullB
Destructive

[UNIFIED] [Enterprise] Pull workflows from source control (Git). Syncs workflows from connected repository. Requires n8n Enterprise/Pro license. All parameters are OPTIONAL.

Inputs: site (required), force, variables.

n8n_stop_executionn8n: Stop executionC
Destructive

[UNIFIED] Stop a currently running execution.

Inputs: site (required), execution_id (required).

n8n_transfer_credentialn8n: Transfer credentialC
Destructive

[UNIFIED] [Enterprise] Transfer a credential to another project. Requires n8n Enterprise/Pro license.

Inputs: site (required), credential_id (required), destination_project_id (required).

n8n_transfer_workflow_to_projectn8n: Transfer workflow to projectB
Destructive

[UNIFIED] Transfer a workflow to a different project (Enterprise/Pro). The destination project must exist and the API key must have access to both the source and destination projects.

Inputs: site (required), workflow_id (required), destination_project_id (required).

n8n_update_projectn8n: Update projectC
Destructive

[UNIFIED] [Enterprise] Update project metadata. Requires n8n Enterprise/Pro license.

Inputs: name (required), site (required), project_id (required).

n8n_update_tagn8n: Update tagC
Destructive

[UNIFIED] Update tag name.

Inputs: name (required), site (required), tag_id (required).

n8n_update_variablen8n: Update variableB
Destructive

[UNIFIED] [Enterprise] Update an existing variable's value. Requires n8n Enterprise/Pro license.

Inputs: key (required), site (required), value (required).

n8n_update_workflown8n: Update workflowB
Destructive

[UNIFIED] Update an existing workflow. Can modify nodes, connections, settings, or name. All parameters except workflow_id are OPTIONAL - omit them to keep current values.

Inputs: site (required), workflow_id (required), name, nodes, +2 more.

n8n_wait_for_executionn8n: Wait for executionB
Read-only

[UNIFIED] Poll an execution until it completes. Returns final status and output.

Inputs: site (required), execution_id (required), poll_interval, timeout_seconds.

oauth_get_client_infoC

Get detailed information about a specific OAuth client.

Inputs: client_id (required). Returns: object

oauth_list_clientsA

List all registered OAuth clients.

Returns client information (excluding secrets).

Returns: Dict with list of clients

Inputs: no named parameters. Returns: object

oauth_register_clientC

Register a new OAuth 2.1 client.

Inputs: client_name (required), redirect_uris (required), metadata, grant_types, +1 more. Returns: object

oauth_revoke_clientB

Revoke (delete) an OAuth client.

This will delete the client and prevent further authentication. Existing tokens will continue to work until they expire.

Inputs: client_id (required). Returns: object

openpanel_assign_groupOpenPanel: Assign groupB
Destructive

[UNIFIED] Assign a user to one or more groups. If no profile_id is provided, falls back to device ID.

Inputs: site (required), group_ids (required), profile_id.

openpanel_create_clientOpenPanel: Create clientA
Destructive

[UNIFIED] Create a new API client via Manage API. Modes: 'write' (tracking only), 'read' (export/analytics), 'root' (full access). Requires 'root' mode client.

Inputs: name (required), site (required), project_id (required), mode.

openpanel_create_groupOpenPanel: Create groupC
Destructive

[UNIFIED] Create or update a group (e.g., company, workspace, team). Groups can be associated with events and profiles.

Inputs: name (required), site (required), group_id (required), group_type (required), +1 more.

openpanel_create_projectOpenPanel: Create projectB
Destructive

[UNIFIED] Create a new project via Manage API. Requires 'root' mode client.

Inputs: name (required), site (required), domain.

openpanel_decrement_propertyOpenPanel: Decrement propertyB
Destructive

[UNIFIED] Decrement a numeric property on a user profile. IMPORTANT: Profile must exist first (use identify_user). Property must be numeric.

Inputs: site (required), profile_id (required), property_name (required), value.

openpanel_delete_clientOpenPanel: Delete clientB
Destructive

[UNIFIED] Delete an API client via Manage API. WARNING: Any integrations using this client will stop working. Requires 'root' mode client.

Inputs: site (required), client_id (required).

openpanel_delete_projectOpenPanel: Delete projectB
Destructive

[UNIFIED] Delete a project via Manage API. WARNING: Permanently deletes all project data. Requires 'root' mode client.

Inputs: site (required), project_id (required).

openpanel_export_chart_dataOpenPanel: Export chart dataB
Read-only

[UNIFIED] Export aggregated chart data with time series and breakdowns. Requires 'read' or 'root' mode client.

Inputs: site (required), events (required), interval, previous, +3 more.

openpanel_export_eventsOpenPanel: Export eventsB
Read-only

[UNIFIED] Export raw event data with filters and pagination. Returns individual event records. Requires 'read' or 'root' mode client.

Inputs: site (required), end, page, event, +5 more.

openpanel_export_events_csvOpenPanel: Export events csvC
Read-only

[UNIFIED] Export events as CSV-formatted data for spreadsheet analysis. Requires 'read' or 'root' mode client.

Inputs: site (required), end, event, limit, +2 more.

openpanel_export_profile_dataOpenPanel: Export profile dataB
Read-only

[UNIFIED] Export all data for a user profile (GDPR data portability). Returns events and profile data. Requires 'read' or 'root' mode client.

Inputs: site (required), profile_id (required), project_id (required), format.

openpanel_get_clientOpenPanel: Get clientC
Destructive

[UNIFIED] Get API client details via Manage API. Requires 'root' mode client.

Inputs: site (required), client_id (required).

openpanel_get_device_dataOpenPanel: Get device dataC
Read-only

[UNIFIED] Get device/browser/OS breakdown of visitors via Insights API.

Inputs: site (required), limit, breakdown, date_range, +1 more.

openpanel_get_event_countOpenPanel: Get event countC
Read-only

[UNIFIED] Get total event count with optional filters via Export API.

Inputs: site (required), event, date_range, project_id.

openpanel_get_geo_dataOpenPanel: Get geo dataC
Read-only

[UNIFIED] Get geographic distribution of visitors via Insights API.

Inputs: site (required), limit, breakdown, date_range, +1 more.

openpanel_get_instance_infoOpenPanel: Get instance infoB
Read-only

[UNIFIED] Get OpenPanel instance information including URL and configuration.

Inputs: site (required).

openpanel_get_overview_reportOpenPanel: Get overview reportC
Read-only

[UNIFIED] Get overview statistics including visitors, page views, sessions, bounce rate, and duration via Insights API.

Inputs: site (required), date_range, project_id.

openpanel_get_page_viewsOpenPanel: Get page viewsC
Read-only

[UNIFIED] Get page view statistics via Insights API.

Inputs: site (required), date_range, project_id.

openpanel_get_profile_eventsOpenPanel: Get profile eventsB
Read-only

[UNIFIED] Get events for a specific user profile via Export API. Requires 'read' or 'root' mode client.

Inputs: site (required), profile_id (required), project_id (required), event, +1 more.

openpanel_get_profile_sessionsOpenPanel: Get profile sessionsB
Read-only

[UNIFIED] Get sessions for a specific user profile via Export API. Requires 'read' or 'root' mode client.

Inputs: site (required), profile_id (required), project_id (required), limit.

openpanel_get_projectOpenPanel: Get projectB
Read-only

[UNIFIED] Get project details via Manage API. Requires 'root' mode client.

Inputs: site (required), project_id (required).

openpanel_get_rate_limit_statusOpenPanel: Get rate limit statusC
Read-only

[UNIFIED] Check current rate limit status for API calls.

Inputs: site (required).

openpanel_get_realtime_statsOpenPanel: Get realtime statsC
Read-only

[UNIFIED] Get real-time active visitor count via Insights live API.

Inputs: site (required), project_id.

openpanel_get_storage_statsOpenPanel: Get storage statsB
Read-only

[UNIFIED] Get storage usage statistics (events stored in ClickHouse).

Inputs: site (required), project_id (required).

openpanel_get_top_pagesOpenPanel: Get top pagesC
Read-only

[UNIFIED] Get top pages by view count via Insights API.

Inputs: site (required), limit, date_range, project_id.

openpanel_get_top_referrersOpenPanel: Get top referrersC
Read-only

[UNIFIED] Get top traffic sources/referrers via Insights API.

Inputs: site (required), limit, date_range, project_id.

openpanel_get_unique_usersOpenPanel: Get unique usersC
Read-only

[UNIFIED] Get unique user/visitor count for a time period via Insights API.

Inputs: site (required), date_range, project_id.

openpanel_get_usage_statsOpenPanel: Get usage statsC
Read-only

[UNIFIED] Get usage statistics for the OpenPanel instance (events, users, etc.).

Inputs: site (required), project_id (required), date_range.

openpanel_health_checkOpenPanel: Health checkC
Read-only

[UNIFIED] Check OpenPanel instance health and service status.

Inputs: site (required).

openpanel_identify_userOpenPanel: Identify userB
Destructive

[UNIFIED] Identify a user and set their profile properties. Use this to associate events with users.

Inputs: site (required), profile_id (required), email, client_ip, +4 more.

openpanel_increment_propertyOpenPanel: Increment propertyB
Destructive

[UNIFIED] Increment a numeric property on a user profile. IMPORTANT: Profile must exist first (use identify_user). Property must be numeric.

Inputs: site (required), profile_id (required), property_name (required), value.

openpanel_list_clientsOpenPanel: List clientsB
Destructive

[UNIFIED] List all API clients via Manage API. Requires 'root' mode client.

Inputs: site (required).

openpanel_list_projectsOpenPanel: List projectsC
Destructive

[UNIFIED] List all projects via Manage API. Requires 'root' mode client.

Inputs: site (required).

openpanel_set_user_propertiesOpenPanel: Set user propertiesC
Destructive

[UNIFIED] Update properties for an existing user profile.

Inputs: site (required), profile_id (required), properties (required).

openpanel_test_connectionOpenPanel: Test connectionC
Read-only

[UNIFIED] Test connection to OpenPanel API with current credentials.

Inputs: site (required).

openpanel_track_batchOpenPanel: Track batchC
Destructive

[UNIFIED] Track multiple events in a single request for efficiency.

Inputs: site (required), events (required), client_ip, user_agent.

openpanel_track_eventOpenPanel: Track eventC
Destructive

[UNIFIED] Track a custom event with properties. Events can have any custom properties for analytics.

Inputs: name (required), site (required), client_ip, timestamp, +3 more.

openpanel_track_page_viewOpenPanel: Track page viewC
Destructive

[UNIFIED] Track a page view event with URL and referrer information.

Inputs: path (required), site (required), title, referrer, +4 more.

openpanel_track_revenueOpenPanel: Track revenueC
Destructive

[UNIFIED] Track a revenue/purchase event with amount and currency.

Inputs: site (required), amount (required), currency, order_id, +5 more.

openpanel_track_screen_viewOpenPanel: Track screen viewC
Destructive

[UNIFIED] Track a screen view event for mobile applications.

Inputs: site (required), screen_name (required), client_ip, profile_id, +3 more.

openpanel_update_clientOpenPanel: Update clientB
Destructive

[UNIFIED] Update an API client via Manage API. Requires 'root' mode client.

Inputs: site (required), client_id (required), mode, name.

openpanel_update_projectOpenPanel: Update projectB
Destructive

[UNIFIED] Update a project via Manage API. Requires 'root' mode client.

Inputs: site (required), project_id (required), name, domain.

reset_rate_limitB

Reset rate limit state for a client or all clients.

CAUTION: This is an administrative tool. Use with care.

Inputs: client_id. Returns: result

set_rate_limit_configC

Configure rate limiting settings (Phase X.3).

Inputs: requests_per_day, requests_per_hour, requests_per_minute. Returns: object

supabase_add_columnSupabase: Add columnC
Destructive

[UNIFIED] Add a new column to an existing table.

Inputs: site (required), table (required), column_name (required), column_type (required), +3 more.

supabase_ban_userSupabase: Ban userC
Destructive

[UNIFIED] Ban a user for a specified duration. Banned users cannot sign in.

Inputs: site (required), user_id (required), duration.

supabase_check_function_healthSupabase: Check function healthC
Read-only

[UNIFIED] Check if an Edge Function is responding correctly.

Inputs: site (required), function_name (required).

supabase_count_rowsSupabase: Count rowsB
Read-only

[UNIFIED] Count rows in a table, optionally matching filter conditions.

Inputs: site (required), table (required), filters, use_service_role.

supabase_create_bucketSupabase: Create bucketC
Destructive

[UNIFIED] Create a new storage bucket. Can be public (accessible without auth) or private.

Inputs: name (required), site (required), public, file_size_limit, +1 more.

supabase_create_policySupabase: Create policyC
Destructive

[UNIFIED] Create a Row Level Security (RLS) policy on a table.

Inputs: name (required), site (required), table (required), definition (required), +4 more.

supabase_create_tableSupabase: Create tableC
Destructive

[UNIFIED] Create a new database table with specified columns.

Inputs: name (required), site (required), columns (required), schema, +1 more.

supabase_create_userSupabase: Create userC
Destructive

[UNIFIED] Create a new user with email and password. Can optionally auto-confirm email and set metadata.

Inputs: site (required), email (required), password (required), phone, +3 more.

supabase_delete_bucketSupabase: Delete bucketB
Destructive

[UNIFIED] Delete a storage bucket. Bucket must be empty first (use empty_bucket).

Inputs: site (required), bucket_id (required).

supabase_delete_filesSupabase: Delete filesC
Destructive

[UNIFIED] Delete one or more files from a bucket.

Inputs: site (required), paths (required), bucket (required).

supabase_delete_policySupabase: Delete policyC
Destructive

[UNIFIED] Delete an RLS policy from a table.

Inputs: name (required), site (required), table (required), schema.

supabase_delete_rowsSupabase: Delete rowsB
Destructive

[UNIFIED] Delete rows matching filter conditions. Always requires at least one filter to prevent accidental full-table deletion.

Inputs: site (required), table (required), filters (required), use_service_role.

supabase_delete_userSupabase: Delete userC
Destructive

[UNIFIED] Permanently delete a user and all their data.

Inputs: site (required), user_id (required).

supabase_delete_user_factorSupabase: Delete user factorC
Destructive

[UNIFIED] Delete an MFA factor from a user.

Inputs: site (required), user_id (required), factor_id (required).

supabase_disable_extensionSupabase: Disable extensionC
Destructive

[UNIFIED] Disable (drop) a PostgreSQL extension.

Inputs: name (required), site (required), cascade.

supabase_disable_rlsSupabase: Disable rlsC
Destructive

[UNIFIED] Disable Row Level Security on a table. Warning: This removes all RLS protection.

Inputs: site (required), table (required), schema.

supabase_download_fileSupabase: Download fileB
Read-only

[UNIFIED] Download a file from storage. Returns base64 encoded content.

Inputs: path (required), site (required), bucket (required).

supabase_drop_columnSupabase: Drop columnC
Destructive

[UNIFIED] Remove a column from a table.

Inputs: site (required), table (required), column_name (required), schema, +1 more.

supabase_drop_tableSupabase: Drop tableC
Destructive

[UNIFIED] Drop (delete) a database table. Warning: This is irreversible.

Inputs: name (required), site (required), schema, cascade.

supabase_empty_bucketSupabase: Empty bucketB
Destructive

[UNIFIED] Delete all files in a bucket. Use before delete_bucket.

Inputs: site (required), bucket_id (required).

supabase_enable_extensionSupabase: Enable extensionC
Destructive

[UNIFIED] Enable a PostgreSQL extension (e.g., pgvector, postgis, uuid-ossp).

Inputs: name (required), site (required), schema.

supabase_enable_rlsSupabase: Enable rlsB
Destructive

[UNIFIED] Enable Row Level Security on a table.

Inputs: site (required), table (required), schema.

supabase_execute_rpcSupabase: Execute rpcB
Destructive

[UNIFIED] Execute a stored procedure or database function via RPC. Functions must be exposed through PostgREST.

Inputs: site (required), function_name (required), params, use_service_role.

supabase_execute_sqlSupabase: Execute sqlB
Destructive

[UNIFIED] Execute raw SQL query. Use with caution - bypasses RLS. Returns query results.

Inputs: site (required), query (required).

supabase_get_auth_statsSupabase: Get auth statsB
Read-only

[UNIFIED] Get authentication statistics including total users, confirmed users, and provider breakdown.

Inputs: site (required).

supabase_get_bucketSupabase: Get bucketB
Read-only

[UNIFIED] Get detailed information about a specific bucket including settings and limits.

Inputs: site (required), bucket_id (required).

supabase_get_database_sizeSupabase: Get database sizeB
Read-only

[UNIFIED] Get the size of the database and tables.

Inputs: site (required).

supabase_get_database_statsSupabase: Get database statsB
Read-only

[UNIFIED] Get database statistics including table count, total size, connection info, and PostgreSQL version.

Inputs: site (required).

supabase_get_function_infoSupabase: Get function infoC
Read-only

[UNIFIED] Get information about a specific Edge Function including its configuration.

Inputs: site (required), function_name (required).

supabase_get_function_urlSupabase: Get function urlC
Read-only

[UNIFIED] Get the full URL for invoking an Edge Function.

Inputs: site (required), function_name (required).

supabase_get_instance_infoSupabase: Get instance infoB
Read-only

[UNIFIED] Get Supabase instance information including base URL and available API endpoints.

Inputs: site (required).

supabase_get_public_urlSupabase: Get public urlB
Read-only

[UNIFIED] Get the public URL for a file. Only works for files in public buckets.

Inputs: path (required), site (required), bucket (required).

supabase_get_service_statusSupabase: Get service statusB
Read-only

[UNIFIED] Get detailed status of a specific Supabase service (postgrest, gotrue, storage, postgres-meta).

Inputs: site (required), service (required).

supabase_get_storage_statsSupabase: Get storage statsB
Read-only

[UNIFIED] Get storage statistics including bucket count, total files, and usage information.

Inputs: site (required).

supabase_get_table_constraintsSupabase: Get table constraintsB
Read-only

[UNIFIED] Get all constraints (primary key, foreign key, unique, check) for a table.

Inputs: site (required), table (required), schema.

supabase_get_table_indexesSupabase: Get table indexesB
Read-only

[UNIFIED] Get indexes for a table including primary keys, unique constraints, and custom indexes.

Inputs: site (required), table (required), schema.

supabase_get_table_relationshipsSupabase: Get table relationshipsB
Read-only

[UNIFIED] Get foreign key relationships for a table (both references to and from this table).

Inputs: site (required), table (required), schema.

supabase_get_table_schemaSupabase: Get table schemaB
Read-only

[UNIFIED] Get detailed schema information for a table including all columns, data types, constraints, and defaults.

Inputs: site (required), table (required), schema.

supabase_get_userSupabase: Get userC
Read-only

[UNIFIED] Get detailed information about a specific user by their ID.

Inputs: site (required), user_id (required).

supabase_get_user_by_emailSupabase: Get user by emailC
Read-only

[UNIFIED] Find a user by their email address.

Inputs: site (required), email (required).

supabase_health_checkSupabase: Health checkC
Read-only

[UNIFIED] Check health of all Supabase services (PostgREST, GoTrue, Storage). Returns status for each service.

Inputs: site (required).

supabase_insert_rowsSupabase: Insert rowsC
Destructive

[UNIFIED] Insert one or more rows into a table. Supports upsert mode for insert-or-update operations.

Inputs: rows (required), site (required), table (required), upsert, +2 more.

supabase_invite_userSupabase: Invite userB
Destructive

[UNIFIED] Send an email invitation to a new user. Creates user in 'invited' state.

Inputs: site (required), email (required), redirect_to, user_metadata.

supabase_invoke_functionSupabase: Invoke functionC
Destructive

[UNIFIED] Invoke a Supabase Edge Function with POST method. Pass data in the body parameter.

Inputs: site (required), function_name (required), body, headers.

supabase_invoke_function_batchSupabase: Invoke function batchC
Destructive

[UNIFIED] Invoke an Edge Function multiple times with different payloads. Useful for batch processing.

Inputs: site (required), payloads (required), function_name (required).

supabase_invoke_function_getSupabase: Invoke function getB
Read-only

[UNIFIED] Invoke a Supabase Edge Function with GET method. Use for read-only operations.

Inputs: site (required), function_name (required), params.

supabase_list_bucketsSupabase: List bucketsB
Read-only

[UNIFIED] List all storage buckets. Returns bucket names, public/private status, and settings.

Inputs: site (required).

supabase_list_edge_functionsSupabase: List edge functionsB
Read-only

[UNIFIED] List all deployed Edge Functions. Note: This reads from the functions volume in Self-Hosted.

Inputs: site (required).

supabase_list_extensionsSupabase: List extensionsC
Read-only

[UNIFIED] List installed PostgreSQL extensions (e.g., pgvector, postgis, uuid-ossp).

Inputs: site (required).

supabase_list_filesSupabase: List filesC
Read-only

[UNIFIED] List files in a bucket or folder path. Returns file names, sizes, and metadata.

Inputs: site (required), bucket (required), path, limit, +1 more.

supabase_list_functionsSupabase: List functionsC
Read-only

[UNIFIED] List database functions/stored procedures in a schema with pagination.

Inputs: site (required), limit, offset, schema.

supabase_list_policiesSupabase: List policiesB
Read-only

[UNIFIED] List Row Level Security (RLS) policies. Can filter by table name.

Inputs: site (required), table.

supabase_list_rolesSupabase: List rolesB
Read-only

[UNIFIED] List all database roles with their attributes and permissions.

Inputs: site (required).

supabase_list_schemasSupabase: List schemasC
Read-only

[UNIFIED] List all database schemas (namespaces).

Inputs: site (required).

supabase_list_tablesSupabase: List tablesB
Read-only

[UNIFIED] List all tables in the database with pagination. Returns table names, schemas, and basic metadata.

Inputs: site (required), limit, offset, schema.

supabase_list_triggersSupabase: List triggersC
Read-only

[UNIFIED] List database triggers. Can filter by table name.

Inputs: site (required), table.

supabase_list_user_factorsSupabase: List user factorsB
Read-only

[UNIFIED] List all MFA factors (TOTP, phone) for a user.

Inputs: site (required), user_id (required).

supabase_list_usersSupabase: List usersC
Destructive

[UNIFIED] List all users with pagination. Returns user details including email, phone, metadata, and confirmation status.

Inputs: site (required), page, per_page.

supabase_move_fileSupabase: Move fileB
Destructive

[UNIFIED] Move or rename a file within the same bucket.

Inputs: site (required), bucket (required), to_path (required), from_path (required).

supabase_query_tableSupabase: Query tableC
Read-only

[UNIFIED] Query data from a table with filters, sorting, and pagination. Uses PostgREST operators: eq, neq, gt, gte, lt, lte, like, ilike, in, is, cs (contains), cd (contained).

Inputs: site (required), table (required), limit, order, +4 more.

supabase_search_usersSupabase: Search usersC
Read-only

[UNIFIED] Search users by email or phone number.

Inputs: site (required), query (required), page, per_page.

supabase_test_functionSupabase: Test functionC
Destructive

[UNIFIED] Test an Edge Function with sample data and return the response.

Inputs: site (required), function_name (required), method, test_data.

supabase_unban_userSupabase: Unban userB
Destructive

[UNIFIED] Remove ban from a user, allowing them to sign in again.

Inputs: site (required), user_id (required).

supabase_update_bucketSupabase: Update bucketC
Destructive

[UNIFIED] Update bucket settings like public access, file size limit, or allowed MIME types.

Inputs: site (required), bucket_id (required), public, file_size_limit, +1 more.

supabase_update_policySupabase: Update policyB
Destructive

[UNIFIED] Update an existing RLS policy. Drops and recreates the policy.

Inputs: name (required), site (required), table (required), definition (required), +4 more.

supabase_update_rowsSupabase: Update rowsC
Destructive

[UNIFIED] Update rows matching filter conditions. Always requires at least one filter to prevent accidental full-table updates.

Inputs: data (required), site (required), table (required), filters (required), +1 more.

supabase_update_userSupabase: Update userC
Destructive

[UNIFIED] Update user details including email, password, phone, metadata, or ban status.

Inputs: site (required), user_id (required), email, phone, +5 more.

supabase_upload_fileSupabase: Upload fileC
Destructive

[UNIFIED] Upload a file to storage. Content should be base64 encoded.

Inputs: path (required), site (required), bucket (required), content_base64 (required), +2 more.

woocommerce_attach_media_to_productWooCommerce: Attach media to productA
Destructive

[UNIFIED] Attach existing media library items to a WooCommerce product. Use role='main' for the primary image (gallery index 0) or role='gallery' for extra images. mode='append' preserves the existing gallery; mode='replace' wipes and rewrites it.

Inputs: site (required), media_ids (required), product_id (required), mode, +1 more.

woocommerce_create_couponWooCommerce: Create couponC

[UNIFIED] Create a new WooCommerce coupon. Supports percentage and fixed discounts with usage limits and restrictions.

Inputs: code (required), site (required), amount (required), description, +11 more.

woocommerce_create_customerWooCommerce: Create customerB

[UNIFIED] Create a new WooCommerce customer. Requires email, optionally includes name, username, password, billing, and shipping address.

Inputs: site (required), email (required), billing, password, +4 more.

woocommerce_create_orderWooCommerce: Create orderC
Destructive

[UNIFIED] Create a new WooCommerce order. Supports line items, billing, shipping, and payment method configuration.

Inputs: site (required), status, billing, shipping, +3 more.

woocommerce_create_productWooCommerce: Create productC

[UNIFIED] Create a new WooCommerce product. Supports simple and variable products with pricing, inventory, categories, tags, descriptions, and WooCommerce meta_data.

Inputs: name (required), site (required), tags, type, +11 more.

woocommerce_create_product_attributeWooCommerce: Create product attributeB

[UNIFIED] Create a new global product attribute for use in variable products. Attributes define variation options like Size or Color.

Inputs: name (required), site (required), slug, type, +2 more.

woocommerce_create_product_categoryWooCommerce: Create product categoryB

[UNIFIED] Create a new WooCommerce product category. Supports hierarchical categories with parent-child relationships.

Inputs: name (required), site (required), parent, description.

woocommerce_create_product_variationWooCommerce: Create product variationC

[UNIFIED] Create a new variation for a variable product. Defines a specific combination of attributes with its own pricing and inventory.

Inputs: site (required), attributes (required), product_id (required), sku, +7 more.

woocommerce_delete_couponWooCommerce: Delete couponC
Destructive

[UNIFIED] Delete a WooCommerce coupon. Can force delete or move to trash.

Inputs: site (required), coupon_id (required), force.

woocommerce_delete_customerWooCommerce: Delete customerA
Destructive

[UNIFIED] Permanently delete a WooCommerce customer (customers cannot be trashed). Their past orders are kept. Optionally reassign the user's posts to another user ID.

Inputs: site (required), customer_id (required), reassign.

woocommerce_delete_mediaWooCommerce: Delete mediaB
Destructive

[UNIFIED] Permanently delete a media library item (e.g. a failed or duplicate upload). WordPress media cannot be trashed through the REST API. Uses the site's WordPress Application Password.

Inputs: site (required), media_id (required).

woocommerce_delete_orderWooCommerce: Delete orderB
Destructive

[UNIFIED] Delete or trash a WooCommerce order. Can permanently delete or move to trash.

Inputs: site (required), order_id (required), force.

woocommerce_delete_productWooCommerce: Delete productB
Destructive

[UNIFIED] Delete or trash a WooCommerce product. Can permanently delete or move to trash for later restoration.

Inputs: site (required), product_id (required), force.

woocommerce_delete_product_attributeWooCommerce: Delete product attributeA
Destructive

[UNIFIED] Permanently delete a global WooCommerce product attribute (and its terms). Products keep any custom per-product attributes. Attributes cannot be trashed.

Inputs: site (required), attribute_id (required).

woocommerce_delete_product_categoryWooCommerce: Delete product categoryA
Destructive

[UNIFIED] Permanently delete a WooCommerce product category. Products in it are not deleted; WooCommerce re-assigns them as needed. Categories cannot be trashed.

Inputs: site (required), category_id (required).

woocommerce_delete_product_variationWooCommerce: Delete product variationB
Destructive

[UNIFIED] Delete (or trash) a single variation of a variable WooCommerce product without touching the parent product.

Inputs: site (required), product_id (required), variation_id (required), force.

woocommerce_diagnose_storeWooCommerce: Diagnose storeA
Read-only

[UNIFIED] Run a read-only health diagnosis of the WooCommerce store and return prioritised findings, each with a concrete fix. Checks: Coming-soon mode, cart/checkout pages (block vs classic, missing or unpublished), theme overrides that the Checkout block ignores, outdated template overrides, enabled payment gateways, shipping methods, HTTPS, PHP errors shown to visitors, WP_DEBUG, and conflicting SEO / page-cache plugins. Changes nothing on the store.

Inputs: site (required).

woocommerce_generate_and_upload_imageWooCommerce: Generate and upload imageC
Destructive

[UNIFIED] Generate an image with an AI provider (OpenAI DALL-E, Stability, or Replicate Flux) and upload it to the WordPress media library in one call. Optionally attach to a post or set as featured image. Uses the caller's stored provider API key; falls back to server env vars if no per-user key is set.

Inputs: site (required), prompt (required), provider (required), size, +14 more.

woocommerce_get_customerWooCommerce: Get customerB
Read-only

[UNIFIED] Get detailed information about a specific WooCommerce customer. Returns customer details, billing, shipping, and order history.

Inputs: site (required), customer_id (required).

woocommerce_get_customer_reportWooCommerce: Get customer reportB
Read-only

[UNIFIED] Get customer statistics report. Returns customer count and spending data. Falls back to customer list if reports endpoint unavailable.

Inputs: site (required), period, date_max, date_min.

woocommerce_get_orderWooCommerce: Get orderB
Read-only

[UNIFIED] Get detailed information about a specific WooCommerce order. Returns full order details including line items, totals, billing, and shipping.

Inputs: site (required), order_id (required).

woocommerce_get_productWooCommerce: Get productB
Read-only

[UNIFIED] Get detailed information about a specific WooCommerce product by ID. Returns complete product data including pricing, inventory, images, categories, tags, and attributes.

Inputs: site (required), product_id (required), fields.

woocommerce_get_sales_reportWooCommerce: Get sales reportC
Read-only

[UNIFIED] Get WooCommerce sales report. Returns sales data with totals and date ranges. Note: WooCommerce v3 API has limited reporting capabilities.

Inputs: site (required), period, date_max, date_min.

woocommerce_get_top_sellersWooCommerce: Get top sellersA
Read-only

[UNIFIED] Get top selling products report. Uses WooCommerce reports when available and falls back to privacy-safe order aggregation when reports are empty/unavailable. Returns aggregate product totals only, never customer PII.

Inputs: site (required), limit, period, date_max, +3 more.

woocommerce_list_couponsWooCommerce: List couponsB
Read-only

[UNIFIED] List WooCommerce coupons. Returns paginated coupon list with discount details and usage restrictions.

Inputs: site (required), page, search, per_page.

woocommerce_list_customersWooCommerce: List customersC
Read-only

[UNIFIED] List WooCommerce customers. Returns paginated customer list with email, orders count, and total spent.

Inputs: site (required), page, role, email, +2 more.

woocommerce_list_ordersWooCommerce: List ordersB
Read-only

[UNIFIED] List WooCommerce orders. Defaults to a privacy-safe summary for analytics/content workflows. Set summary=false only for explicit operational needs that require customer/billing/payment details.

Inputs: site (required), page, after, before, +6 more.

woocommerce_list_product_attributesWooCommerce: List product attributesB
Read-only

[UNIFIED] List all global WooCommerce product attributes. Attributes are used for product variations (e.g., Size, Color).

Inputs: site (required).

woocommerce_list_product_categoriesWooCommerce: List product categoriesB
Read-only

[UNIFIED] List WooCommerce product categories. Returns hierarchical category structure with product counts and parent relationships.

Inputs: site (required), page, per_page, hide_empty.

woocommerce_list_productsWooCommerce: List productsB
Read-only

[UNIFIED] List WooCommerce products for catalog discovery and editorial/content workflows. Returns lightweight pricing, stock, category/tag, image, permalink, and modified-date fields without full descriptions by default.

Inputs: site (required), tag, page, after, +16 more.

woocommerce_list_product_tagsWooCommerce: List product tagsB
Read-only

[UNIFIED] List WooCommerce product tags. Returns all product tags with usage counts.

Inputs: site (required), page, per_page, hide_empty.

woocommerce_list_product_variationsWooCommerce: List product variationsB
Read-only

[UNIFIED] List all variations of a variable product. Returns pricing, stock, and attribute combinations for each variation.

Inputs: site (required), product_id (required), page, per_page.

woocommerce_update_couponWooCommerce: Update couponC
Destructive

[UNIFIED] Update an existing WooCommerce coupon. Can update discount amount, restrictions, and expiration.

Inputs: site (required), coupon_id (required), code, amount, +12 more.

woocommerce_update_customerWooCommerce: Update customerB
Destructive

[UNIFIED] Update an existing WooCommerce customer. Can update name, email, billing, shipping, and other customer fields.

Inputs: site (required), customer_id (required), email, billing, +3 more.

woocommerce_update_order_statusWooCommerce: Update order statusC
Destructive

[UNIFIED] Update WooCommerce order status. Change order status to pending, processing, completed, etc.

Inputs: site (required), status (required), order_id (required).

woocommerce_update_productWooCommerce: Update productC
Destructive

[UNIFIED] Update an existing WooCommerce product. Can update any field including name, slug (permalink), pricing, inventory, status, categories, tags, and more.

Inputs: site (required), product_id (required), name, slug, +12 more.

woocommerce_upload_and_attach_to_productWooCommerce: Upload and attach to productC
Destructive

[UNIFIED] Upload a single image (from base64 or URL) and attach it to a WooCommerce product in one call.

Inputs: site (required), source (required), filename (required), product_id (required), +7 more.

wordpress_audit_hook_configureWordPress: Audit hook configureA
Destructive

[UNIFIED] Configure the companion plugin's audit-hook webhook. Sets the MCPHub endpoint_url, shared HMAC secret (≥16 chars), enabled flag, and list of hooked events. Returns the resulting status. Requires manage_options.

Inputs: site (required), events, secret, enabled, +1 more.

wordpress_audit_hook_disableWordPress: Audit hook disableB
Destructive

[UNIFIED] Clear the companion plugin's audit-hook configuration (endpoint_url, secret, events) and stop forwarding events. Requires manage_options.

Inputs: site (required).

wordpress_audit_hook_statusWordPress: Audit hook statusA
Read-only

[UNIFIED] Read the companion plugin's audit-hook configuration (v2.7.0+): current endpoint_url, whether a secret is set, enabled flag, event list, last-push timestamp, failure count. Secret is never returned in full — only the last 4 characters. Requires manage_options.

Inputs: site (required).

wordpress_bulk_delete_mediaWordPress: Bulk delete mediaA
Destructive

[UNIFIED] Delete (trash or permanently remove) a list of media attachments in a single call. Max 100 IDs per request. Returns processed / errors / total. Uses stock /wp/v2/media/{id} DELETE so no companion plugin is required, but issues N requests (with a small concurrency cap); for 1000+ attachments, paginate client-side.

Inputs: site (required), media_ids (required), force.

wordpress_bulk_reassign_mediaWordPress: Bulk reassign mediaA
Destructive

[UNIFIED] Reassign the parent post of a list of media attachments in a single call. Useful for moving attachments between posts, or detaching (use target_post=0). Max 100 IDs. Returns processed / errors / total.

Inputs: site (required), media_ids (required), target_post (required).

wordpress_bulk_update_metaWordPress: Bulk update metaB
Destructive

[UNIFIED] Batch-update post_meta (posts, pages, WooCommerce products) in a single REST round-trip via the airano-mcp-bridge companion plugin (v2.2.0+). Each item is permission-checked in PHP via current_user_can('edit_post', post_id). Pass a null meta value to delete that key. Maximum 500 items per call.

Inputs: site (required), updates (required).

wordpress_cache_purgeWordPress: Cache purgeA
Destructive

[UNIFIED] Purge WordPress caches on the WordPress site via the airano-mcp-bridge companion plugin (v2.4.0+). Auto-detects active cache plugins (LiteSpeed, WP Rocket, W3 Total Cache, WP Super Cache, WP Fastest Cache, SiteGround Optimizer) and calls each one's purge API when scope is page or all. Flushes the object cache when scope is object or all. Requires manage_options on the calling application password.

Inputs: site (required), scope.

wordpress_create_categoryWordPress: Create categoryC

[UNIFIED] Create a new WordPress category. Supports hierarchical categories with parent relationships.

Inputs: name (required), site (required), parent, language, +2 more.

wordpress_create_commentWordPress: Create commentB

[UNIFIED] Create a new WordPress comment on a post. Supports author information and moderation status.

Inputs: site (required), content (required), post_id (required), status, +2 more.

wordpress_create_custom_postWordPress: Create custom postC

[UNIFIED] Create a new post of a custom post type. Supports custom fields/meta data.

Inputs: site (required), title (required), content (required), post_type (required), +2 more.

wordpress_create_menuWordPress: Create menuC
Destructive

[UNIFIED] Create a new navigation menu. Can optionally assign to theme locations.

Inputs: name (required), site (required), slug, locations.

wordpress_create_menu_itemWordPress: Create menu itemC
Destructive

[UNIFIED] Add a new item to a menu. Supports linking to posts, pages, categories, or custom URLs.

Inputs: site (required), type (required), title (required), menu_id (required), +3 more.

wordpress_create_pageWordPress: Create pageC

[UNIFIED] Create a new WordPress page. Supports HTML content, parent pages, custom slugs, REST-registered post meta, and generic multilingual metadata.

Inputs: site (required), title (required), content (required), meta, +5 more.

wordpress_create_postWordPress: Create postC

[UNIFIED] Create a new WordPress post. Supports custom slug, categories, tags, featured image, REST-registered post meta, and generic multilingual metadata.

Inputs: site (required), title (required), content (required), meta, +8 more.

wordpress_create_tagWordPress: Create tagC

[UNIFIED] Create a new WordPress tag. Tag slug is auto-generated from name if not provided.

Inputs: name (required), site (required), language, description, +1 more.

wordpress_create_taxonomy_termWordPress: Create taxonomy termC

[UNIFIED] Create a new term in a taxonomy. Supports hierarchical taxonomies with parent terms. Works with any registered taxonomy.

Inputs: name (required), site (required), taxonomy (required), parent, +3 more.

wordpress_delete_categoryWordPress: Delete categoryB
Destructive

[UNIFIED] Delete a WordPress category. Can permanently delete or reassign posts to another category.

Inputs: site (required), category_id (required), force.

wordpress_delete_commentWordPress: Delete commentB
Destructive

[UNIFIED] Delete or trash a WordPress comment. Can permanently delete or move to trash.

Inputs: site (required), comment_id (required), force.

wordpress_delete_mediaWordPress: Delete mediaC
Destructive

[UNIFIED] Delete media from library. Can permanently delete or move to trash.

Inputs: site (required), media_id (required), force.

wordpress_delete_navigationWordPress: Delete navigationB
Destructive

[UNIFIED] Delete or trash a wp_navigation post (block-theme menu). Use this for Site Editor navigation records; classic menus remain separate.

Inputs: site (required), navigation_id (required), force.

wordpress_delete_pageWordPress: Delete pageB
Destructive

[UNIFIED] Delete or trash a WordPress page. Can permanently delete or move to trash.

Inputs: site (required), page_id (required), force.

wordpress_delete_postWordPress: Delete postC
Destructive

[UNIFIED] Delete or trash a WordPress post. Can permanently delete or move to trash.

Inputs: site (required), post_id (required), force.

wordpress_delete_tagWordPress: Delete tagC
Destructive

[UNIFIED] Delete a WordPress tag. Permanently removes the tag from all posts.

Inputs: site (required), tag_id (required), force.

wordpress_diagnose_siteWordPress: Diagnose siteA
Read-only

[UNIFIED] Run a read-only health diagnosis of the WordPress site and return prioritised findings (fail / warn / info / ok / skip), each with a concrete fix. Checks: REST API reachability (incl. HTTP Basic auth walls), Application-Password authentication (incl. a stripped Authorization header), WP_DEBUG in production, search-engine noindex, duplicate tags and markup in the title, conflicting SEO / page-cache plugins, mixed content, and WordPress core Site Health tests. Changes nothing on the site.

Inputs: site (required), include_site_health_tests.

wordpress_export_contentWordPress: Export contentA
Read-only

[UNIFIED] Export posts/pages/products as structured JSON via the airano-mcp-bridge companion plugin (v2.3.0+). Includes referenced media, taxonomy terms, and post_meta. Paginates via offset/limit; response contains has_more + next_offset. Not a WXR dump — intended for AI-pipeline processing, not WP-to-WP import.

Inputs: site (required), limit, since, offset, +5 more.

wordpress_generate_and_upload_imageWordPress: Generate and upload imageB
Destructive

[UNIFIED] Generate an image with an AI provider (OpenAI DALL-E, Stability, or Replicate Flux) and upload it to the WordPress media library in one call. Optionally attach to a post or set as featured image. Uses the caller's stored provider API key; falls back to server env vars if no per-user key is set.

Inputs: site (required), prompt (required), provider (required), size, +14 more.

wordpress_get_active_themeWordPress: Get active themeB
Read-only

[UNIFIED] Get information about the currently active WordPress theme including name, version, and author.

Inputs: site (required).

wordpress_get_commentWordPress: Get commentB
Read-only

[UNIFIED] Get a specific WordPress comment by ID. Returns complete comment data including content, author, and moderation status.

Inputs: site (required), comment_id (required).

wordpress_get_current_userWordPress: Get current userB
Read-only

[UNIFIED] Get information about the currently authenticated user including ID, name, username, email, and roles.

Inputs: site (required).

wordpress_get_mediaWordPress: Get mediaB
Read-only

[UNIFIED] Get detailed information about a media item. Returns full metadata including URLs, dimensions, and MIME type.

Inputs: site (required), media_id (required).

wordpress_get_menuWordPress: Get menuC
Read-only

[UNIFIED] Get detailed information about a specific menu including all items. Returns menu details with hierarchical structure of menu items.

Inputs: site (required), menu_id (required).

wordpress_get_navigationWordPress: Get navigationA
Read-only

[UNIFIED] Get a single wp_navigation post by ID, including its raw block-markup content. Use the returned content to plan an update_navigation call (e.g. fix href values inside blocks).

Inputs: site (required), navigation_id (required).

wordpress_get_pageWordPress: Get pageB
Read-only

[UNIFIED] Get a specific WordPress page by ID. Returns complete page data including content, metadata, and author information.

Inputs: site (required), page_id (required), fields, meta_keys.

wordpress_get_postWordPress: Get postB
Read-only

[UNIFIED] Get a specific WordPress post by ID. Returns complete post data including content, metadata, and author information.

Inputs: site (required), post_id (required), fields, meta_keys.

wordpress_get_post_seoWordPress: Get post seoB
Read-only

[UNIFIED] Get SEO metadata for a WordPress post or page. Returns Rank Math or Yoast SEO fields including focus keyword, meta title, description, and social media settings. Requires SEO API Bridge plugin.

Inputs: site (required), post_id (required).

wordpress_get_post_type_infoWordPress: Get post type infoB
Read-only

[UNIFIED] Get detailed information about a specific post type including supported features and REST API configuration.

Inputs: site (required), post_type (required).

wordpress_get_product_seoWordPress: Get product seoA
Read-only

[UNIFIED] Get SEO metadata for a WooCommerce product. Returns Rank Math or Yoast SEO fields including focus keyword, meta title, description, and social media settings. Requires SEO API Bridge plugin.

Inputs: site (required), product_id (required).

wordpress_get_settingsWordPress: Get settingsB
Read-only

[UNIFIED] Get WordPress site settings. Includes site title, description, URL, email, timezone, and language.

Inputs: site (required).

wordpress_get_site_healthWordPress: Get site healthB
Read-only

[UNIFIED] Check WordPress site health and accessibility. Returns comprehensive health status including WordPress, WooCommerce, and SEO plugin availability.

Inputs: site (required).

wordpress_list_categoriesWordPress: List categoriesC
Read-only

[UNIFIED] List WordPress post categories. Returns hierarchical list of categories with post counts.

Inputs: site (required), page, per_page, hide_empty.

wordpress_list_commentsWordPress: List commentsC
Read-only

[UNIFIED] List WordPress comments. Returns paginated list of comments with author, content, and moderation status.

Inputs: site (required), page, status, post_id, +1 more.

wordpress_list_custom_postsWordPress: List custom postsB
Read-only

[UNIFIED] List posts of a specific custom post type. Use list_post_types first to discover available post types.

Inputs: site (required), post_type (required), page, status, +1 more.

wordpress_list_mediaWordPress: List mediaC
Read-only

[UNIFIED] List media library items. Returns images, videos, documents with URLs and metadata.

Inputs: site (required), page, per_page, media_type.

wordpress_list_menu_itemsWordPress: List menu itemsB
Read-only

[UNIFIED] List all items in a specific menu. Returns hierarchical list of menu items with links and ordering.

Inputs: site (required), menu_id (required).

wordpress_list_menusWordPress: List menusA
Read-only

[UNIFIED] List all WordPress navigation menus. Returns list of menus with their locations and item counts.

Inputs: site (required).

wordpress_list_navigationsWordPress: List navigationsA
Read-only

[UNIFIED] List wp_navigation posts (block-theme navigation menus). These power the block in Site Editor. Distinct from classic menus (use list_menus for those).

Inputs: site (required), page, status, per_page.

wordpress_list_pagesWordPress: List pagesC
Read-only

[UNIFIED] List WordPress pages. Returns paginated list of pages with metadata.

Inputs: site (required), page, status, per_page.

wordpress_list_pluginsWordPress: List pluginsB
Read-only

[UNIFIED] List installed WordPress plugins. Shows plugin status (active/inactive), version, and details.

Inputs: site (required), status.

wordpress_list_postsWordPress: List postsB
Read-only

[UNIFIED] List WordPress posts. Returns paginated list of posts with title, excerpt, status, and metadata.

Inputs: site (required), page, search, status, +3 more.

wordpress_list_post_typesWordPress: List post typesB
Read-only

[UNIFIED] List all registered post types including built-in (post, page) and custom post types (portfolio, testimonials, etc.).

Inputs: site (required).

wordpress_list_tagsWordPress: List tagsC
Read-only

[UNIFIED] List WordPress post tags. Returns all tags with usage counts and metadata.

Inputs: site (required), page, per_page, hide_empty.

wordpress_list_taxonomiesWordPress: List taxonomiesB
Read-only

[UNIFIED] List all registered taxonomies including built-in (category, post_tag) and custom taxonomies. Returns configuration and post type associations.

Inputs: site (required).

wordpress_list_taxonomy_termsWordPress: List taxonomy termsC
Read-only

[UNIFIED] List terms of a specific taxonomy. Works with any registered taxonomy including categories, tags, and custom taxonomies.

Inputs: site (required), taxonomy (required), page, parent, +2 more.

wordpress_list_themesWordPress: List themesB
Read-only

[UNIFIED] List installed WordPress themes. Returns all themes with their status and metadata.

Inputs: site (required), status.

wordpress_list_usersWordPress: List usersC
Read-only

[UNIFIED] List WordPress users. Returns paginated list of users with name, username, email, and roles.

Inputs: site (required), page, roles, per_page.

wordpress_media_upload_workflow_statusWordPress: Media upload workflow statusB
Read-only

[UNIFIED] Report WordPress media workflow capabilities for general agents. Shows whether AI image generation is enabled or disabled_missing_provider_key, and lists the recommended fallback path for public URLs, small attachments, and larger agent-local/chat-attached files.

Inputs: site (required).

wordpress_opcache_resetWordPress: Opcache resetA
Destructive

[UNIFIED] Reset PHP OPcache on the WordPress origin via the airano-mcp-bridge companion plugin (v2.18.4+). Useful after deploying theme/plugin PHP changes on hosts with opcache.validate_timestamps disabled. Requires manage_options on the calling application password.

Inputs: site (required).

wordpress_probe_capabilitiesWordPress: Probe capabilitiesA
Read-only

[UNIFIED] Probe the airano-mcp-bridge companion plugin for the effective capability set of the calling application password plus the list of companion routes the installed version ships. Returns companion_available: false when the plugin is missing or outdated. Cached 24 h per (site, user).

Inputs: site (required).

wordpress_probe_upload_limitsWordPress: Probe upload limitsA
Read-only

[UNIFIED] Probe a WordPress site for its effective upload limits (upload_max_filesize, post_max_size, memory_limit, max_input_time, wp_max_upload_size). Uses the airano-mcp-bridge companion plugin if present, else best-effort from the WP REST index. Cached 24 h per site.

Inputs: site (required).

wordpress_regenerate_thumbnailsWordPress: Regenerate thumbnailsA
Destructive

[UNIFIED] Rebuild attachment sub-sizes (the registered WP image sizes plus any from add_image_size() in the active theme). Use this after upload_media_from_url / _from_base64 with convert_to=webp|avif, after a theme switch that adds new sizes, or for legacy attachments missing thumbnails. Routes through the airano-mcp-bridge companion plugin v2.8.0+. Body shapes: either an 'ids' list to target specific attachments (max 50 per call); or all=true with offset/limit for paged batch. Returns has_more + next_offset in batch mode so callers can continue.

Inputs: site (required), all, ids, limit, +1 more.

wordpress_set_term_languageWordPress: Set term languageC
Destructive

[UNIFIED] Apply generic language and/or translation linking to an existing taxonomy term through the active multilingual provider adapter.

Inputs: site (required), term_id (required), taxonomy (required), language, +1 more.

wordpress_site_healthWordPress: Site healthB
Read-only

[UNIFIED] Unified site-health snapshot via the airano-mcp-bridge companion plugin (v2.6.0+). Single request returns WP + PHP + MySQL versions, loaded PHP extensions, server software + disk free, active plugins with versions, active theme, and writability checks. Falls back to companion_available: false when the plugin is missing. Requires manage_options.

Inputs: site (required).

wordpress_specialist_wp_blocks_getWordPress: Wp blocks getA
Read-only

[UNIFIED] Read a post or page as a block tree. Fetches post_content via stock REST then parses it server-side with WP's block grammar so the caller gets a structured array of {blockName, attrs, innerBlocks, innerHTML} entries. Works on any WordPress 5.0+ install — no companion route needed for reads.

Inputs: site (required), post_id (required), post_type.

wordpress_specialist_wp_blocks_insert_atWordPress: Wp blocks insert atB
Destructive

[UNIFIED] Insert a single block at a given index, pushing the rest down. Same sanitisation + cap rules as wp_blocks_replace. Requires Airano MCP Bridge v2.13.0+.

Inputs: site (required), block (required), post_id (required), index, +1 more.

wordpress_specialist_wp_blocks_remove_atWordPress: Wp blocks remove atB
Destructive

[UNIFIED] Remove the block at the given index. The response includes the removed block so the caller can rollback by feeding it back to wp_blocks_insert_at. Requires Airano MCP Bridge v2.13.0+.

Inputs: site (required), index (required), post_id (required).

wordpress_specialist_wp_blocks_replaceWordPress: Wp blocks replaceA
Destructive

[UNIFIED] Replace a post's full block tree. The companion serializes the array via WP's serialize_blocks() so HTML comment delimiters round-trip cleanly. Block content is sanitised with wp_kses_post unless raw_html=true (S-13: requires the WP user to also hold unfiltered_html). Capped at 200 blocks per call. Requires Airano MCP Bridge v2.13.0+ and edit_post on the target.

Inputs: site (required), blocks (required), post_id (required), raw_html.

wordpress_specialist_wp_bulk_post_updateWordPress: Wp bulk post updateA
Destructive

[UNIFIED] Fan-out update across multiple posts via stock REST wp/v2/posts/{id}. Pass updates=[{id, ...fields}] where each item carries the id plus whichever fields to write (status, title, content, excerpt, categories, tags, author, featured_media, meta, etc — anything stock REST accepts on the post endpoint). Returns [{id, status:'ok'|'error', error?}] — partial successes are the expected shape since per-item edit_post cap checks happen at the WP layer. S-26: 50-item cap per call; bigger payloads return bulk_too_large 400 without any HTTP. Concurrency is bounded to 10 in flight to avoid swamping shared hosts.

Inputs: site (required), updates (required).

wordpress_specialist_wp_bulk_term_updateWordPress: Wp bulk term updateA
Destructive

[UNIFIED] Fan-out update across multiple terms in a single taxonomy via stock REST wp/v2/{taxonomy}/{id}. taxonomy is the REST base — categories, tags, or a custom taxonomy's rest_base. Pass updates=[{id, ...fields}] where each item carries the id plus whichever term fields to write (name, slug, description, parent, meta). Returns [{id, status:'ok'|'error', error?}]. Per-item manage_terms (or the taxonomy-specific edit cap) is enforced server-side. S-26: 50-item cap per call. Concurrency is bounded to 10 in flight.

Inputs: site (required), updates (required), taxonomy (required).

wordpress_specialist_wp_classic_html_replaceWordPress: Wp classic html replaceA
Destructive

[UNIFIED] Pure post_content swap for sites still on the Classic editor. Companion sanitises with wp_kses_post unless raw_html=true (S-13). Requires Airano MCP Bridge v2.13.0+ and edit_post on the target.

Inputs: html (required), site (required), post_id (required), raw_html.

wordpress_specialist_wp_cron_listWordPress: Wp cron listA
Read-only

[UNIFIED] Dump the WordPress cron table: hook name, next run time (epoch + ISO 8601 UTC), schedule slug, interval, and stored args. Requires Airano MCP Bridge v2.11.0+ and manage_options.

Inputs: site (required).

wordpress_specialist_wp_customizer_changesetWordPress: Wp customizer changesetA
Destructive

[UNIFIED] Inspect or commit the pending customizer changeset. action='get' returns the pending changeset payload (or {status:'empty'} when nothing is queued). action='apply' publishes it; action='discard' trashes it. S-24: apply requires the caller to also hold the customize cap (same bar as /wp-admin/customize.php); manage_options alone is not enough. Apply is racy with concurrent edits via the customizer UI — this is intentional and mirrors WP's own behaviour. Requires Airano MCP Bridge v2.17.0+.

Inputs: site (required), action (required).

wordpress_specialist_wp_db_checkWordPress: Wp db checkA
Read-only

[UNIFIED] Check WordPress database tables via the Airano MCP Bridge companion plugin. Runs CHECK TABLE only on tables with the current WordPress table prefix and returns per-table status rows. Requires Airano MCP Bridge v2.18.5+ and manage_options.

Inputs: site (required).

wordpress_specialist_wp_db_optimizeWordPress: Wp db optimizeB
Destructive

[UNIFIED] Optimize WordPress database tables via the Airano MCP Bridge companion plugin. Runs OPTIMIZE TABLE only on tables with the current WordPress table prefix and returns per-table results. Requires Airano MCP Bridge v2.18.5+ and manage_options.

Inputs: site (required).

wordpress_specialist_wp_db_sizeWordPress: Wp db sizeA
Read-only

[UNIFIED] Read aggregate database size for the WordPress install. Returns {database_bytes, table_count, row_count_estimate, database_name, table_prefix}. Source is a single information_schema.TABLES aggregation scoped to the WP table prefix — no SQL is exposed to the caller (S-25). InnoDB row counts are estimates, not exact, mirroring MySQL's own caveat. Use to answer 'how big is this site?' before deciding whether to migrate / archive. Requires Airano MCP Bridge v2.18.0+ and manage_options.

Inputs: site (required).

wordpress_specialist_wp_db_tablesWordPress: Wp db tablesA
Read-only

[UNIFIED] Read per-table size + row breakdown. Returns {database_name, table_prefix, tables: [{name, engine, rows, data_bytes, index_bytes, total_bytes, collation}]} ordered by total_bytes descending. Same source as wp_db_size — one row per WP table. Useful for 'which table is the bloat?' debugging (commonly options, postmeta, comments, or a plugin's log table). Requires Airano MCP Bridge v2.18.0+ and manage_options.

Inputs: site (required).

wordpress_specialist_wp_disk_usageWordPress: Wp disk usageA
Read-only

[UNIFIED] Bytes used by uploads, plugins, and themes plus filesystem-wide disk_total/free/used for ABSPATH. Each tree walk caps at 200k files / 5s wall clock; truncated walks set truncated: true so the caller can treat the value as a lower bound. Requires Airano MCP Bridge v2.12.0+ and manage_options.

Inputs: site (required).

wordpress_specialist_wp_elementor_detectWordPress: Wp elementor detectA
Read-only

[UNIFIED] Report Elementor presence on the site: installed flag, version, Pro flag, and the post types Elementor edits. Returns installed: false cleanly when Elementor is absent — non-Elementor sites do not 404. Requires Airano MCP Bridge v2.13.0+.

Inputs: site (required).

wordpress_specialist_wp_elementor_getWordPress: Wp elementor getB
Read-only

[UNIFIED] Fetch the parsed _elementor_data tree for a post. The companion strips WP's slashes and JSON-decodes server-side; the caller always sees a plain array. Returns edited_with_elementor: false if the post hasn't been opened in Elementor. Requires Airano MCP Bridge v2.13.0+.

Inputs: site (required), post_id (required).

wordpress_specialist_wp_elementor_render_cssWordPress: Wp elementor render cssA
Destructive

[UNIFIED] Trigger Elementor's per-post CSS regeneration so the front-end picks up changes from a recent wp_elementor_set or theme switch. Equivalent to clicking 'Regenerate CSS' scoped to a single post. Requires Airano MCP Bridge v2.13.0+ and Elementor active.

Inputs: site (required), post_id (required).

wordpress_specialist_wp_elementor_setWordPress: Wp elementor setA
Destructive

[UNIFIED] Replace a post's _elementor_data tree. Companion validates every node has id/elType/settings, enforces the 5,000-node cap (S-14), writes via update_post_meta, and fires elementor/document/after_save so caches and CSS clear. Oversized payloads return elementor_too_large; switch to wp_elementor_template_apply. Requires Airano MCP Bridge v2.13.0+ and edit_post on the target.

Inputs: data (required), site (required), post_id (required).

wordpress_specialist_wp_elementor_template_applyWordPress: Wp elementor template applyA
Destructive

[UNIFIED] Copy a saved Elementor template's data into a target post. Subject to the same S-14 5,000-node cap as wp_elementor_set. Useful when a payload exceeds the cap — clone a known-good template instead of streaming raw JSON. Requires Airano MCP Bridge v2.13.0+ and edit_post on the target.

Inputs: site (required), post_id (required), template_id (required).

wordpress_specialist_wp_elementor_template_listWordPress: Wp elementor template listB
Read-only

[UNIFIED] List saved Elementor templates (the elementor_library CPT). Returns id, title, type (page/section/header/…), and modified_gmt. Returns installed: false cleanly if Elementor is not active. Requires Airano MCP Bridge v2.13.0+.

Inputs: site (required).

wordpress_specialist_wp_maintenance_statusWordPress: Wp maintenance statusA
Read-only

[UNIFIED] Report whether WordPress is currently in maintenance mode by inspecting the .maintenance sentinel file. Returns enabled, started_at (epoch), and stale (true when older than 10 minutes — WP's own threshold). Requires Airano MCP Bridge v2.11.0+ and manage_options.

Inputs: site (required).

wordpress_specialist_wp_menu_getWordPress: Wp menu getA
Read-only

[UNIFIED] Read a single nav-menu's items. Returns {id, name, slug, items: [{id, title, type, object, object_id, parent, order, url, target, classes, xfn}]}. type is one of post_type / taxonomy / custom. Requires Airano MCP Bridge v2.17.0+ and manage_options.

Inputs: site (required), menu_id (required).

wordpress_specialist_wp_menu_listWordPress: Wp menu listA
Read-only

[UNIFIED] List every WordPress nav-menu with id / name / slug, the theme locations bound to it, and the item count. Use to discover menu_id before calling wp_menu_get / wp_menu_set. Requires Airano MCP Bridge v2.17.0+ and manage_options.

Inputs: site (required).

wordpress_specialist_wp_menu_setWordPress: Wp menu setA
Destructive

[UNIFIED] Full-replace a nav-menu's items. Pass the complete items array — items not in the array are deleted, new items are created (omit id or set it to 0), existing items (matched by id) are updated. Slug stays frozen so the theme_location mapping survives. Optional name renames the menu. S-22: each item's object_id is validated against the caller's read permissions — post_type items require read_post on the target; non-public taxonomy items require the taxonomy's assign_terms cap; custom URL items skip the object check. Validation runs across every item before any mutation, so a refusal mid-array leaves the menu untouched. Requires Airano MCP Bridge v2.17.0+ and manage_options.

Inputs: site (required), items (required), menu_id (required), name.

wordpress_specialist_wp_option_getWordPress: Wp option getA
Read-only

[UNIFIED] Read a single WordPress option by name. Refuses keys that look like credentials (suffix matches secret/password/api_key/token/auth_key/auth_salt etc.) — operators can still inspect those via wp-admin if needed. Requires Airano MCP Bridge v2.11.0+ and manage_options.

Inputs: name (required), site (required).

wordpress_specialist_wp_php_infoWordPress: Wp php infoB
Read-only

[UNIFIED] Curated PHP configuration snapshot — sorted extension list, common ini settings (memory/upload/session/error), disabled functions, opcache state. Returns structured JSON, not the full phpinfo() HTML dump (which would leak server internals). Requires Airano MCP Bridge v2.12.0+ and manage_options.

Inputs: site (required).

wordpress_specialist_wp_plugin_activateWordPress: Wp plugin activateA
Destructive

[UNIFIED] Activate an installed plugin by slug. Companion resolves the slug to the plugin file via get_plugins() (S-15) and calls activate_plugin(). When network_wide=true on a multisite install the plugin is activated network-wide (requires manage_network_plugins). Requires Airano MCP Bridge v2.15.0+ and activate_plugins.

Inputs: site (required), slug (required), network_wide.

wordpress_specialist_wp_plugin_deactivateWordPress: Wp plugin deactivateA
Destructive

[UNIFIED] Deactivate an installed plugin by slug. Refuses to deactivate the Airano MCP Bridge companion itself — doing so would brick the MCP connection (S-20). Requires Airano MCP Bridge v2.15.0+ and activate_plugins.

Inputs: site (required), slug (required), network_wide.

wordpress_specialist_wp_plugin_deleteWordPress: Wp plugin deleteA
Destructive

[UNIFIED] Delete an installed plugin by slug. Refuses to delete the Airano MCP Bridge companion itself (S-20) and any currently-active plugin (caller must deactivate first). Lands on the admin tier because plugin delete drops the plugin's database tables / options on uninstall — no undo. Requires Airano MCP Bridge v2.15.0+ and delete_plugins.

Inputs: site (required), slug (required).

wordpress_specialist_wp_plugin_install_from_slugWordPress: Wp plugin install from slugA
Destructive

[UNIFIED] Install a plugin from a wp.org slug (e.g. 'akismet'). Companion calls plugins_api() to resolve the package URL, downloads via download_url() (so the WP filesystem abstraction stays engaged), then runs WP core's Plugin_Upgrader. Set activate=true to activate immediately on success — activation requires activate_plugins; companion rejects with rest_forbidden if missing. Requires Airano MCP Bridge v2.15.0+ and a WordPress user with install_plugins.

Inputs: site (required), slug (required), activate.

wordpress_specialist_wp_plugin_install_from_zipWordPress: Wp plugin install from zipA
Destructive

[UNIFIED] Install a plugin from a remote URL, inline base64 zip, server-local zip_path, or chunked zip_session_id. Sees more attack surface than slug install (arbitrary zip contents) so this lands on the admin tier. Companion still runs Plugin_Upgrader so signature checks stay engaged. Pass exactly one of zip_url (companion fetches via wp_safe_remote_get), zip_base64 (decoded server-side), zip_path (read by MCPHub from the server filesystem and sent to the companion as zip_base64), or zip_session_id (created with wp_zip_install_chunked_start/chunk). Capped at 50 MB per zip (S-18). Requires Airano MCP Bridge v2.15.0+ and install_plugins.

Inputs: site (required), zip_url, activate, zip_path, +3 more.

wordpress_specialist_wp_plugin_listWordPress: Wp plugin listA
Read-only

[UNIFIED] List every plugin known to WordPress with active/network-active status, version, author, and update availability. Read-only (no install/activate). Requires Airano MCP Bridge v2.11.0+ and a WordPress user with manage_options.

Inputs: site (required).

wordpress_specialist_wp_plugin_updateWordPress: Wp plugin updateB
Destructive

[UNIFIED] Update an installed plugin to the latest wp.org version. Companion checks the cached update_plugins transient + runs Plugin_Upgrader::upgrade(). Returns no-op (with up_to_date: true) when no update is available rather than erroring. Requires Airano MCP Bridge v2.15.0+ and update_plugins.

Inputs: site (required), slug (required).

wordpress_specialist_wp_rank_math_sync_identityWordPress: Wp rank math sync identityA
Destructive

[UNIFIED] Push the site name into Rank Math's schema identity (WebSite name, Person/Organization name). Rank Math captures these once in its setup wizard, so after renaming the site (wp_site_identity_set) the JSON-LD keeps the old name. With no arguments it uses the current site title. Returns the before/after values. Requires Rank Math and Airano MCP Bridge v2.21.0+ (manage_options). Purge page cache afterwards.

Inputs: site (required), name, alternate_name, knowledgegraph_name.

wordpress_specialist_wp_reading_settings_getWordPress: Wp reading settings getA
Read-only

[UNIFIED] Read the Settings → Reading panel: show_on_front (posts or page), page_on_front, page_for_posts, posts_per_page, posts_per_rss, and blog_public (search-engine visibility flag — 0 means WP asks crawlers not to index). Requires Airano MCP Bridge v2.16.0+ and manage_options.

Inputs: site (required).

wordpress_specialist_wp_reading_settings_setWordPress: Wp reading settings setA
Destructive

[UNIFIED] Update Settings → Reading values. Pass any subset of show_on_front / page_on_front / page_for_posts / posts_per_page / posts_per_rss / blog_public. When show_on_front=='page', page_on_front must be set to a published Page id (companion validates). Setting blog_public=false tells crawlers not to index — the directive is non-binding, real privacy still belongs to httpd auth or membership plugins. Requires Airano MCP Bridge v2.16.0+ and manage_options.

Inputs: site (required), blog_public, page_on_front, posts_per_rss, +3 more.

wordpress_specialist_wp_site_identity_getWordPress: Wp site identity getA
Read-only

[UNIFIED] Read site identity: title (blogname), tagline (blogdescription), site_icon (favicon attachment id), custom_logo (theme logo attachment id), blog_charset, WP version, and admin email. Companion-backed read so responses stay consistent with the writer route. Requires Airano MCP Bridge v2.16.0+ and manage_options.

Inputs: site (required).

wordpress_specialist_wp_site_identity_setWordPress: Wp site identity setA
Destructive

[UNIFIED] Update site identity. Pass any subset of title / tagline / site_icon_id / custom_logo_id (omitted keys are left untouched). Attachment ids are validated by the companion against WP's media library — invalid ids return invalid_attachment. Requires Airano MCP Bridge v2.16.0+ and manage_options. If Rank Math is active, call wp_rank_math_sync_identity after changing the title so the schema (JSON-LD) uses the new name.

Inputs: site (required), title, tagline, site_icon_id, +1 more.

wordpress_specialist_wp_system_infoWordPress: Wp system infoB
Read-only

[UNIFIED] PHP / MySQL / WordPress versions, server software, memory limits, multisite flag, debug state, and canonical paths (ABSPATH, plugins, uploads). Companion-backed; no Docker socket required. Requires Airano MCP Bridge v2.12.0+ and manage_options.

Inputs: site (required).

wordpress_specialist_wp_theme_activateWordPress: Wp theme activateA
Destructive

[UNIFIED] Switch the active theme to slug. Companion verifies the slug exists in wp_get_themes() (S-15) and the caller holds switch_themes. Returns the active stylesheet + template after the switch — useful when activating a child theme (stylesheet differs from template). Requires Airano MCP Bridge v2.14.0+.

Inputs: site (required), slug (required).

wordpress_specialist_wp_theme_deleteWordPress: Wp theme deleteA
Destructive

[UNIFIED] Delete an installed theme by slug. Companion refuses to delete the active theme (returns theme_active) and the current default theme. Caller must hold delete_themes. Requires Airano MCP Bridge v2.14.0+.

Inputs: site (required), slug (required).

wordpress_specialist_wp_theme_file_deleteWordPress: Wp theme file deleteA
Destructive

[UNIFIED] Delete a file inside a theme. Path resolution is identical to wp_theme_file_read (S-16). Refuses to delete style.css of the active theme — that would break the front-end. Requires Airano MCP Bridge v2.14.0+ and edit_themes.

Inputs: path (required), site (required), theme_slug (required).

wordpress_specialist_wp_theme_file_listWordPress: Wp theme file listA
Read-only

[UNIFIED] List files inside a theme directory. Walks wp-content/themes/{theme_slug} and returns each file's relative path, size, mime, sha256, and modified_at (epoch). Optional glob filters by fnmatch pattern (default **/*). Capped at 1000 files per call (S-18); when the walk truncates, the response carries truncated: true. Requires Airano MCP Bridge v2.14.0+.

Inputs: site (required), theme_slug (required), glob, max_files.

wordpress_specialist_wp_theme_file_patchWordPress: Wp theme file patchA
Destructive

[UNIFIED] Patch a text file inside a theme with a small line-range splice, avoiding full-file base64 uploads for iterative CSS and template edits. Lines are 1-based and inclusive. To replace lines 10-12 pass from_line=10, to_line=12. To insert before line 10 pass from_line=10, to_line=9. To append pass from_line=line_count+1, to_line=line_count. Empty content deletes the selected range. Pass expected_sha256 for optimistic concurrency; the companion rejects with sha_mismatch (409) if the file changed. Requires Airano MCP Bridge v2.18.3+.

Inputs: path (required), site (required), content (required), to_line (required), +3 more.

wordpress_specialist_wp_theme_file_readWordPress: Wp theme file readA
Read-only

[UNIFIED] Read a file inside a theme as base64. Returns {content_base64, mime, size, sha256, modified_at}. Path must resolve under wp-content/themes/{theme_slug} (S-16); .., absolute paths, null bytes, and symlinks that escape are rejected by the companion's realpath gate. Files larger than 5 MB return file_too_large (S-18). Requires Airano MCP Bridge v2.14.0+.

Inputs: path (required), site (required), theme_slug (required).

wordpress_specialist_wp_theme_file_writeWordPress: Wp theme file writeA
Destructive

[UNIFIED] Write a file inside a theme. content_base64 is the decoded body (capped at 5 MB, S-18). PHP file writes additionally require edit_themes AND !DISALLOW_FILE_EDIT (S-17); non-PHP writes only need edit_themes. Pass expected_sha256 for optimistic concurrency: the companion compares against the current file's sha256 and returns sha_mismatch (409) on drift (S-19). When create_dirs is true (default) any missing parent directories are created. Requires Airano MCP Bridge v2.14.0+.

Inputs: path (required), site (required), theme_slug (required), content_base64 (required), +2 more.

wordpress_specialist_wp_theme_install_from_zipWordPress: Wp theme install from zipA
Destructive

[UNIFIED] Install a theme from a remote URL, inline base64 zip, server-local zip_path, or chunked zip_session_id. Companion runs WP core's Theme_Upgrader so signature checks and the WP filesystem abstraction stay engaged. Pass exactly one of zip_url (companion fetches via wp_safe_remote_get), zip_base64 (decoded server-side), zip_path (read by MCPHub from the server filesystem and sent to the companion as zip_base64), or zip_session_id (created with wp_zip_install_chunked_start/chunk). Capped at 50 MB per zip (S-18). Set activate=true to make the new theme active after install; overwrite=true permits re-installing a slug that already exists. Requires Airano MCP Bridge v2.14.0+ and a WordPress user with install_themes.

Inputs: site (required), zip_url, activate, zip_path, +3 more.

wordpress_specialist_wp_theme_listWordPress: Wp theme listA
Read-only

[UNIFIED] List every installed theme: stylesheet/template names, version, parent, block-theme flag, active flag, update availability. Requires Airano MCP Bridge v2.11.0+ and manage_options.

Inputs: site (required).

wordpress_specialist_wp_user_listWordPress: Wp user listA
Read-only

[UNIFIED] List WordPress users with id, username, email, display name, roles, and registration timestamp. Supports optional role and search filters; paginated up to 200 per call. Requires Airano MCP Bridge v2.11.0+ and manage_options.

Inputs: site (required), page, role, search, +1 more.

wordpress_specialist_wp_widget_areas_listWordPress: Wp widget areas listA
Read-only

[UNIFIED] List every registered sidebar / widget area with id, name, theme_location, widget_count, and kind (block or legacy). Block areas store widgets as block instances; legacy areas use per-widget option keys. Requires Airano MCP Bridge v2.17.0+ and manage_options.

Inputs: site (required).

wordpress_specialist_wp_widget_getWordPress: Wp widget getA
Read-only

[UNIFIED] Read one widget area's contents. Returns {area_id, kind, widgets: [...]}. For block kind, each widget is {id, type:'block', blocks:[...parsed], raw:'<!-- wp:... -->'} — raw is the round-trippable HTML; blocks is the parsed tree for inspection. For legacy kind, each widget is {id, type, settings:{...}} keyed by the widget's option store. Requires Airano MCP Bridge v2.17.0+ and manage_options.

Inputs: site (required), area_id (required).

wordpress_specialist_wp_widget_setWordPress: Wp widget setA
Destructive

[UNIFIED] Full-replace a widget area's contents. Block-kind areas accept any widget with raw (block HTML) or blocks (block tree, server serialises). Legacy areas accept text widget settings only this round — other legacy widget types remain read-only. Caller-side kind is ignored: area kind is determined by the area itself; block↔legacy conversion is a theme-level decision, not an MCP one. S-23: HTML payloads are sanitised via wp_kses_post unless the caller has unfiltered_html. Requires Airano MCP Bridge v2.17.0+ and manage_options.

Inputs: site (required), area_id (required), widgets (required).

wordpress_specialist_wp_zip_install_chunked_abortWordPress: Wp zip install chunked abortC
Destructive

[UNIFIED] Abort a WordPress install zip staging session and delete its spill file.

Inputs: site (required), session_id (required).

wordpress_specialist_wp_zip_install_chunked_chunkWordPress: Wp zip install chunked chunkA
Destructive

[UNIFIED] Append one base64-encoded chunk to a WordPress install zip staging session. Chunks must arrive in order starting at index 0. Prefer the upload_url returned by wp_zip_install_chunked_start when it is available; this base64 tool is the portable fallback.

Inputs: site (required), index (required), data_b64 (required), session_id (required), +1 more.

wordpress_specialist_wp_zip_install_chunked_startWordPress: Wp zip install chunked startA
Destructive

[UNIFIED] Start a chunked staging session for a WordPress plugin or theme zip. Use the returned session_id as zip_session_id in wp_plugin_install_from_zip or wp_theme_install_from_zip. On per-user MCP endpoints this also returns a relative upload_url so an agent can PUT raw zip bytes with curl --data-binary @file, using the same Bearer token, instead of embedding large base64 in tool calls. Use the chunk tool only as the fallback path. TTL 1h, hard cap 50 MB per zip.

Inputs: site (required), filename (required), total_bytes (required), sha256.

wordpress_specialist_wp_zip_install_chunked_statusWordPress: Wp zip install chunked statusB
Destructive

[UNIFIED] Query a WordPress install zip staging session. Returns received_bytes and next_chunk so the caller can resume after a disconnect.

Inputs: site (required), session_id (required).

wordpress_transient_flushWordPress: Transient flushA
Destructive

[UNIFIED] Flush WordPress transients via the airano-mcp-bridge companion plugin (v2.5.0+). Scopes: 'expired' (default, delete_expired_transients), 'all' (every transient), 'pattern' (shell glob like 'rank_math_*'). On multisite, include_site_transients=true also purges site_transient* rows. Requires manage_options.

Inputs: site (required), scope, pattern, include_site_transients.

wordpress_update_categoryWordPress: Update categoryC
Destructive

[UNIFIED] Update an existing WordPress category. Can modify name, description, and parent category.

Inputs: site (required), category_id (required), name, parent, +1 more.

wordpress_update_commentWordPress: Update commentC
Destructive

[UNIFIED] Update an existing WordPress comment. Can update content, status, author information, etc.

Inputs: site (required), comment_id (required), status, content, +2 more.

wordpress_update_mediaWordPress: Update mediaC
Destructive

[UNIFIED] Update media metadata. Supports title, description, slug, alt text, caption, status, and associated post.

Inputs: site (required), media_id (required), post, slug, +5 more.

wordpress_update_menu_itemWordPress: Update menu itemC
Destructive

[UNIFIED] Update an existing menu item. Can change title, URL, parent, or menu order.

Inputs: site (required), item_id (required), url, title, +2 more.

wordpress_update_navigationWordPress: Update navigationB
Destructive

[UNIFIED] Update a wp_navigation post (block-theme menu). Writes post_content (block markup) and/or title/status/slug/meta. Use this to fix navigation-link hrefs that the agent set up in Site Editor without leaving the MCP loop.

Inputs: site (required), navigation_id (required), meta, slug, +3 more.

wordpress_update_pageWordPress: Update pageB
Destructive

[UNIFIED] Update an existing WordPress page. Can update title, content, status, slug, parent page, featured image, and post meta (e.g. Yoast fields).

Inputs: site (required), page_id (required), meta, slug, +5 more.

wordpress_update_postWordPress: Update postC
Destructive

[UNIFIED] Update an existing WordPress post. Can update any field including title, content, status, categories, tags, REST-registered post meta, and generic multilingual metadata.

Inputs: site (required), post_id (required), meta, slug, +9 more.

wordpress_update_post_seoWordPress: Update post seoB
Destructive

[UNIFIED] Update SEO metadata for a WordPress post or page. Supports both Rank Math and Yoast SEO fields. Automatically detects which plugin is active. Requires SEO API Bridge plugin.

Inputs: site (required), post_id (required), robots, og_image, +10 more.

wordpress_update_product_seoWordPress: Update product seoB
Destructive

[UNIFIED] Update SEO metadata for a WooCommerce product. Same as update_post_seo but specifically for products. Requires SEO API Bridge plugin.

Inputs: site (required), product_id (required), og_image, og_title, +9 more.

wordpress_update_tagWordPress: Update tagC
Destructive

[UNIFIED] Update an existing WordPress tag. Can modify name and description.

Inputs: site (required), tag_id (required), name, description.

wordpress_upload_media_chunked_abortWordPress: Upload media chunked abortB
Destructive

[UNIFIED] Abort a chunked upload session and delete its spill file.

Inputs: site (required), session_id (required).

wordpress_upload_media_chunked_chunkWordPress: Upload media chunked chunkA

[UNIFIED] Append a single base64-encoded chunk to a chunked upload session. Chunks must arrive in order starting at index 0. Prefer the upload_url returned by upload_media_chunked_start when it is available; this base64 tool is the portable fallback.

Inputs: site (required), index (required), data_b64 (required), session_id (required), +1 more.

wordpress_upload_media_chunked_finishWordPress: Upload media chunked finishB
Destructive

[UNIFIED] Finalize a chunked upload: assemble + optimize + upload to WordPress. Verifies sha256 if supplied at start.

Inputs: site (required), session_id (required), title, caption, +4 more.

wordpress_upload_media_chunked_startWordPress: Upload media chunked startA

[UNIFIED] Start a chunked upload session for a large media file. Returns a session_id for finish/status/abort. On per-user MCP endpoints it also returns a relative upload_url so an agent can PUT raw bytes with curl --data-binary @file, using the same Bearer token, instead of embedding large base64 in tool calls. Use the chunk tool only as the fallback path. TTL 1h, hard cap 500 MB per session.

Inputs: site (required), filename (required), total_bytes (required), mime, +1 more.

wordpress_upload_media_chunked_statusWordPress: Upload media chunked statusA
Read-only

[UNIFIED] Query the current state of a chunked-upload session — returns received_bytes and next_chunk so the caller can resume after a disconnect. The session survives for 1 h after the last activity; re-start the session with upload_media_chunked_start if it has expired or been aborted. Returns {error_code: NOT_FOUND} when the session is unknown.

Inputs: site (required), session_id (required).

wordpress_upload_media_from_base64WordPress: Upload media from base64B
Destructive

[UNIFIED] Upload a base64-encoded file directly to the WordPress media library. For chat-attached images/files smaller than ~10 MB. Use upload_media_from_url for larger files or chunked path later.

Inputs: data (required), site (required), filename (required), mime, +7 more.

wordpress_upload_media_from_urlWordPress: Upload media from urlB
Destructive

[UNIFIED] Upload media from a public URL to the WordPress media library (sideload). Downloads the file with SSRF protection, sniffs MIME, and uploads via raw-binary POST.

Inputs: url (required), site (required), title, caption, +6 more.

wordpress_wp_cache_flushWordPress: Wp cache flushC
Destructive

[UNIFIED] Flush WordPress caches through the Airano MCP Bridge companion plugin. Supports object cache, page cache, or both without server-side shell access.

Inputs: site (required), scope.

wordpress_wp_db_checkWordPress: Wp db checkB
Read-only

[UNIFIED] Check WordPress database tables through the companion plugin. Runs CHECK TABLE only on tables with the current WordPress table prefix.

Inputs: site (required).

wordpress_wp_db_optimizeWordPress: Wp db optimizeC
Destructive

[UNIFIED] Optimize WordPress database tables through the companion plugin. Runs OPTIMIZE TABLE only on tables with the current WordPress table prefix.

Inputs: site (required).

wordpress_wp_transient_delete_allWordPress: Wp transient delete allB
Destructive

[UNIFIED] Delete expired WordPress transients through the companion plugin. This mirrors the legacy tool's expired-only cleanup semantics.

Inputs: site (required).

wordpress_wp_transient_listWordPress: Wp transient listA
Read-only

[UNIFIED] List WordPress transients through the companion plugin. Returns names, type, and expiration metadata without reading transient values.

Inputs: site (required), limit, include_site_transients.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    C2.4/5.0

    Scored across 554 tools

    Disambiguation2/5

    Service prefixes (wordpress_, woocommerce_, gitea_, n8n_, supabase_) help separate domains, but there are outright duplicate-intent tools: wordpress_wp_db_check vs wordpress_specialist_wp_db_check, wordpress_cache_purge vs wordpress_wp_cache_flush, wordpress_transient_flush vs wordpress_wp_transient_delete_all, wordpress_generate_and_upload_image vs woocommerce_generate_and_upload_image, and wordpress_delete_media vs woocommerce_delete_media. Multiple unrelated *_list_projects (Coolify, OpenPanel, n8n, hub-level) and several health-check tools across services make selection error-prone.

    Naming Consistency3/5

    The dominant pattern is service_verb_noun snake_case (wordpress_create_post, gitea_merge_pull_request, supabase_delete_policy), which is readable. However, the WordPress surface is split across three prefixes ('wordpress_', 'wordpress_specialist_wp_', 'wordpress_wp_'), and hub-level tools (get_endpoints, set_rate_limit_config, check_all_projects_health, manage_api_keys_rotate) break the verb_noun prefix convention.

    Tool Count1/5

    554 tools in a single server is an extreme mismatch; no agent can reasonably navigate this surface, and it far exceeds any scoped-purpose guideline. This is effectively a bundled aggregator of a dozen-plus integrations rather than a coherent tool set.

    Completeness3/5

    Most integrations (WordPress, WooCommerce, Gitea, Supabase, n8n, Coolify, Cloudflare) have broad CRUD coverage, so dead ends are rare within them. But other surfaces are thin: Gmail has no send/draft/compose tool, Search Console exposes only four read operations, and OAuth lacks update/secret-rotation lifecycle.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    Appeared in Searches