Skip to main content
Glama
crunchtools

mcp-cloudflare-crunchtools

by crunchtools

MCP Cloudflare CrunchTools

Ein sicherer MCP-Server (Model Context Protocol) für Cloudflare DNS, Transform Rules, Page Rules und Cache-Verwaltung.

Übersicht

Dieser MCP-Server wurde entwickelt, um:

  • Standardmäßig sicher – Umfassende Bedrohungsmodellierung, Eingabevalidierung und Token-Schutz

  • Keine Drittanbieter-Dienste – Läuft lokal über stdio, Ihr API-Token verlässt nie Ihren Rechner

  • Plattformübergreifend – Funktioniert unter Linux, macOS und Windows

  • Automatisch aktualisiert – GitHub Actions überwachen CVEs und aktualisieren Abhängigkeiten

  • Containerisiert – Verfügbar unter quay.io/crunchtools/mcp-cloudflare, basierend auf dem Hummingbird Python-Basisimage

Related MCP server: cloudflare-dns-mcp-server

Namenskonvention

Komponente

Name

GitHub-Repository

crunchtools/mcp-cloudflare

Container

quay.io/crunchtools/mcp-cloudflare

Python-Paket (PyPI)

mcp-cloudflare-crunchtools

CLI-Befehl

mcp-cloudflare-crunchtools

Modulimport

mcp_cloudflare_crunchtools

Warum Hummingbird?

Das Container-Image basiert auf dem Hummingbird Python-Basisimage von Project Hummingbird, das Folgendes bietet:

  • Minimale CVE-Exposition – Hummingbird-Images werden mit einem minimalen Paketsatz erstellt, wodurch die Angriffsfläche im Vergleich zu Allzweck-Images drastisch reduziert wird

  • Regelmäßige Updates – Sicherheitspatches werden zeitnah angewendet, wodurch die CVE-Anzahl niedrig bleibt

  • Für Python optimiert – Vorkonfigurierte Python-Umgebung mit uv-Paketmanager für schnelle, reproduzierbare Builds

  • Produktionsreif – Entwickelt für Produktionsworkloads mit ordnungsgemäßer Signalverarbeitung und Nicht-Root-Benutzerstandards

Das bedeutet, dass Ihr MCP-Server in einer gehärteten Umgebung mit weniger Schwachstellen läuft als typische Python-Container-Images.

Funktionen

Zonenverwaltung (2 Tools)

  • list_zones – Listet alle Zonen auf, die für Ihr API-Token zugänglich sind

  • get_zone – Ruft Zonendetails anhand von ID oder Domainname ab

DNS-Einträge (5 Tools)

  • list_dns_records – Listet DNS-Einträge mit Filterung auf

  • get_dns_record – Ruft einen einzelnen DNS-Eintrag ab

  • create_dns_record – Erstellt A-, AAAA-, CNAME-, MX-, TXT-, NS-, SRV- und CAA-Einträge

  • update_dns_record – Aktualisiert vorhandene Einträge

  • delete_dns_record – Löscht Einträge

Transform Rules (6 Tools)

  • list_request_header_rules / set_request_header_rules – Ändert Anforderungsheader

  • list_response_header_rules / set_response_header_rules – Ändert Antwortheader

  • list_url_rewrite_rules / set_url_rewrite_rules – URL-Pfad-/Abfrage-Umschreibungen

Page Rules (4 Tools)

  • list_page_rules – Listet alle Page Rules auf

  • create_page_rule – Erstellt Weiterleitungen, Cache-Einstellungen, SSL-Modi

  • update_page_rule – Ändert vorhandene Regeln

  • delete_page_rule – Entfernt Regeln

Cache-Verwaltung (1 Tool)

  • purge_cache – Leert nach URL, Tag, Host, Präfix oder alles

Installation

Mit uvx (empfohlen)

uvx mcp-cloudflare-crunchtools

Mit pip

pip install mcp-cloudflare-crunchtools

Mit Container

podman run -e CLOUDFLARE_API_TOKEN=your_token \
    quay.io/crunchtools/mcp-cloudflare

Konfiguration

Erstellen eines Cloudflare-API-Tokens

  1. Navigieren Sie zu API-Tokens

  2. Token-Namen konfigurieren

    • Geben Sie ein: mcp-cloudflare-crunchtools

  3. Berechtigungen konfigurieren

    Der Abschnitt "Permissions" hat drei Dropdowns pro Zeile:

    • Erstes Dropdown: Ressourcentyp (Account oder Zone)

    • Zweites Dropdown: Spezifische Berechtigungskategorie

    • Drittes Dropdown: Zugriffsstufe (Read oder Edit)

    Klicken Sie auf "+ Add more", um jede Berechtigungszeile hinzuzufügen. Für die vollständige Verwaltung fügen Sie hinzu:

    Ressource

    Berechtigung

    Zugriff

    Zone

    Zone

    Read

    Zone

    DNS

    Edit

    Zone

    Page Rules

    Edit

    Zone

    Transform Rules

    Edit

    Zone

    Cache Purge

    Purge

  4. Zonenressourcen konfigurieren

    • Erstes Dropdown: Wählen Sie "Include"

    • Zweites Dropdown: Wählen Sie "All zones" oder "Specific zone"

  5. Client-IP-Adressfilterung konfigurieren (optional)

    • Klicken Sie auf die Schaltfläche "Use my IP", um das Token auf Ihre aktuelle IP zu beschränken

  6. Token erstellen und kopieren

    • Klicken Sie auf "Continue to summary" → "Create Token"

    • WICHTIG: Kopieren Sie das Token sofort – es wird nur einmal angezeigt!

Zu Claude Code hinzufügen

claude mcp add mcp-cloudflare-crunchtools \
    --env CLOUDFLARE_API_TOKEN=your_token_here \
    -- uvx mcp-cloudflare-crunchtools

Oder für die Container-Version:

claude mcp add mcp-cloudflare-crunchtools \
    --env CLOUDFLARE_API_TOKEN=your_token_here \
    -- podman run -i --rm -e CLOUDFLARE_API_TOKEN quay.io/crunchtools/mcp-cloudflare

Berechtigungssätze nach Anwendungsfall

Schreibgeschützt (nur Anzeigen)

Ressource

Berechtigung

Zugriff

Zone

Zone

Read

Zone

DNS

Read

Nur DNS-Verwaltung

Ressource

Berechtigung

Zugriff

Zone

Zone

Read

Zone

DNS

Edit

Vollständige Verwaltung (alle Funktionen)

Ressource

Berechtigung

Zugriff

Zone

Zone

Read

Zone

DNS

Edit

Zone

Page Rules

Edit

Zone

Transform Rules

Edit

Zone

Cache Purge

Purge

Anwendungsbeispiele

Ihre Zonen auflisten

User: List my Cloudflare zones
Assistant: [calls list_zones]

Einen DNS-Eintrag erstellen

User: Create an A record for www.example.com pointing to 192.168.1.1
Assistant: [calls create_dns_record with type=A, name=www, content=192.168.1.1]

Sicherheitsheader hinzufügen

User: Add X-Content-Type-Options: nosniff to all responses for zone abc123...
Assistant: [calls set_response_header_rules with appropriate rule]

Cache leeren

