wp_criu
This server is a WordPress management hub that acts as an MCP Hub for Codex and ChatGPT, letting you remotely inspect, configure, and control WordPress sites. It also integrates with Notion via OAuth and persists state in a JSON store.
Site Management
list_sites– List configured WordPress sites (optionally filtered by environment)get_site_info– Validate connection and retrieve metadata for a specific site
Plugin Management
list_plugins– List all installed pluginsplugin_action– Activate, deactivate, or delete a plugininstall_plugin_zip– Install a plugin from a ZIP file and optionally activate it
Theme Management
list_themes– List all installed themesactivate_theme– Activate a theme by its stylesheet identifier
WordPress Options
get_options– Read one or more WordPress optionsupdate_options– Update WordPress options via a JSON object
File System Access
read_file– Read any file within the site's ABSPATHwrite_file– Write a file within the site's ABSPATH (with optional backup, supports text or base64)
Database Access
db_query– Execute read-only SQL queries on a site's database
REST API Proxy
rest_proxy– Call any internal WordPress REST API route (GET, POST, PUT, PATCH, DELETE)
Translations
check_translations– Verify string translations for a given text domaincheck_plural_translations– Verify plural translations for a given text domain
WooCommerce
get_wc_checkout_fields– Retrieve the WooCommerce checkout fields structure
Raw Bridge Access
bridge_raw_request– Make a raw GET or POST call to any bridge endpoint for untyped operations
Allows to inspect WooCommerce checkout fields.
Allows to manage one or more WordPress sites, including listing sites, inspecting sites, managing plugins and themes, reading and updating options, reading and writing files, executing read-only SQL, using a REST proxy, and automatically registering sites via an HTTP endpoint.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@wp_criulist all registered WordPress sites"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Hub propio para Codex y ChatGPT
Este servicio consolida dos cosas en una sola capa:
MCP remoto por
Streamable HTTPpara Codex y ChatGPT.Panel técnico y registry compatible para onboarding de conectores y sitios WordPress.
Qué incluye ahora
Hub MCP con herramientas de Notion y WordPress.
State store persistido en JSON para onboarding editable.
Panel técnico en
/admin.Admin API en
/api/admin/*.Registry WordPress compatible:
GET /sitesGET /sites/:site_idPOST /register-sitePATCH /sites/:site_idDELETE /sites/:site_id
Related MCP server: WordPress MCP Proxy
Arquitectura
src/index.ts: entrypoint HTTP,/mcp,/health,/adminy rutas de registry.src/mcp-server.ts: herramientas MCP de Notion y WordPress.src/lib/state.ts: estado persistido del hub.src/notion.ts: adaptador Notion por alias.src/wordpress.ts: adaptador WordPress compatible con el bridge actual.src/admin/*: UI y API técnica de onboarding.
Variables de entorno
Obligatorias en producción:
ADMIN_API_KEYADMIN_SESSION_SECRETWORDPRESS_REGISTRY_TOKEN
Recomendadas:
MCP_AUTH_MODE=bearerMCP_API_KEYMCP_ALLOWED_HOSTS=mcp.tudominio.com,localhost,127.0.0.1HUB_STATE_FILE=/app/data/hub-state.json
Bootstrap opcional:
NOTION_CONNECTIONS_JSONWORDPRESS_BOOTSTRAP_SITES_FILENOTION_OAUTH_CLIENT_IDNOTION_OAUTH_CLIENT_SECRETNOTION_OAUTH_REDIRECT_URI
Rutas principales
GET /GET /healthGET /adminPOST /mcpGET /sitesPOST /register-site
Panel técnico
El panel permite:
iniciar autorizaciones de Notion por OAuth;
almacenar y editar conexiones Notion ya autorizadas;
validarlas con
whoami;registrar sitios WordPress a mano;
ver estado de bridge;
ocultar o desactivar sitios sin borrarlos lógicamente del modelo;
eliminar sitios del registry;
ver el catálogo técnico para futuros conectores.
Compatibilidad WordPress
La idea es no romper el stack actual:
el plugin WordPress puede seguir enviando auto-registro a
POST /register-site;el modelo por
site_id,site_labelybase_urlse mantiene;las herramientas MCP WordPress conservan los mismos nombres usados antes.
Uso local
npm install
copy .env.example .env
npm run devPruebas rápidas:
curl http://localhost:3000/health
npm run smoke:httpAbre:
http://localhost:3000/adminDespliegue en EasyPanel
Crea el servicio desde este directorio.
Persiste
./datao define un volumen paraHUB_STATE_FILE.Configura
MCP_AUTH_MODE=bearery unMCP_API_KEYprivado.Configura
MCP_ALLOWED_HOSTScon tu dominio publico y localhost.Configura
ADMIN_API_KEY,ADMIN_SESSION_SECRETyWORDPRESS_REGISTRY_TOKEN.Si vas a conectar Notion desde el panel, configura
NOTION_OAUTH_CLIENT_ID,NOTION_OAUTH_CLIENT_SECRETyNOTION_OAUTH_REDIRECT_URI=https://tu-dominio/api/admin/connectors/notion/oauth/callback.Si vienes del
wp_criu_registryactual, monta el mismo volumen y dejaWORDPRESS_BOOTSTRAP_SITES_FILE=/app/data/sites.json.Publica el servicio por HTTPS.
Usa
/mcppara MCP y/adminpara onboarding humano.
Onboarding de Notion
Crea una integración pública de Notion y define como redirect URI:
https://tu-dominio/api/admin/connectors/notion/oauth/callback
Carga
NOTION_OAUTH_CLIENT_ID,NOTION_OAUTH_CLIENT_SECRETyNOTION_OAUTH_REDIRECT_URIen EasyPanel.Entra a
/admin.Escribe
alias,labelopcional ydefaultParentPageIdopcional.Pulsa
Conectar con Notion.Autoriza la integración en Notion.
Vuelve al panel y valida con
whoami.
Migración directa desde el registry actual
Si mcp.criu.com.co hoy responde como wp_criu_registry, la migración segura para reemplazarlo con este hub es:
Respaldar el volumen actual de
/app/data.Mantener el archivo legado
sites.jsonen ese mismo volumen.Desplegar este servicio con:
HUB_STATE_FILE=/app/data/hub-state.jsonWORDPRESS_BOOTSTRAP_SITES_FILE=/app/data/sites.json
Arrancar el hub nuevo.
Confirmar en
/adminque los sitios heredados aparecieron.
El hub también intenta detectar automáticamente un sites.json vecino al hub-state.json, de modo que un reemplazo directo no dependa de pasos manuales extra.
Codex
Ejemplo con bearer:
[mcp_servers.criu_hub]
url = "https://mcp.tudominio.com/mcp"
bearer_token_env_var = "CRIU_MCP_HUB_TOKEN"El valor de CRIU_MCP_HUB_TOKEN debe ser el mismo MCP_API_KEY del hub.
ChatGPT
Diseño recomendado:
camino principal:
Secure MCP Tunnelfallback: endpoint HTTPS directo a
/mcp
Guía operativa
Hay una guía más aterrizada de uso personal, despliegue y onboarding en docs/OPERACION_PERSONAL.md.
Si este repo ya está desplegado en producción, el estado operativo real y los endpoints live actuales quedaron documentados en docs/ESTADO_LIVE_MCP_CRIU.md.
Scripts útiles
Importar sitios desde el registry vivo actual a data/sites.json:
LEGACY_REGISTRY_TOKEN=tu_token npm run import:legacy-registryO explícitamente:
node scripts/import-legacy-registry.mjs --url https://mcp.criu.com.co --token tu_token --output ./data/sites.jsonHacer smoke test HTTP/MCP del hub ya levantado:
MCP_HUB_URL=https://mcp.criu.com.co MCP_HUB_TOKEN=tu_token npm run smoke:httpFuturos conectores
Cada integración nueva debería entrar como:
manifest del conector
config schema
health check
admin form
entidades administrables
adaptador MCP
Available Tools
17 toolsactivate_themeC
Activa un tema por stylesheet.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | site_id, site_label o base_url del sitio. | |
| stylesheet | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description should disclose behavioral traits. It does not mention side effects (e.g., changing site appearance), required permissions, or error conditions. The brief description fails to provide meaningful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (one sentence), which is efficient, but it lacks any structure or front-loading of critical information. It could be expanded without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two parameters, no output schema, and no annotations, the description is too minimal. It fails to clarify that the theme must be installed, what the activation implies (e.g., changing active theme), and what the response looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, with only 'site' described. The description adds 'by stylesheet' but does not explain what 'stylesheet' represents (e.g., theme directory name). The description does not compensate for the missing schema description of the second parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Activa un tema por stylesheet' clearly states the action (activate) and resource (theme), specifying the method (by stylesheet). It distinguishes from plugin-related siblings, but lacks clarity on what 'stylesheet' precisely means.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as checking if the theme is already active or listing themes first. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bridge_raw_requestC
Hace una llamada raw a un endpoint del bridge para cubrir casos no tipados.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | site_id, site_label o base_url del sitio. | |
| method | No | GET | |
| endpoint | Yes | Endpoint del bridge comenzando con /. | |
| body_json | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavioral traits. It only says 'makes a raw call' but does not warn about potential dangers, side effects, or required permissions for this potentially destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, very concise. It front-loads the purpose, but could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema, annotations, and incomplete parameter documentation, the description is insufficient for a tool that makes raw API calls. It omits return values, error handling, and prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50% (two of four parameters have descriptions). The tool description adds no additional parameter information, failing to compensate for the missing schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool makes a raw call to a bridge endpoint for untyped cases. It uses specific verbs and resources, but does not differentiate from sibling tools like rest_proxy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'para cubrir casos no tipados' implies usage for untyped cases, providing some context. However, it lacks explicit guidance on when not to use or mention of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_plural_translationsC
Verifica traducciones plurales para un text domain.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | site_id, site_label o base_url del sitio. | |
| items_json | Yes | Arreglo JSON con objetos { singular, plural, number }. | |
| domain | No | default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but does not disclose any behavioral traits such as whether it is read-only, modifies data, or what the output is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence but is under-specified. It omits critical details, making it insufficiently informative despite brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, no output schema, no annotations, and many sibling tools, the description is severely incomplete. It fails to explain return values, prerequisites, or behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, but the description adds no parameter information beyond the schema. It does not compensate for the undocumented parameter (domain) or clarify usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool checks plural translations for a text domain, which is clear but fails to differentiate from the sibling tool 'check_translations'. It lacks specificity on what 'check' entails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'check_translations'. The description does not specify context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_translationsC
Verifica traducciones de cadenas para un text domain dado.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | site_id, site_label o base_url del sitio. | |
| strings | Yes | ||
| domain | No | default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits (e.g., read-only, side effects, performance implications). The tool's name and description suggest a check operation, but no confirmation of safety or mutability is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but overly brief. It lacks structured information that could be front-loaded, such as return type or critical constraints. It is short but not optimally informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, no output schema, and no sibling differentiation beyond name, the description is insufficient for an agent to fully understand tool behavior. It omits output format, error cases, and usage context, leaving significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no extra meaning beyond the input schema. Only 33% of parameters have descriptions in the schema, and the description does not compensate for the remaining parameters. It fails to explain how parameters like 'site' or 'strings' interact or their domain significance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks string translations for a given text domain, and the name 'check_translations' aligns with that. It distinguishes from sibling 'check_plural_translations', implying singular focus. However, it lacks specificity on what 'verifica' entails (e.g., existence, correctness).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'check_plural_translations' or other tools. The description does not mention prerequisites or context for invocation, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
db_queryC
Ejecuta una consulta SQL de solo lectura en el sitio.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | site_id, site_label o base_url del sitio. | |
| sql | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'de solo lectura' (read-only), which is a key behavioral trait. However, with no annotations, the description carries the full burden. It does not disclose potential side effects, error behavior, required permissions, or query limitations (e.g., timeouts, result sizes).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but lacks important details. It is front-loaded with the core purpose, but could include additional context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (2 parameters, no output schema), the description is incomplete. It does not explain what the query returns, any row limits, or how to interpret results. Contrast with sibling tools like 'get_site_info' which likely have clearer outputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: the 'site' parameter has a description, but 'sql' does not. The description adds no additional meaning beyond the schema for either parameter. For 'sql', there is no hint about valid SQL syntax, restrictions, or expected format. The description does not compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it executes a read-only SQL query on the site. The verb 'ejecuta' and resource 'consulta SQL' are specific. However, it does not explicitly distinguish from siblings like 'bridge_raw_request' or 'rest_proxy', which might also interact with the database.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it does not mention that other tools like 'get_options' might be preferred for simple data retrieval, or that this tool is only for read-only queries and not for mutations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_optionsC
Lee una o varias opciones de WordPress.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | site_id, site_label o base_url del sitio. | |
| options | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states it reads options. It does not disclose whether the tool is safe (read-only), idempotent, error handling, or behavior when options do not exist. Minimal behavioral context beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, efficient and to the point. No wasted words. However, could be more informative while remaining concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 2 required params and no output schema, the description is overly minimal. It does not specify what information is returned, how to list all options, or prerequisites. Incomplete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (only 'site' described). The tool description does not explain what the 'options' parameter expects (e.g., option names, format). The description adds no value beyond the schema, and the missing parameter description is not compensated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reads WordPress options, using a specific verb 'Lee' (reads) and resource 'opciones de WordPress'. It also implies it can handle one or multiple options, distinguishing it from sibling tools like update_options (writes) and db_query (generic query).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. For example, it does not mention when rest_proxy or check_translations might be more appropriate. No exclusions or prerequisites are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_site_infoA
Consulta /site-info del bridge para validar conexión y metadatos del sitio.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | site_id, site_label o base_url del sitio. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It indicates a read operation for validation, but does not disclose potential errors, rate limits, or whether the operation is safe (non-destructive). For a simple read tool, this is acceptable but lacks additional behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that is front-loaded with the action and purpose. Every word is necessary, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one parameter, no output schema), the description provides adequate context: what it does, why, and the input. It does not describe the return structure, but the purpose implicitly covers expected output (metadata). Minor gap but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not add meaning beyond the input schema. Schema coverage is 100% with a single parameter described as 'site_id, site_label o base_url del sitio'. The description merely restates the endpoint and purpose, not the parameter details. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Consulta /site-info del bridge') and its purpose ('validar conexión y metadatos del sitio'). It distinguishes itself from sibling tools like list_sites (listing all sites) or get_options (getting options) by specifying the exact endpoint and validation role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (to validate connection and get site metadata). It provides clear context but does not explicitly mention when not to use it or suggest alternatives, though the purpose is sufficiently specific.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_wc_checkout_fieldsB
Obtiene la estructura de checkout fields de WooCommerce.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | site_id, site_label o base_url del sitio. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits beyond implying it is a read operation. Lacks details on safety, performance, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: a single sentence that states the purpose without redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple getter with one parameter and no output schema, but could explain what the returned structure contains or how it can be used.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (single parameter described in schema). The description adds no extra meaning beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Obtiene' = Gets) and resource ('estructura de checkout fields de WooCommerce'). It distinguishes from siblings which are about themes, plugins, site info, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No mention of context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_plugin_zipB
Instala un plugin ZIP local en un sitio WordPress y opcionalmente lo activa.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | site_id, site_label o base_url del sitio. | |
| zip_path | Yes | Ruta local al ZIP del plugin. | |
| activate | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only states the basic action ('installs and optionally activates') without revealing important details like overwrite behavior, permission requirements, error handling, or return values. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence (12 words) with no redundancy. It is efficient but could be slightly more structured (e.g., listing key parameters or behaviors). Still, it earns a 4 for being front-loaded and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters and no output schema or annotations, the description is too sparse. It omits what the tool returns (e.g., success indicator, plugin details), error conditions, and prerequisites (e.g., valid ZIP, site accessibility). The agent lacks essential context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (site and zip_path have descriptions; activate has a default but no description). The tool description adds no new meaning beyond linking 'local ZIP' to zip_path and 'optionally activates' to activate. It does not clarify formats, restrictions, or relationships. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool installs a local ZIP plugin on a WordPress site and optionally activates it. The verb 'install' and resource 'plugin ZIP local' are specific. This distinguishes it from siblings like list_plugins or plugin_action which handle listing or other actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., uploading via URL, using admin interface). It does not mention prerequisites, limitations, or when not to use it, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_pluginsA
Lista plugins instalados en un sitio WordPress.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | site_id, site_label o base_url del sitio. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description only states it lists plugins, which is straightforward, but fails to disclose any behavioral details such as output format, whether inactive plugins are included, or if there are any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no unnecessary words. It efficiently conveys the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description is incomplete. It doesn't mention the return format or any constraints like pagination. However, for a simple listing tool, it's minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the 'site' parameter with sufficient detail. The tool description adds no additional meaning beyond what the schema provides, so it meets the baseline for 100% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists installed plugins on a WordPress site. The verb 'list' plus resource 'plugins' is specific and distinguishes from sibling tools like plugin_action or install_plugin_zip.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. While the verb 'list' implies read-only listing, there is no mention of exclusion criteria or scenarios where other tools are preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sitesC
Lista los sitios WordPress configurados para este MCP.
| Name | Required | Description | Default |
|---|---|---|---|
| environment | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are available, and the description merely states the tool lists sites without disclosing behavioral traits such as read-only nature, authentication requirements, or potential side effects. This provides almost no transparency beyond the tool's name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core purpose. However, it is too brief to be fully informative, trading completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and minimal description, the tool definition is severely incomplete. It lacks details on the return format, the effect of the environment parameter, and any behavioral context, making it insufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one optional parameter (environment) with 0% schema description coverage, and the description does not mention or explain this parameter at all. The agent cannot understand or correctly use the environment filter without additional context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists WordPress sites configured for this MCP, using a specific verb and resource. It is easily distinguishable from sibling tools like list_plugins or list_themes, which focus on different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as get_site_info or other list tools. There is no mention of appropriate contexts or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_themesB
Lista los temas instalados en un sitio WordPress.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | site_id, site_label o base_url del sitio. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the tool lists themes, with no disclosure of behavioral traits like whether it returns all themes or just active ones, or any permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the key action and resource. No unnecessary words or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter, the description is adequate but lacks details about the output format (e.g., does it return names, versions?). Given no output schema, a bit more context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with a description for the 'site' parameter. The tool description adds no additional meaning beyond the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists installed themes on a WordPress site. It uses specific verb 'Lista' and resource 'temas instalados', distinguishing it from sibling tools like 'activate_theme' which performs a different action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as 'activate_theme' or 'list_plugins'. There is no mention of prerequisites or scenarios where this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plugin_actionC
Activa, desactiva o elimina un plugin por plugin_file.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | site_id, site_label o base_url del sitio. | |
| plugin_file | Yes | ||
| action | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description only lists actions without disclosing side effects (e.g., irreversible delete, activation impact on site). No mention of permissions, errors, or state changes. The agent cannot infer behavioral traits beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no redundancy. It efficiently conveys the core function. However, it could include more structure (e.g., bullet points for actions) without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 required params and no output schema, the description is too brief. It does not explain return values, error behavior, or usage context (e.g., plugin must exist). The description is insufficient for reliable use without external documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 33% (only 'site' has description). The description adds 'por plugin_file' but does not clarify what a plugin_file is (filename, slug, path). The 'action' enum values are not explained. The description adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool activates, deactivates, or deletes a plugin by plugin_file. The verb 'activa/desactiva/elimina' combined with 'plugin' makes the purpose explicit. It distinguishes from siblings like list_plugins (read-only) and install_plugin_zip (installation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. The description does not specify prerequisites (e.g., plugin must be installed) or context for each action (e.g., deactivate before delete). Sibling tools exist but no comparisons are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileC
Lee un archivo dentro del ABSPATH del sitio.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | site_id, site_label o base_url del sitio. | |
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only states it reads a file within ABSPATH, omitting details on return value, error handling, or restrictions. This is insufficient for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise. However, it sacrifices informativeness for brevity, making it merely adequate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and a minimal description, the tool definition lacks essential details about what the tool returns and its limitations. This is incomplete for an AI agent to use reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (only 'site' has a description). The description adds no parameter information beyond what is in the schema. For a tool with 2 required params, more detail is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a file within the site's ABSPATH. The verb 'read' and resource 'file' are specific, but it does not differentiate from siblings like 'write_file'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'write_file' or 'db_query'. The description fails to provide context for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rest_proxyC
Llama una ruta REST interna del WordPress objetivo.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | site_id, site_label o base_url del sitio. | |
| route | Yes | Ruta interna, por ejemplo /wc/v3/products o /elementor/v1/... | |
| method | No | GET | |
| params_json | No | Objeto JSON con query params. | |
| body_json | No | Objeto JSON con body. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It fails to mention whether the call is read-only or can modify data, what side effects occur, or any error behavior. The description is too vague to inform the agent of potential risks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence with no filler. It is concise and front-loaded with the core action. However, it could be slightly longer to include essential context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, 2 required, no output schema), the description is woefully incomplete. It does not explain return values, error handling, authentication, or any behavioral details. The agent lacks critical information to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 80% of parameters with descriptions, but the tool's description adds no additional meaning or context. It does not clarify how parameters like route or method interact, nor does it provide examples or constraints beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: calling an internal REST route of the target WordPress. It specifies a verb (calls) and a resource (REST route), which is clear. However, it does not distinguish this tool from siblings like bridge_raw_request or db_query, which might also make HTTP requests or query data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description does not mention any prerequisites, such as requiring authentication or specific WordPress API availability, nor does it indicate situations where this tool should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_optionsC
Actualiza opciones de WordPress con un objeto JSON.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | site_id, site_label o base_url del sitio. | |
| options_json | Yes | Objeto JSON con nombre de opción y valor. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the action but does not disclose behavioral traits like potential side effects, permission requirements, or reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, very concise. However, the Spanish language may limit understanding for some agents, but that is not scored here.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, no annotations, and only two parameters. The description lacks details about return values, error handling, or side effects, making it incomplete for effective tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds minimal value beyond the schema by mentioning 'JSON object', but does not explain format, examples, or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates WordPress options with a JSON object. It is specific with verb 'Actualiza' and resource 'opciones de WordPress', but does not explicitly distinguish from sibling tools like get_options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. This is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileC
Escribe un archivo dentro del ABSPATH del sitio.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | site_id, site_label o base_url del sitio. | |
| path | Yes | ||
| content | Yes | ||
| encoding | No | text | |
| backup | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It only states the action and location, but fails to disclose key behaviors like overwrite behavior, directory creation, permissions, or error handling. This is insufficient for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. However, it is almost too brief, sacrificing necessary details for conciseness. Still, it is efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no output schema, no annotations, and is a write operation, the description is completely inadequate. It omits return values, side effects, prerequisites, and error states, leaving the agent with minimal context for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 20%, yet the tool description adds no additional meaning to any parameter. The description does not explain the 'site', 'path', 'content', 'encoding', or 'backup' parameters beyond what is in the schema, failing to compensate for low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool writes a file within the site's ABSPATH, specifying the action (write), resource (file), and location constraint. This distinguishes it from sibling read_file and other site tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description does not mention when-not-to-use or provide any usage context, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes (themes, plugins, translations, DB, files). Some overlap between `bridge_raw_request` and `rest_proxy` could cause confusion, but descriptions help differentiate.
Most names follow `verb_noun` pattern (e.g., `activate_theme`, `list_plugins`). However, `plugin_action` deviates, and mixing `check_translations` with `check_plural_translations` is acceptable but not perfectly uniform.
17 tools cover a broad range of WordPress management tasks. While slightly above the ideal 3-15 range, the count is justified and not excessive for the domain.
Covers themes, plugins, options, DB, REST, files, and translations. Missing theme/plugin creation and user management are minor gaps, but the set is functional for most operations.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Scans self-hosted WooCommerce stores for AI-agent readiness and exposes a live MCP product catalog.
Read and manage courses, members, orders, events, posts, and settings for Loopwise-powered sites.
Manage websites, help documents and customer-support conversations with safe, scoped tools.
Manage products, orders, customers, inventory, and store configuration
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables comprehensive management of WordPress sites and WooCommerce stores through REST APIs, including content management, e-commerce operations, user administration, and store analytics.4
- FlicenseNot gradedqualityDmaintenanceEnables interaction with multiple WordPress sites through a proxy that connects to the MCP Expose Abilities plugin. Allows discovering and executing WordPress abilities across configured sites with secure authentication.
- AlicenseNot gradedqualityAmaintenanceEnables interaction with WordPress sites through the WordPress REST API via natural language, supporting single and multi-site management, content and taxonomy operations, media uploads, and more.36497GPL 3.0
- AlicenseAqualityBmaintenanceEnables comprehensive management of WordPress sites including posts, users, media, categories, tags, and site settings via the WordPress REST API.201Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/criustudio/wp-criu-registry'
If you have feedback or need assistance with the MCP directory API, please join our Discord server