El servidor MCP de OpenWAF tiene 21 herramientas de lectura y 23 de escritura. Cada una llama a una ruta de la API de OpenWAF con tu credencial, así que puede hacer exactamente lo que esa credencial puede hacer en la API, nada más.
Las zonas se nombran por dominio (example.com) o por id; los registros y las reglas, por el id que devuelven list_records y list_rules. Cada resultado trae un resumen corto en texto y los datos completos como JSON (structuredContent, con la misma forma que la respuesta REST).
Herramientas de lectura
Todos los roles, también readonly. En las rutas, … es /v1/orgs/{org}/zones/{zone} o la ruta de la organización.
| Herramienta | Qué hace | Ruta REST |
|---|---|---|
list_zones | Zonas visibles: estado, modo DNS, servidores de nombres o destino CNAME, cliente, versión | GET …/zones |
get_zone | Zona, versión actual, estado de la delegación o de la verificación TXT, y ajustes de borde | GET …/zones/{z}, …/delegation, …/edge |
list_records | Registros DNS con sus ids | GET …/records |
list_rules | Reglas de borde (IP, país, excepciones del WAF, límites) | GET …/rules |
list_certificates | Certificados y estado TLS de cada sitio | GET …/certs |
zone_history | Versiones de configuración (también de una zona borrada, por id) | GET …/versions |
zone_diff | Diferencias entre dos versiones (por defecto, la actual contra la anterior) | GET …/diff |
zone_propagation | Versión aplicada por cada nodo del borde | GET …/propagation |
zone_hosts | Zonas externas: si cada nombre con proxy apunta al borde | GET …/hosts |
email_check | Correo de la zona en el DNS público: MX, SPF (búsquedas anidadas), DKIM, DMARC, nombres con proxy, conflictos | GET …/email/check |
audit_log | Registro de auditoría (admin, o tech limitado a un cliente) | GET …/audit |
zone_usage | Tráfico diario: peticiones, bloqueadas, bytes, consultas DNS | GET …/usage |
rum_report | Core Web Vitals de los visitantes: p75 con su valoración, reparto por bandas, periodo anterior, partes del LCP, desglose y peores elementos | GET …/rum/report |
ai_agents_report | Agentes de IA de la zona, por vista: overview, crawlers, spoofers, optimization, signals, traps, bursts, endpoints, mcp o events | GET …/ai-agents/* |
ai_agents_catalog | Catálogo de bots de IA: operador, categoría, métodos de verificación, versión y estado de cada fuente | GET …/ai-agents/catalog |
list_clients | Clientes de la agencia y número de zonas | GET …/clients |
effective_config | La configuración ya fusionada que recibe el borde para un nombre | GET …/hosts/{host}/effective |
list_origin_certs | Certificados emitidos por la OpenWAF Origin CA: nombres, tipo de clave, serial, caducidad y estado (nunca claves) | GET …/origin-certs |
origin_tls_status | TLS hacia el origen de cada nombre con proxy: modo, nombre verificado, mTLS, lo que ve el control plane y errores 525/526 en 24 h | GET …/origin-tls/status |
egress_status | Egress de IA de la organización: si está activado, destinos con la huella de su credencial, y agentes | GET …/egress, …/egress/targets, …/egress/agents |
egress_events | Llamadas de tus propios agentes que rechazó la pasarela de egress | GET …/egress/events |
Herramientas de escritura
Rol tech o superior; las de egress necesitan admin. Una credencial readonly ni siquiera las ve en tools/list.
| Herramienta | Qué hace | Rol | Ruta REST |
|---|---|---|---|
add_zone | Alta de una zona, modo delegated o external | tech | POST …/zones |
create_record | Crea un registro DNS | tech | POST …/records |
update_record | Cambia campos de un registro | tech | PATCH …/records/{id} |
delete_record | Destructiva: borra un registro | tech | DELETE …/records/{id} |
apply_records_batch | Altas, cambios y bajas de registros en una sola versión (destructiva si borra) | tech | POST …/records/batch |
update_settings | Ajustes de borde (modo y nivel del WAF, límite, origen, HSTS, puerta de acceso, redirecciones, caché, 103 Early Hints, RUM, rate_rules por ruta…); con host, los ajustes propios de ese nombre | tech | PATCH …/edge |
ai_agents_settings | Lee los ajustes ai_agents de la zona o de un nombre; con patch o template, los cambia | tech | GET/PATCH …/edge |
agent_readiness_scan | Escanea ahora la preparación de un nombre para agentes de IA (una vez por nombre y minuto); no cambia configuración | tech | POST …/agent-readiness/scan |
add_rule | Añade una regla de borde; hosts la limita a esos nombres | tech | POST …/rules |
remove_rule | Destructiva: quita una regla | tech | DELETE …/rules/{id} |
revert_zone | Destructiva: restaura una versión anterior como versión nueva | tech | POST …/revert |
check_zone | Comprueba ya la delegación o el TXT de verificación (sin motivo ni confirmación) | tech | POST …/delegation/check |
delete_zone | Destructiva: borra la zona | tech | DELETE …/zones/{z} |
purge_cache | Purga la caché del borde: exactamente uno de purge_everything, files, prefixes, hosts o tags | tech | POST …/cache/purge |
create_origin_cert | Emite un certificado de la OpenWAF Origin CA para nombres de la zona; la clave generada va solo en esa respuesta, o envía un csr | tech | POST …/origin-certs |
revoke_origin_cert | Destructiva: revoca un certificado de origen | tech | DELETE …/origin-certs/{id} |
egress_create_agent | Crea un agente de egress; devuelve su token sustituto una sola vez | admin | POST …/egress/agents |
egress_update_agent | Cambia descripción, destinos, inspección o disabled de un agente | admin | PATCH …/egress/agents/{id} |
egress_rotate_token | Destructiva: token nuevo (una sola vez); el anterior deja de valer | admin | POST …/egress/agents/{id}/rotate-token |
egress_delete_agent | Destructiva: borra un agente | admin | DELETE …/egress/agents/{id} |
egress_add_target | Destino propio https:// con nombre DNS público | admin | POST …/egress/targets |
egress_remove_target | Destructiva: borra un destino propio y su credencial (no si un agente lo usa) | admin | DELETE …/egress/targets/{t} |
egress_remove_credential | Destructiva: borra la clave del proveedor de un destino | admin | DELETE …/egress/targets/{t}/credential |
Las destructivas lo dicen en su descripción y llevan la anotación destructiveHint; las de lectura, readOnlyHint.
Escrituras de configuración y el resto
Las escrituras que cambian la configuración de la zona crean una versión nueva y siguen el protocolo simular → confirmar con expected_version que se explica en hacer cambios. Unas pocas herramientas no son configuración versionada y van de otra forma:
check_zoneyagent_readiness_scanno cambian configuración: sin motivo ni confirmación.add_zoneno tiene versión previa: se confirma sinexpected_version.purge_cache,create_origin_cert,revoke_origin_certy las de egress:confirm=falsecomprueba y enseña qué pasaría,confirm=truelo hace, sinexpected_version. Quedan en la auditoría.
Perfil ligero
La lista completa de herramientas le cuesta contexto al asistente en cada conversación. Con ?profile=lite el servidor solo lista las herramientas de descubrimiento, un modo código de solo lectura y las lecturas de cada día, y todas las demás se siguen pudiendo llamar por su nombre. Mira OAuth y tokens.