User: Purge the cache for https://example.com/styles.css
Assistant: [calls purge_cache with files=["https://example.com/styles.css"]]

Sicherheit

Dieser Server wurde mit Sicherheit als Hauptanliegen entwickelt. Siehe SECURITY.md für:

  • Bedrohungsmodell und Angriffsvektoren

  • Defense-in-Depth-Architektur

  • Best Practices für die Token-Behandlung

  • Regeln für die Eingabevalidierung

  • Audit-Protokollierung

Wichtige Sicherheitsfunktionen

  1. Token-Schutz

    • Gespeichert als SecretStr (wird nie versehentlich protokolliert)

    • Nur als Umgebungsvariable (nie in Dateien oder Argumenten)

    • Aus allen Fehlermeldungen bereinigt

  2. Eingabevalidierung

    • Pydantic-Modelle für alle Eingaben

    • Whitelist für Eintragstypen und Aktionen

    • Strenge Formatvalidierung für IDs

  3. API-Härtung

    • Fest codierte API-Basis-URL (verhindert SSRF)

    • TLS-Zertifikatsvalidierung

    • Anforderungs-Timeouts

    • Antwortgrößenbegrenzungen

  4. Automatisiertes CVE-Scannen

    • GitHub Actions scannen Abhängigkeiten wöchentlich

    • Automatische PRs für Sicherheitsupdates

    • Dependabot-Warnungen aktiviert

Entwicklung

Einrichtung

git clone https://github.com/crunchtools/mcp-cloudflare.git
cd mcp-cloudflare
uv sync

Tests ausführen

uv run pytest

Lint und Typprüfung

uv run ruff check src tests
uv run mypy src

Container erstellen

podman build -t mcp-cloudflare .

Lizenz

AGPL-3.0-or-later

Mitwirken

Beiträge sind willkommen! Bitte lesen Sie SECURITY.md, bevor Sie sicherheitsrelevante Änderungen einreichen.

Available Tools

26 tools
create_dns_record_toolA

Create a new DNS record.

Args: zone_id: Zone ID (32-character hex string) type: Record type (A, AAAA, CNAME, MX, TXT, NS, SRV, CAA) name: Record name (e.g., www, @, subdomain.example.com) content: Record content (IP address, target domain, etc.) ttl: TTL in seconds, 1 = auto (default: 1) proxied: Proxy through Cloudflare (default: false) priority: Priority for MX/SRV records comment: Optional comment

Returns: Created DNS record details

ParametersJSON Schema
NameRequiredDescriptionDefault
ttlNo
nameYes
typeYes
commentNo
contentYes
proxiedNo
zone_idYes
priorityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden. It reveals that TTL 1 means auto and that records can be proxied, but says nothing about required permissions, whether creation fails or overwrites on duplicate names, or side effects on live traffic — significant gaps for a mutating tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The args-style layout is front-loaded with the purpose and scannable per-parameter. It is slightly verbose (the return line is redundant given the output schema) but nothing is misplaced.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter mutation tool, the parameter space is fully covered and the output schema covers returns. The only missing piece is behavioral context (auth/permissions, failure modes) that would matter for a write operation with no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description documents all 8 parameters with formats, valid values, and defaults: hex zone_id, the full record-type enum, name examples, TTL auto meaning, and MX/SRV-specific priority. This compensates fully for the empty schema and would be hard to call correctly without it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a new DNS record') with no ambiguity. Against siblings like list_dns_records_tool, get_dns_record_tool, update_dns_record_tool, and delete_dns_record_tool, the create operation is immediately distinguishable by both name and description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives such as update_dns_record_tool for modifying an existing record. Usage context is only weakly implied by the verb 'Create'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_page_rule_toolB

Create a new page rule.

Args: zone_id: Zone ID (32-character hex string) targets: URL pattern targets actions: Page rule actions priority: Rule priority 1-1000 (default: 1) status: active or disabled (default: active)

Returns: Created page rule details

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoactive
actionsYes
targetsYes
zone_idYes
priorityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it discloses little behavior beyond a mutation. It does not mention required permissions, whether creation conflicts with existing matching rules, idempotency, or zone-scoping constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is front-loaded with the purpose sentence, then a clean Args/Returns layout with one line per parameter. Every line earns its place, though the Returns section is partly redundant given the output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The presence of an output schema means return values need not be explained, and the Args block covers the 0%-coverage schema reasonably. Still, for an unannotated mutation tool it omits permission requirements, conflict behavior with existing rules, and error/rollback characteristics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: it documents all five parameters, including the 32-character hex format for zone_id and the semantic role of targets (URL patterns) and actions. The defaults for priority and status duplicate the schema, but the format and meaning details are genuinely additive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Create a new page rule'), which cleanly distinguishes it from update_page_rule_tool and delete_page_rule_tool by operation. However, it does not differentiate scope or behavior from siblings like list_page_rules_tool beyond the verb itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives. The only implicit usage signal is the verb 'Create', which the name already supplies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_waf_rule_toolA

Create a new WAF custom rule.

Free plans support up to 5 custom rules. Provide either zone_id or zone_name, not both.

Args: zone_id: Zone ID (32-character hex string) zone_name: Zone name (domain like example.com) expression: Cloudflare filter expression (e.g., '(http.request.uri.path contains "xmlrpc.php")') action: Action to take (managed_challenge, block, js_challenge, challenge, skip, log) description: Human-readable description of the rule enabled: Whether the rule is enabled (default: true)

Returns: Created rule details

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNomanaged_challenge
enabledNo
zone_idNo
zone_nameNo
expressionNo
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the free-plan rule cap, the either/or zone identifier constraint, and the enabled default, which is meaningful context. However, it omits permission requirements, whether the rule is created enabled/attached immediately, and validation failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then constraints, then a clean Args list. Every sentence earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a create tool with an output schema (so return values need not be described), it covers purpose, limits, and all parameters adequately. The main gap is auth/permission context and post-creation behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it documents all six parameters including zone_id format (32-char hex), zone_name format (domain), the action enum values, the enabled default, and an example filter expression. It adds real value beyond the bare schema, though it could cover expression syntax more fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a new WAF custom rule'), which cleanly distinguishes it from the sibling update_waf_rule_tool, delete_waf_rule_tool, and list_waf_rules_tool. An agent can select it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides useful operational constraints — the free-plan limit of 5 custom rules and the mutual exclusivity of zone_id vs zone_name — but never says when to prefer this over the sibling update/delete tools or what prerequisites (plan tier, permissions) are needed. Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_dns_record_toolB

Delete a DNS record.

Args: zone_id: Zone ID (32-character hex string) record_id: DNS record ID (32-character hex string)

Returns: Deletion confirmation

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idYes
record_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden for a destructive operation. It mentions a 'Deletion confirmation' return but says nothing about irreversibility, required permissions, or whether the deletion is immediate versus propagated — critical for a delete tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, then compact Args and Returns blocks. No filler, though the Args/Returns scaffolding is slightly verbose relative to the tiny content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so the return explanation is not needed and the 'Deletion confirmation' line is redundant but harmless. However, for a destructive tool with zero annotations, the description should disclose irreversibility or auth expectations, which it does not.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: both zone_id and record_id are documented as 32-character hex strings, a format constraint absent from the schema. This adds genuine caller value, though it omits payload/query placement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Delete a DNS record'), which distinguishes it from the many sibling delete_* tools on other resources. It does not explicitly name which sibling it complements (e.g., create_dns_record_tool / update_dns_record_tool), but the resource-specific verb is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus update_dns_record_tool or delete_waf_rule_tool, no prerequisites, and no mention that the record must already exist. Usage is only implied by the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_page_rule_toolC

