Tools

Every read and write tool of the OpenWAF MCP server, the role it needs and the REST route behind it.

On this page

The OpenWAF MCP server has 21 read tools and 23 write tools. Each one calls an OpenWAF API route with your credential, so it can do exactly what that credential can do through the API, nothing more.

Zones are named by domain (example.com) or by id; records and rules by the id that list_records and list_rules return. Every result comes as a short text summary plus the full data as JSON (structuredContent, with the same shape as the REST response).

Read tools

Every role, readonly included. In the routes, … stands for /v1/orgs/{org}/zones/{zone} or the organization's path.

ToolWhat it doesREST route
list_zonesVisible zones: status, DNS mode, name servers or CNAME target, client, versionGET …/zones
get_zoneZone, current version, delegation or TXT verification status, and edge settingsGET …/zones/{z}, …/delegation, …/edge
list_recordsDNS records with their idsGET …/records
list_rulesEdge rules (IP, country, WAF exceptions, rate limits)GET …/rules
list_certificatesCertificates and TLS status of each siteGET …/certs
zone_historyConfiguration versions (also of a deleted zone, by id)GET …/versions
zone_diffDifferences between two versions (by default, the current one against the previous one)GET …/diff
zone_propagationVersion applied by each edge nodeGET …/propagation
zone_hostsExternal zones: whether each proxied name points at the edgeGET …/hosts
email_checkThe zone's mail in the public DNS: MX, SPF (nested lookups), DKIM, DMARC, proxied names, conflictsGET …/email/check
audit_logAudit log (admin, or tech limited to a client)GET …/audit
zone_usageDaily traffic: requests, blocked requests, bytes, DNS queriesGET …/usage
rum_reportReal-user Core Web Vitals: p75 with its rating, band split, previous period, LCP parts, breakdown and worst elementsGET …/rum/report
ai_agents_reportAI agents on the zone, by view: overview, crawlers, spoofers, optimization, signals, traps, bursts, endpoints, mcp or eventsGET …/ai-agents/*
ai_agents_catalogAI bot catalog: operator, category, verification methods, version and state of each sourceGET …/ai-agents/catalog
list_clientsThe agency's clients and their number of zonesGET …/clients
effective_configThe merged configuration the edge receives for one nameGET …/hosts/{host}/effective
list_origin_certsCertificates issued by the OpenWAF Origin CA: names, key type, serial, expiry and status (never keys)GET …/origin-certs
origin_tls_statusTLS to the origin of each proxied name: mode, verified name, mTLS, what the control plane sees, and 525/526 errors in 24 hGET …/origin-tls/status
egress_statusThe organization's AI egress: whether it is on, targets with their credential fingerprint, and agentsGET …/egress, …/egress/targets, …/egress/agents
egress_eventsCalls from your own agents that the egress gateway rejectedGET …/egress/events

Write tools

Role tech or higher; the egress tools need admin. A readonly credential does not see these in tools/list at all.

ToolWhat it doesRoleREST route
add_zoneAdd a zone, mode delegated or externaltechPOST …/zones
create_recordCreate a DNS recordtechPOST …/records
update_recordChange fields of a recordtechPATCH …/records/{id}
delete_recordDestructive: delete a recordtechDELETE …/records/{id}
apply_records_batchCreate, change and delete records in one version (destructive when it deletes)techPOST …/records/batch
update_settingsEdge settings (WAF mode and level, rate limit, origin, HSTS, access gate, redirects, cache, 103 Early Hints, RUM, per-path rate_rules…); with host, that name's own settingstechPATCH …/edge
ai_agents_settingsRead the ai_agents settings of the zone or a name; with patch or template, change themtechGET/PATCH …/edge
agent_readiness_scanScan now how ready a name is for AI agents (once per name per minute); changes no configurationtechPOST …/agent-readiness/scan
add_ruleAdd an edge rule; hosts limits it to those namestechPOST …/rules
remove_ruleDestructive: remove a ruletechDELETE …/rules/{id}
revert_zoneDestructive: restore an earlier version as a new versiontechPOST …/revert
check_zoneCheck the delegation or the verification TXT now (no reason or confirmation)techPOST …/delegation/check
delete_zoneDestructive: delete the zonetechDELETE …/zones/{z}
purge_cachePurge the edge cache: exactly one of purge_everything, files, prefixes, hosts or tagstechPOST …/cache/purge
create_origin_certIssue an OpenWAF Origin CA certificate for names of the zone; a generated key is returned only in that response, or send a csrtechPOST …/origin-certs
revoke_origin_certDestructive: revoke an origin certificatetechDELETE …/origin-certs/{id}
egress_create_agentCreate an egress agent; returns its placeholder token onceadminPOST …/egress/agents
egress_update_agentChange an agent's description, targets, inspection or disabledadminPATCH …/egress/agents/{id}
egress_rotate_tokenDestructive: new token (shown once); the old one stops workingadminPOST …/egress/agents/{id}/rotate-token
egress_delete_agentDestructive: delete an agentadminDELETE …/egress/agents/{id}
egress_add_targetAdd your own https:// target with a public DNS nameadminPOST …/egress/targets
egress_remove_targetDestructive: delete your own target and its credential (not while an agent uses it)adminDELETE …/egress/targets/{t}
egress_remove_credentialDestructive: delete a target's provider keyadminDELETE …/egress/targets/{t}/credential

Destructive tools say so in their description and carry the destructiveHint annotation; read tools carry readOnlyHint.

Configuration writes and the rest

Writes that change the zone's configuration create a new version and follow the simulate → confirm protocol with expected_version, described in making changes. A few tools are not versioned configuration and work differently:

  • check_zone and agent_readiness_scan change no configuration: no reason, no confirmation.
  • add_zone has no previous version: it is confirmed without expected_version.
  • purge_cache, create_origin_cert, revoke_origin_cert and the egress tools: confirm=false checks and shows what would happen, confirm=true does it, without expected_version. They stay in the audit log.

Lite profile

The full tool list costs the assistant context in every conversation. With ?profile=lite the server lists only discovery tools, a read-only code mode and the everyday reads, and every other tool is still callable by name. See OAuth and tokens.

Last updated:

↑↓ to navigate↵ to openesc to close