Delete a page rule.

Args: zone_id: Zone ID (32-character hex string) rule_id: Page rule ID (32-character hex string)

Returns: Deletion confirmation

ParametersJSON Schema
NameRequiredDescriptionDefault
rule_idYes
zone_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden of behavioral disclosure for a destructive mutation. It says nothing about irreversibility, required permissions/API token scopes, idempotency, or error behavior when the rule_id is unknown. 'Deletion confirmation' is the only behavioral hint and it is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the operation in the first sentence, then parameter formats and return value. The Args/Returns scaffolding is boilerplate, but nothing is padded and it reads quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is low-complexity (2 required params, no nesting) and an output schema exists, so return values need not be explained. The missing safety and permission context for an irreversible delete keeps it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does partially by documenting both params and their 32-character hex format. It adds no meaning about how ids are obtained (e.g., from list_page_rules_tool) or whether zone_id and rule_id must belong to the same account.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Delete) and resource (page rule), which cleanly separates it from create_page_rule_tool, update_page_rule_tool, and list_page_rules_tool. It does not, however, explicitly reference any sibling or scoping condition, so it sits at clear-but-undifferentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 versus updating or listing page rules, no prerequisite checks, and no note that the rule must already exist. An agent must infer everything from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_waf_rule_toolB

Delete a WAF custom rule.

Provide either zone_id or zone_name, not both.

Args: rule_id: Rule ID (32-character hex string) zone_id: Zone ID (32-character hex string) zone_name: Zone name (domain like example.com)

Returns: Deletion confirmation

ParametersJSON Schema
NameRequiredDescriptionDefault
rule_idYes
zone_idNo
zone_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It discloses only a terse "Deletion confirmation" return and stays silent on whether the deletion is permanent/irreversible, what permissions or authorization are needed, and whether the rule stops enforcing traffic immediately. For a destructive operation with zero annotation coverage this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the one-line purpose, then the exclusivity constraint, then Args and Returns blocks. Each section is short and earns its place; the Args/Returns scaffolding is slightly formulaic but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so explaining return values is not required, yet the description still notes "Deletion confirmation" (harmless). The main deficiency is behavioral: for a destructive, annotation-free tool the description should at minimum signal permanence or required permissions. Parameter and identity handling are otherwise adequately covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: rule_id and zone_id are described as 32-character hex strings and zone_name as a domain like example.com, plus the mutual-exclusivity rule between zone_id and zone_name. It omits whether zone_id/zone_name are optional when a rule_id uniquely resolves, but the formats are genuinely additive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Delete a WAF custom rule") that clearly distinguishes it from the delete_page_rule_tool/delete_dns_record_tool siblings and from its WAF counterparts create_waf_rule_tool/update_waf_rule_tool/list_waf_rules_tool. It does not name an alternative sibling explicitly, but the WAF-rule scope is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The line "Provide either zone_id or zone_name, not both" is a genuine invocation constraint the agent needs. However, there is no guidance on when to reach for this tool versus list_waf_rules_tool or update_waf_rule_tool, nor any preconditions. Usage is implied by the destroy verb rather than explained.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_dns_record_toolB

Get a single DNS record by ID.

Args: zone_id: Zone ID (32-character hex string) record_id: DNS record ID (32-character hex string)

Returns: DNS record details

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idYes
record_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the disclosure burden. 'Get' clearly implies a non-mutating read, and it notes that DNS record details are returned, but it says nothing about auth/permission requirements, error behavior for an unknown ID, or read consistency. Adequate for a simple read, but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line purpose followed by a tidy Args/Returns block; every line carries information. Slightly formulaic structure but no wasted prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description reasonably omits return-field detail. Both required params are documented with formats, which is what an agent needs to invoke it. The only gap is guidance on choosing this tool over list_dns_records_tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description is the only source of parameter meaning – and it documents both params with a format constraint ('32-character hex string') that the schema itself lacks. That is real value beyond the schema, though it stops short of distinguishing zone_id from record_id scoping.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a single DNS record by ID'), which clearly separates it from list_dns_records_tool and the create/update/delete DNS siblings. It does not, however, name an alternative or scope condition, so differentiation is implied via the name rather than spelled out.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance. An agent must infer that this tool is for fetching one record when it already holds a record_id, versus list_dns_records_tool when it does not. Nothing in the description states prerequisites or routing logic.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_security_events_toolA

Get security/firewall events grouped by action and source.

Provide either zone_id or zone_name, not both.

Args: zone_id: Zone ID (32-character hex string) zone_name: Zone name (domain like example.com) since: Start date ISO format (default: 30 days ago) until: End date ISO format (default: today) limit: Number of results (default: 20)

Returns: Security events with action, country, source, and count

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sinceNo
untilNo
zone_idNo
zone_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses defaults (30 days ago, today, limit 20) and the grouping behavior, which is helpful, but says nothing about whether the call is read-only, permission requirements, or rate limits. Adequate but with clear gaps for a no-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose sentence, then a compact constraint, then Args and Returns blocks. Every line is relevant; the Args listing slightly restates schema field names but adds type/default meaning. Well organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-param, zero-annotation read tool, the definition covers purpose, exclusivity constraint, parameter meaning, defaults, and return shape. The Returns section is partly redundant given the output schema exists, but nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: it documents all five parameters with type hints (32-char hex zone ID, domain-style zone name, ISO dates) and defaults. Enum/format nuances (e.g., accepted ISO variants) are not covered, but the semantics added are substantial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (security/firewall events) plus the aggregation dimension (grouped by action and source). This distinguishes it from analytics siblings like get_zone_analytics_tool and get_traffic_by_country_tool, though it doesn't explicitly name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides one clear constraint — 'Provide either zone_id or zone_name, not both' — which is genuinely useful invocation guidance. However, it gives no guidance on when to choose this tool over sibling analytics/reporting tools, so usage context is only partially covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_top_pages_toolA

Get top pages by request count.

Provide either zone_id or zone_name, not both.

Args: zone_id: Zone ID (32-character hex string) zone_name: Zone name (domain like example.com) since: Start date ISO format (default: 30 days ago) until: End date ISO format (default: today) limit: Number of results (default: 15)

Returns: Top pages with request counts and bandwidth

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sinceNo
untilNo
zone_idNo
zone_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does disclose the mutual-exclusion rule and the default retention window (30 days), which is useful. It stops short of stating auth requirements, rate limits, or error behavior when both or neither zone identifier is passed, so it only partially covers the gap left by absent annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, then the key constraint, then structured Args and Returns sections. The parameter lines duplicate defaults already present in the schema, but since the schema has zero descriptions this repetition is justified rather than wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the agent does not need return values spelled out, and the description provides a brief one anyway. It covers all parameters, defaults, and the exclusivity constraint; only edge-case behavior (neither identifier, invalid format) is unaddressed, which is a minor shortfall.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: it documents all five parameters with formats (32-char hex zone ID, domain-style zone name, ISO dates) and defaults. The one gap is that 'limit' is only described as 'Number of results' with no bounds or max, but overall this adds substantial meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get top pages by request count'), which cleanly distinguishes it from analytics siblings like get_zone_analytics_tool and get_traffic_by_country_tool. It does not, however, explicitly name or contrast against any sibling, which holds it below a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Provide either zone_id or zone_name, not both' constraint is genuine usage guidance about parameter exclusivity. However, it gives no guidance on when to prefer this tool over get_zone_analytics_tool or get_traffic_by_country_tool, and does not say what happens if neither identifier is supplied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_traffic_by_country_toolA

Get traffic breakdown by country.

Provide either zone_id or zone_name, not both.

Args: zone_id: Zone ID (32-character hex string) zone_name: Zone name (domain like example.com) since: Start date ISO format (default: 30 days ago) until: End date ISO format (default: today) limit: Number of countries (default: 20)

Returns: Country breakdown with request counts and bandwidth

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sinceNo
untilNo
zone_idNo
zone_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It implies a read via "Get" and usefully documents defaults (30 days ago, today, 20 countries) and the mutual exclusivity of zone_id/zone_name, but says nothing about permissions, rate limits, pagination of country results, or ordering. Adequate but thin for a zero-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the one-line purpose, then the mutual-exclusivity rule, then structured Args/Returns blocks. Every line is scannable and earns its place; minor redundancy between "default: 30 days ago" prose and the schema defaults, but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the brief Returns note is sufficient rather than required. For a parameterless-required, read-only analytics query the description covers invocation adequately; the only real gap is sibling/alternative guidance and any pagination or rate-limit behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description has to compensate and does: it documents every one of the five parameters including type hints (32-character hex zone ID, domain zone name, ISO date format) and the defaults for since/until/limit. This is meaningfully more than the bare schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Get traffic breakdown by country") that distinguishes it from analytics siblings like get_top_pages_tool and get_zone_analytics_tool by naming the grouping dimension. However, it never explicitly contrasts itself with get_zone_analytics_tool, so the differentiation is inferential.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete usage rule — "Provide either zone_id or zone_name, not both" — which prevents a real invocation error. It does not, however, say when to prefer this tool over get_zone_analytics_tool or get_top_pages_tool, so alternative routing is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_zone_analytics_toolA

Get zone traffic analytics summary.

Returns total requests, unique visitors, bandwidth, cache ratio, and status code breakdown for the given date range.

Provide either zone_id or zone_name, not both.

Args: zone_id: Zone ID (32-character hex string) zone_name: Zone name (domain like example.com) since: Start date ISO format (default: 30 days ago) until: End date ISO format (default: today)

Returns: Analytics summary with requests, bandwidth, visitors, and status codes

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNo
untilNo
zone_idNo
zone_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses the default date range behavior (30 days ago / today), which an agent needs to know, but never states that this is a read-only, non-mutating operation, nor any auth or rate-limit characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose and efficiently structured with Args/Returns sections. The final 'Returns:' block largely restates the opening paragraph, which is mild redundancy rather than harmful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description need not explain return shape, yet it still lists metrics, and it covers all parameters and defaults. The only real gap is the absence of any read-only/side-effect statement to substitute for missing annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: it documents all four parameters with formats (32-character hex string, domain like example.com, ISO date format) and default values, plus the either/or constraint that the schema does not express.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get zone traffic analytics summary') and enumerates the exact metrics returned (requests, visitors, bandwidth, cache ratio, status codes). This clearly separates it from analytics siblings like get_top_pages_tool and get_traffic_by_country_tool, which cover different dimensions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the mutual-exclusivity rule ('either zone_id or zone_name, not both') and documents the default date window. It gives clear context for calling the tool but does not name when to prefer alternative analytics siblings or state exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_zone_toolA

Get Cloudflare zone details by ID or name.

Provide either zone_id or zone_name, not both.

Args: zone_id: Zone ID (32-character hex string) zone_name: Zone name (domain like example.com)

Returns: Zone details

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idNo
zone_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden; 'Get' implies a safe read, and the exclusivity rule is useful behavioral context. It says nothing about permissions, error behavior when neither/both args are supplied, or rate limits, but the read nature is unambiguous.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then the key constraint, then compact Args entries — nothing padded. The 'Returns: Zone details' line is largely redundant given an output schema exists, but the overall size is well matched to a simple two-parameter lookup.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only lookup with an output schema, an agent has enough: which identifier to pass, that only one may be passed, and the accepted formats. Sibling routing and failure-mode behavior are the only real omissions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it states that zone_id is a 32-character hex string and zone_name is a domain like example.com, plus the either/or rule. Only the nullability/defaults remain undocumented, which is minor.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get Cloudflare zone details') plus the two lookup keys, so the agent knows exactly what it retrieves. It does not, however, explicitly differentiate itself from nearby siblings like list_zones_tool or get_zone_analytics_tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The mutual-exclusion rule ('Provide either zone_id or zone_name, not both') is a real usage constraint that prevents a bad call. But there is no guidance on when to prefer this tool over list_zones_tool (enumeration) or get_zone_analytics_tool (metrics), leaving sibling selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_dns_records_toolB

List DNS records for a Cloudflare zone.

Args: zone_id: Zone ID (32-character hex string) type: Filter by record type (A, AAAA, CNAME, MX, TXT, etc.) name: Filter by record name content: Filter by record content page: Page number (default: 1) per_page: Results per page, max 100 (default: 100)

Returns: List of DNS records with pagination info

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
pageNo
typeNo
contentNo
zone_idYes
per_pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses pagination behavior, the per_page ceiling of 100, and the default page size, which is real operational context. However it says nothing about authentication requirements, rate limits, or whether results are eventually consistent, leaving gaps for a no-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The Args/Returns layout is front-loaded with the one-line purpose followed by scannable parameter lines. It is appropriately sized for a six-parameter tool, with only minor redundancy between the filter parameters and the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be spelled out, and the description correctly just notes the list-with-pagination shape. Combined with complete parameter documentation, the definition is nearly sufficient, with the missing usage guidance and auth context being the only notable residue.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description is the only source of parameter meaning and it delivers for all six: zone_id as a 32-character hex string, type with concrete enum-like examples (A, AAAA, CNAME, MX, TXT), name and content filters, page default 1, and per_page max 100. It does not clarify filter combination or matching semantics (exact vs substring), which keeps it short of a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'List DNS records for a Cloudflare zone.' This cleanly separates it from single-record siblings like get_dns_record_tool, but it never names those alternatives explicitly, so the differentiation is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of what this tool does versus get_dns_record_tool or list_zones_tool, and no preconditions such as required API token scopes. A user must infer from the filters that this is the broad enumeration call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_page_rules_toolB

List all page rules for a zone.

Args: zone_id: Zone ID (32-character hex string) status: Filter by status (active, disabled) order: Sort order (status, priority)

Returns: List of page rules

ParametersJSON Schema
NameRequiredDescriptionDefault
orderNopriority
statusNo
zone_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it does relatively little: it implies a read via 'List' but never states read-only safety, required permissions, pagination/limit behavior, or rate limits. For a list endpoint in a large API surface with zero annotation coverage, those omissions are material.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose followed by compact Args/Returns blocks with no filler. The structure is scannable and appropriately sized for a three-parameter list tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and parameters are covered. What is missing is behavioral context an agent would want: pagination behavior for a potentially large list, ordering defaults, and any read-safety signal absent from annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: it names each of the three parameters and supplies the enum-ish values the schema lacks (status: active/disabled; order: status/priority) plus the zone_id format (32-character hex string). The only gap is not stating which parameter is required or the default sort behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'List all page rules for a zone.' The resource is distinct from siblings like list_response_header_rules_tool and list_url_rewrite_rules_tool, so an agent can identify it as the page-rules lister. However, it never explicitly contrasts itself with those sibling list tools, so it lands at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives among the many sibling list tools (response header rules, request header rules, URL rewrite rules). Usage is only implied by the verb 'List.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_request_header_rules_toolB

List request header modification rules.

Args: zone_id: Zone ID (32-character hex string)

Returns: Ruleset with request header modification rules

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the burden; 'List' reasonably implies a non-destructive read, and it does disclose the return shape. However, it says nothing about permissions, rate limits, or pagination, which is a gap for a listing tool whose safety profile is only implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then a compact Args/Returns structure. Slightly verbose section headers for a single-parameter tool, but every line is informative and nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with an output schema already present, the description covers the parameter and the general return nature. The main omission is any usage/alternative framing, but nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (the schema only declares type string), so the description must compensate, and it does by documenting the single parameter as a 'Zone ID (32-character hex string)', adding format constraints the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and resource ('request header modification rules'), which is unambiguous. It does not explicitly name the write counterpart (set_request_header_rules_tool) or the sibling list_response_header_rules_tool, so it differentiates only implicitly through the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus set_request_header_rules_tool or list_response_header_rules_tool. There is no mention of prerequisites, scope, or when a list is preferable to a get/set call.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_response_header_rules_toolB

List response header modification rules.

Args: zone_id: Zone ID (32-character hex string)

Returns: Ruleset with response header modification rules

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It mentions the return payload type but omits read-only safety, authentication requirements, pagination behavior, and rate limits; only 'List' weakly implies a non-destructive read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very brief and front-loaded: it states the action first, then input and output details in compact Args/Returns sections. Every sentence earns its place and there is no redundant fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with an output schema, the description covers the input format and return type. But with no annotations and many related header-rule siblings, it omits routing guidance such as list vs. set vs. request-header variants, leaving a selection gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single parameter is documented only as type string. The description adds the important format constraint '32-character hex string' and identifies it as a Zone ID, which meaningfully compensates for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('response header modification rules'), and the 'response' qualifier implicitly separates it from the sibling list_request_header_rules_tool. However, it does not explicitly name or contrast siblings, and the phrasing largely restates the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no alternatives, and no prerequisites are provided. 'List' implies a read operation, but the description does not say when to choose this over list_request_header_rules_tool or set_response_header_rules_tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_url_rewrite_rules_toolC

List URL rewrite rules.

Args: zone_id: Zone ID (32-character hex string)

Returns: Ruleset with URL rewrite rules

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses only the return shape ('Ruleset with URL rewrite rules') and implies a safe read via 'List'; it says nothing about permissions, pagination, or whether an empty result is possible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action, followed by tight Args/Returns sections and no filler. It is appropriately sized for a one-parameter read tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not detail return values, and it correctly avoids doing so. What is missing is behavior the schema cannot express: auth requirements, pagination, and the relationship to the set/update siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does add real value by specifying zone_id as a '32-character hex string'. However, that is the entirety of the parameter documentation, leaving format errors and constraints to be discovered by trial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('List URL rewrite rules'), which clearly separates it from the sibling set_url_rewrite_rules_tool. It stops short of explicitly naming that sibling or the resource scope (zone-level), so sibling differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of the alternative set_url_rewrite_rules_tool for modifying rules, and no prerequisites. A reader can infer from the name that this is the read counterpart, but the description supplies nothing explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_waf_rules_toolA

List all WAF custom rules for a zone.

Provide either zone_id or zone_name, not both.

Args: zone_id: Zone ID (32-character hex string) zone_name: Zone name (domain like example.com)

Returns: List of WAF rules with their expressions, actions, and status

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idNo
zone_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden. It discloses the read-only nature ("List"), the zone-scoping, the parameter exclusivity rule, and the shape of the returned data (expressions, actions, status). It says nothing about pagination, permissions, or rate limits, which are the remaining gaps for a list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first line before the Args/Returns details, and the whole thing is short. The Args block partially restates the schema's property names, which is mild redundancy, but it adds value since the schema has no descriptions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with an output schema present, the description covers purpose, parameter semantics, and mutual exclusivity adequately. The only left-open items are error behavior when both/neither zone argument is given and whether results are paginated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it largely does: it documents both parameters with concrete format hints (32-character hex ID, domain like example.com) and states that they are mutually exclusive. It stops short of saying what happens if both or neither are provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("List"), a specific resource ("WAF custom rules"), and the scope ("for a zone"). The resource is narrow enough to separate it from the other list_* siblings (page rules, header rules, DNS records) without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a real usage constraint — "Provide either zone_id or zone_name, not both" — but never says when to prefer this tool over alternatives or when listing is the wrong operation. Usage is implied rather than explicitly guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_zones_toolA

List all Cloudflare zones accessible by the API token.

Args: name: Filter by zone name (domain) status: Filter by status (active, pending, initializing, moved, deleted) page: Page number for pagination (default: 1) per_page: Results per page, max 50 (default: 50)

Returns: List of zones with pagination info

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
pageNo
statusNo
per_pageNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It usefully discloses token-scoped visibility and pagination bounds (max 50, default per_page), but says nothing about read-only safety, rate limits, or how pagination interacts with filters. Adequate but thin for a zero-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in one sentence, then Args and Returns blocks. The Returns block partially duplicates the output schema, but the overall structure is tight and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the Returns note is optional rather than required, and all four parameters are covered. Combined with the front-loaded scoping, an agent has enough to invoke this correctly; only deeper auth/rate-limit behavior is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: each of the four parameters is documented, including the meaningful status enum values (active, pending, initializing, moved, deleted) and the per_page max of 50 that the bare schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all Cloudflare zones') and scopes it to what the API token can access. It doesn't explicitly distinguish itself from the sibling get_zone_tool (singular retrieval), though the listing scope is implicit in the verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the list/collection framing and the filter parameters, but the description never says when to reach for this versus get_zone_tool or the various rule-listing siblings. No exclusions or prerequisites are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

purge_cache_toolA

Purge cached content from Cloudflare's edge.

Use one of: purge_everything, files, tags, hosts, or prefixes. tags, hosts, and prefixes require Enterprise plan.

Args: zone_id: Zone ID (32-character hex string) purge_everything: Purge all cached content files: URLs to purge (max 30) tags: Cache tags to purge (Enterprise) hosts: Hostnames to purge (Enterprise) prefixes: URL prefixes to purge (Enterprise)

Returns: Purge operation result

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
filesNo
hostsNo
zone_idYes
prefixesNo
purge_everythingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses plan gating (tags/hosts/prefixes require Enterprise) and a limit (files max 30), which is real behavioral context. However, it omits the most important trait for a purge operation: that it is destructive/irreversible and may require specific cache-purge permissions or hit rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded in one sentence, followed by a compact modal-selection rule, then Args/Returns blocks. Every line carries information; the only mild redundancy is repeating '(Enterprise)' on three lines.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, and the description covers selection modes, plan constraints, and per-parameter meaning. The notable gap for a mutation tool with zero annotations is the absence of a destructiveness/permanence warning, which an agent needs before invoking a purge.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it largely does: each of the 6 parameters gets a one-line explanation, plus constraints like the 32-char hex format for zone_id and the max-30 limit for files. Only default/null behavior and whether modes can be combined are left unstated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Purge cached content from Cloudflare's edge'), which is concrete and immediately distinguishable from the unrelated siblings (WAF rules, DNS records, page rules). No ambiguity about what the tool operates on.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use one of: purge_everything, files, tags, hosts, or prefixes' tells the agent the purge modes are mutually exclusive alternatives, and the Enterprise-plan note tells it which modes are gated. It stops short of stating explicit when-not-to-use conditions or prerequisites beyond plan tier.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_request_header_rules_toolA

Set request header modification rules (replaces all existing rules).

Each rule should have:

  • expression: Filter expression (e.g., "true" for all requests)

  • description: Human-readable description

  • action: "rewrite"

  • action_parameters: {"headers": {"Header-Name": {...}}}

Args: zone_id: Zone ID (32-character hex string) rules: List of rule definitions

Returns: Updated ruleset

ParametersJSON Schema
NameRequiredDescriptionDefault
rulesYes
zone_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden — and it does disclose the critical destructive trait that all existing rules are replaced. It also sketches the per-rule structure (expression, description, action, action_parameters). It stops short of covering permissions, failure behavior, 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the action and its replace semantics, followed by structured rule anatomy. Some redundancy with the schema (and the 'Returns: Updated ruleset' line, given an output schema exists), but nothing seriously wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter mutation tool with no annotations and an output schema present, the description supplies the destructive-replace warning and the rule object shape an agent needs. Remaining gaps (auth, error modes) are modest.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: zone_id is documented as a 32-character hex string and the rules array is expanded into its four expected fields. This meaningfully exceeds the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Set request header modification rules') and adds a crucial scope qualifier ('replaces all existing rules'). It implicitly distinguishes itself from the response-header sibling, though it never names an alternative explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the 'replaces all existing rules' note tells the agent this is the write/replace path versus list_request_header_rules_tool, but there is no explicit when-to-use, when-not, or prerequisite guidance. Adequate but with clear gaps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_response_header_rules_toolA

Set response header modification rules (replaces all existing rules).

Each rule should have:

  • expression: Filter expression (e.g., "true" for all responses)

  • description: Human-readable description

  • action: "rewrite"

  • action_parameters: {"headers": {"Header-Name": {...}}}

Args: zone_id: Zone ID (32-character hex string) rules: List of rule definitions

Returns: Updated ruleset

ParametersJSON Schema
NameRequiredDescriptionDefault
rulesYes
zone_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it discloses the critical destructive trait that this call replaces ALL existing rules. It does not cover auth requirements, rate limits, or partial-failure semantics, but the disclosure of full overwrite is the most important behavioral fact here.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and the destructive replace note; the rule-shape bullets are dense and useful. The 'Args:'/'Returns: Updated ruleset' scaffolding is mildly redundant given the output schema exists, but overall the text is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter set tool with an output schema (so return values need not be described), the description covers the rule shape and the overwrite behavior adequately. It is only missing alternative-tool routing and auth prerequisites.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it does: it gives zone_id as a '32-character hex string' and enumerates the rule object fields (expression, description, action, action_parameters). The action_parameters shape is left as '{...}', which is the only gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Set) and resource (response header modification rules), and the parenthetical '(replaces all existing rules)' clarifies the operation's semantics. The resource word 'response header' distinguishes it from the sibling set_request_header_rules_tool and from list_response_header_rules_tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no explicit guidance on when to use this tool versus alternatives such as list_response_header_rules_tool or set_request_header_rules_tool. The replacement note is a behavioral fact, not usage routing, so an agent gains no when-to-use direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_url_rewrite_rules_toolA

Set URL rewrite rules (replaces all existing rules).

Each rule should have:

  • expression: Filter expression

  • description: Human-readable description

  • action: "rewrite"

  • action_parameters: {"uri": {"path": {"value": "..."}, "query": {"value": "..."}}}

Args: zone_id: Zone ID (32-character hex string) rules: List of rule definitions

Returns: Updated ruleset

ParametersJSON Schema
NameRequiredDescriptionDefault
rulesYes
zone_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses the destructive bulk-replace semantics, which is the key behavioral trait, but omits permission requirements, reversibility, and failure modes. Partial disclosure for a mutation tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the destructive replacement note, then documents rule shape and arguments compactly. Slightly verbose in the rule example, but every line earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter destructive tool with an output schema and no annotations, the description supplies the replacement behavior, the rule object structure, and the zone_id format. It leaves auth/permission context unstated, which is a minor gap given no annotation coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the rules parameter is an opaque array of generic objects, yet the description enumerates the expected rule fields (expression, description, action, action_parameters) with a nested example, and documents zone_id as a 32-character hex string. This adds substantial meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Set URL rewrite rules') and immediately clarifies the operation is a full replacement ('replaces all existing rules'). This distinguishes it from list_url_rewrite_rules_tool, though it does not explicitly name or contrast with sibling set_*_rules tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical 'replaces all existing rules' implies when this is appropriate versus incremental edits, but there is no explicit when-to-use guidance, no exclusions, and no reference to the sibling list or header-rule tools. Usage is inferable but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_dns_record_toolC

Update an existing DNS record.

Args: zone_id: Zone ID (32-character hex string) record_id: DNS record ID (32-character hex string) type: Record type (optional) name: Record name (optional) content: Record content (optional) ttl: TTL in seconds (optional) proxied: Proxy through Cloudflare (optional) priority: Priority (optional) comment: Comment (optional)

Returns: Updated DNS record details

ParametersJSON Schema
NameRequiredDescriptionDefault
ttlNo
nameNo
typeNo
commentNo
contentNo
proxiedNo
zone_idYes
priorityNo
record_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden for a mutation tool. It never states whether this is a partial or full replace, whether omitted optional fields are left untouched or cleared, what permissions are required, or whether the change is reversible. 'Returns: Updated DNS record details' adds nothing beyond the existing output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded one-line purpose, followed by a compact Args list and a Returns line. Given the 0% schema coverage, enumerating the parameters earns its space, though a few entries are pure name restatement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter mutation tool with no annotations, the definition covers the argument inventory and return shape (which is also covered by the output schema) but omits update semantics, permission requirements, and failure modes. It is minimally usable but leaves meaningful gaps for a write operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 9 parameters, so the arg list in the description is doing real work: it flags zone_id/record_id as 32-character hex strings, marks ttl as seconds, and identifies which fields are optional. However, entries like 'type: Record type (optional)' and 'priority: Priority (optional)' merely restate the parameter name and add no value over the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Update an existing DNS record.' An agent can distinguish it from create_dns_record_tool and delete_dns_record_tool by the verb alone. It does not explicitly name alternatives, but the CRUD sibling set makes the role obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 versus get_dns_record_tool, list_dns_records_tool, or create_dns_record_tool, nor any prerequisite or conflict conditions. The only cue is the domain-implied 'update', which the agent infers from the name rather than the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_page_rule_toolC

Update an existing page rule.

Args: zone_id: Zone ID (32-character hex string) rule_id: Page rule ID (32-character hex string) targets: URL patterns (optional) actions: Actions (optional) priority: Priority (optional) status: Status (optional)

Returns: Updated page rule details

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
actionsNo
rule_idYes
targetsNo
zone_idYes
priorityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral disclosure burden. It does not state whether the update is partial or full replacement, what happens to omitted fields, what permissions are required, or whether the operation is destructive. Only the return type is mentioned, and an output schema already exists for that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action, then organized into Args and Returns sections. It is appropriately sized, though the Returns line is redundant given the existing output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with six parameters, no annotations, and zero schema description coverage, the description is insufficient. It omits update semantics, permission requirements, and detailed parameter structure, leaving an agent without enough context to invoke the tool confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It lists all six parameters and adds format hints for zone_id and rule_id (32-character hex strings), but the complex array-of-object parameters 'targets' and 'actions' are described only as 'URL patterns' and 'Actions' with no structural guidance. It adds partial value over the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Update an existing page rule'), which clearly differentiates it from sibling create/delete/list page rule tools. There is no explicit naming of alternatives, but the 'existing' qualifier distinguishes it adequately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It only says 'Update an existing page rule' with no when-to-use guidance, prerequisites, or conditions under which one should choose this over create_page_rule_tool or delete_page_rule_tool. Usage context is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_waf_rule_toolA

Update an existing WAF custom rule.

Provide either zone_id or zone_name, not both.

Args: rule_id: Rule ID (32-character hex string) zone_id: Zone ID (32-character hex string) zone_name: Zone name (domain like example.com) expression: New filter expression (optional) action: New action (optional) description: New description (optional) enabled: Enable or disable the rule (optional)

Returns: Updated rule details

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNo
enabledNo
rule_idYes
zone_idNo
zone_nameNo
expressionNo
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. It usefully clarifies that updates are partial (only supplied fields change), but says nothing about permission/auth requirements, reversibility of changes, or side effects on an active WAF rule. The output schema covers the return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The one-line purpose plus mutually exclusive constraint is front-loaded, followed by a clean Args list. No wasted prose, though the Args block largely restates the schema structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema covering return values, the description only needs to cover invocation semantics, which it does for all parameters plus the zone constraint. It is missing only the permission/side-effect context an agent would want for a mutation tool with no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, and it does: all seven parameters are enumerated, ID formats are given (32-character hex for rule_id/zone_id, domain form for zone_name), and the zone_id/zone_name mutual exclusion is stated. The action/expression/enabled params get only 'New X (optional)', so it is not fully complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update an existing WAF custom rule'), which cleanly separates it from siblings like create_waf_rule_tool, delete_waf_rule_tool, and list_waf_rules_tool. It stops short of explicitly naming those siblings, so it stays just below a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Provide either zone_id or zone_name, not both' line gives real usage guidance for parameter selection, and the '(optional)' tags imply partial-update intent. However, there is no guidance on when to prefer this tool over alternatives or any prerequisites, leaving usage only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 26 tool updatesv0.5.1
    • Changedcreate_dns_record_tool9 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / comment / description
        Removed value: -"Optional comment"
      • removedInput schema / properties / content / description
        Removed value: -"Record content (IP address, target domain, etc.)"
      • removedInput schema / properties / name / description
        Removed value: -"Record name (e.g., www, @, subdomain.example.com)"
      • removedInput schema / properties / priority / description
        Removed value: -"Priority for MX/SRV records"
      • removedInput schema / properties / proxied / description
        Removed value: -"Proxy through Cloudflare (default: false)"
      • removedInput schema / properties / ttl / description
        Removed value: -"TTL in seconds, 1 = auto (default: 1)"
      • removedInput schema / properties / type / description
        Removed value: -"Record type (A, AAAA, CNAME, MX, TXT, NS, SRV, CAA)"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
    • Changedcreate_page_rule_tool6 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / actions / description
        Removed value: -"Page rule actions"
      • removedInput schema / properties / priority / description
        Removed value: -"Rule priority 1-1000 (default: 1)"
      • removedInput schema / properties / status / description
        Removed value: -"active or disabled (default: active)"
      • removedInput schema / properties / targets / description
        Removed value: -"URL pattern targets"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
    • Changedcreate_waf_rule_tool7 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / action / description
        Removed value: -"Action to take (managed_challenge, block, js_challenge,\nchallenge, skip, log)"
      • removedInput schema / properties / description / description
        Removed value: -"Human-readable description of the rule"
      • removedInput schema / properties / enabled / description
        Removed value: -"Whether the rule is enabled (default: true)"
      • removedInput schema / properties / expression / description
        Removed value: -"Cloudflare filter expression\n(e.g., '(http.request.uri.path contains \"xmlrpc.php\")')"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
      • removedInput schema / properties / zone_name / description
        Removed value: -"Zone name (domain like example.com)"
    • Changeddelete_dns_record_tool3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / record_id / description
        Removed value: -"DNS record ID (32-character hex string)"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
    • Changeddelete_page_rule_tool3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / rule_id / description
        Removed value: -"Page rule ID (32-character hex string)"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
    • Changeddelete_waf_rule_tool4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / rule_id / description
        Removed value: -"Rule ID (32-character hex string)"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
      • removedInput schema / properties / zone_name / description
        Removed value: -"Zone name (domain like example.com)"
    • Changedget_dns_record_tool3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / record_id / description
        Removed value: -"DNS record ID (32-character hex string)"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
    • Changedget_security_events_tool6 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / limit / description
        Removed value: -"Number of results (default: 20)"
      • removedInput schema / properties / since / description
        Removed value: -"Start date ISO format (default: 30 days ago)"
      • removedInput schema / properties / until / description
        Removed value: -"End date ISO format (default: today)"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
      • removedInput schema / properties / zone_name / description
        Removed value: -"Zone name (domain like example.com)"
    • Changedget_top_pages_tool6 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / limit / description
        Removed value: -"Number of results (default: 15)"
      • removedInput schema / properties / since / description
        Removed value: -"Start date ISO format (default: 30 days ago)"
      • removedInput schema / properties / until / description
        Removed value: -"End date ISO format (default: today)"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
      • removedInput schema / properties / zone_name / description
        Removed value: -"Zone name (domain like example.com)"
    • Changedget_traffic_by_country_tool6 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / limit / description
        Removed value: -"Number of countries (default: 20)"
      • removedInput schema / properties / since / description
        Removed value: -"Start date ISO format (default: 30 days ago)"
      • removedInput schema / properties / until / description
        Removed value: -"End date ISO format (default: today)"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
      • removedInput schema / properties / zone_name / description
        Removed value: -"Zone name (domain like example.com)"
    • Changedget_zone_analytics_tool5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / since / description
        Removed value: -"Start date ISO format (default: 30 days ago)"
      • removedInput schema / properties / until / description
        Removed value: -"End date ISO format (default: today)"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
      • removedInput schema / properties / zone_name / description
        Removed value: -"Zone name (domain like example.com)"
    • Changedget_zone_tool3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
      • removedInput schema / properties / zone_name / description
        Removed value: -"Zone name (domain like example.com)"
    • Changedlist_dns_records_tool7 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / content / description
        Removed value: -"Filter by record content"
      • removedInput schema / properties / name / description
        Removed value: -"Filter by record name"
      • removedInput schema / properties / page / description
        Removed value: -"Page number (default: 1)"
      • removedInput schema / properties / per_page / description
        Removed value: -"Results per page, max 100 (default: 100)"
      • removedInput schema / properties / type / description
        Removed value: -"Filter by record type (A, AAAA, CNAME, MX, TXT, etc.)"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
    • Changedlist_page_rules_tool4 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / order / description
        Removed value: -"Sort order (status, priority)"
      • removedInput schema / properties / status / description
        Removed value: -"Filter by status (active, disabled)"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
    • Changedlist_request_header_rules_tool2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
    • Changedlist_response_header_rules_tool2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
    • Changedlist_url_rewrite_rules_tool2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
    • Changedlist_waf_rules_tool3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
      • removedInput schema / properties / zone_name / description
        Removed value: -"Zone name (domain like example.com)"
    • Changedlist_zones_tool5 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / name / description
        Removed value: -"Filter by zone name (domain)"
      • removedInput schema / properties / page / description
        Removed value: -"Page number for pagination (default: 1)"
      • removedInput schema / properties / per_page / description
        Removed value: -"Results per page, max 50 (default: 50)"
      • removedInput schema / properties / status / description
        Removed value: -"Filter by status (active, pending, initializing, moved, deleted)"
    • Changedpurge_cache_tool7 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / files / description
        Removed value: -"URLs to purge (max 30)"
      • removedInput schema / properties / hosts / description
        Removed value: -"Hostnames to purge (Enterprise)"
      • removedInput schema / properties / prefixes / description
        Removed value: -"URL prefixes to purge (Enterprise)"
      • removedInput schema / properties / purge_everything / description
        Removed value: -"Purge all cached content"
      • removedInput schema / properties / tags / description
        Removed value: -"Cache tags to purge (Enterprise)"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
    • Changedset_request_header_rules_tool3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / rules / description
        Removed value: -"List of rule definitions"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
    • Changedset_response_header_rules_tool3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / rules / description
        Removed value: -"List of rule definitions"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
    • Changedset_url_rewrite_rules_tool3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / rules / description
        Removed value: -"List of rule definitions"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
    • Changedupdate_dns_record_tool10 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / comment / description
        Removed value: -"Comment (optional)"
      • removedInput schema / properties / content / description
        Removed value: -"Record content (optional)"
      • removedInput schema / properties / name / description
        Removed value: -"Record name (optional)"
      • removedInput schema / properties / priority / description
        Removed value: -"Priority (optional)"
      • removedInput schema / properties / proxied / description
        Removed value: -"Proxy through Cloudflare (optional)"
      • removedInput schema / properties / record_id / description
        Removed value: -"DNS record ID (32-character hex string)"
      • removedInput schema / properties / ttl / description
        Removed value: -"TTL in seconds (optional)"
      • removedInput schema / properties / type / description
        Removed value: -"Record type (optional)"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
    • Changedupdate_page_rule_tool7 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / actions / description
        Removed value: -"Actions (optional)"
      • removedInput schema / properties / priority / description
        Removed value: -"Priority (optional)"
      • removedInput schema / properties / rule_id / description
        Removed value: -"Page rule ID (32-character hex string)"
      • removedInput schema / properties / status / description
        Removed value: -"Status (optional)"
      • removedInput schema / properties / targets / description
        Removed value: -"URL patterns (optional)"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
    • Changedupdate_waf_rule_tool8 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / action / description
        Removed value: -"New action (optional)"
      • removedInput schema / properties / description / description
        Removed value: -"New description (optional)"
      • removedInput schema / properties / enabled / description
        Removed value: -"Enable or disable the rule (optional)"
      • removedInput schema / properties / expression / description
        Removed value: -"New filter expression (optional)"
      • removedInput schema / properties / rule_id / description
        Removed value: -"Rule ID (32-character hex string)"
      • removedInput schema / properties / zone_id / description
        Removed value: -"Zone ID (32-character hex string)"
      • removedInput schema / properties / zone_name / description
        Removed value: -"Zone name (domain like example.com)"
  2. 26 tool updatesv0.5.0
    • First observedcreate_dns_record_tool
    • First observedcreate_page_rule_tool
    • First observedcreate_waf_rule_tool
    • First observeddelete_dns_record_tool
    • First observeddelete_page_rule_tool
    • First observeddelete_waf_rule_tool
    • First observedget_dns_record_tool
    • First observedget_security_events_tool
    • First observedget_top_pages_tool
    • First observedget_traffic_by_country_tool
    • First observedget_zone_analytics_tool
    • First observedget_zone_tool
    • First observedlist_dns_records_tool
    • First observedlist_page_rules_tool
    • First observedlist_request_header_rules_tool
    • First observedlist_response_header_rules_tool
    • First observedlist_url_rewrite_rules_tool
    • First observedlist_waf_rules_tool
    • First observedlist_zones_tool
    • First observedpurge_cache_tool
    • First observedset_request_header_rules_tool
    • First observedset_response_header_rules_tool
    • First observedset_url_rewrite_rules_tool
    • First observedupdate_dns_record_tool
    • First observedupdate_page_rule_tool
    • First observedupdate_waf_rule_tool

TDQS

A3.6/5.0

Scored across 26 tools

Disambiguation4/5

Each tool targets a distinct resource+action (DNS, WAF, page rules, header rules, analytics, zones), so an agent can generally pick correctly. However, the many '..._rules_tool' variants (page rules, WAF rules, request/response header rules, URL rewrite rules) share similar verbs and require careful reading of the resource noun to avoid misselection.

Naming Consistency5/5

Every tool follows the exact same verb_noun_tool convention (create_dns_record_tool, list_waf_rules_tool, purge_cache_tool), with predictable verbs like create/get/list/update/delete/set/purge. No mixing of conventions.

Tool Count4/5

26 tools is slightly heavy but justified by the breadth of the Cloudflare domain (DNS, WAF, page rules, header/URL rewrite rules, analytics, zones, cache). Each tool earns its place with no obvious redundancy, though it sits just above the comfortable range.

Completeness4/5

DNS, WAF, and page rules all have full CRUD, and analytics/zones have appropriate read operations. Minor gaps exist: header and URL rewrite rules only expose list+set (no single-get or delete), and there is no page-rule get-by-id, but these are workable given 'set' replaces the whole ruleset.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    A token-efficient MCP server for managing Cloudflare DNS zones and records with full CRUD support and bulk operations. It can be deployed locally via stdio or as a Cloudflare Worker for remote HTTP access.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    A token-efficient MCP server that provides access to the entire Cloudflare API (2500+ endpoints) using a code execution pattern, enabling natural language management of Cloudflare services.
    7 npm
    912
    Apache 2.0