mcp-cloudflare-crunchtools
Manages Cloudflare zones, DNS records, transform rules, page rules, and cache purging.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-cloudflare-crunchtoolslist all DNS records for example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Cloudflare CrunchTools
A secure MCP (Model Context Protocol) server for Cloudflare DNS, Transform Rules, Page Rules, and cache management.
Overview
This MCP server is designed to be:
Secure by default - Comprehensive threat modeling, input validation, and token protection
No third-party services - Runs locally via stdio, your API token never leaves your machine
Cross-platform - Works on Linux, macOS, and Windows
Automatically updated - GitHub Actions monitor for CVEs and update dependencies
Containerized - Available at
quay.io/crunchtools/mcp-cloudflarebuilt on Hummingbird Python base image
Related MCP server: cloudflare-dns-mcp-server
Naming Convention
Component | Name |
GitHub repo | |
Container |
|
Python package (PyPI) |
|
CLI command |
|
Module import |
|
Why Hummingbird?
The container image is built on the Hummingbird Python base image from Project Hummingbird, which provides:
Minimal CVE exposure - Hummingbird images are built with a minimal package set, dramatically reducing the attack surface compared to general-purpose images
Regular updates - Security patches are applied promptly, keeping CVE counts low
Optimized for Python - Pre-configured Python environment with uv package manager for fast, reproducible builds
Production-ready - Designed for production workloads with proper signal handling and non-root user defaults
This means your MCP server runs in a hardened environment with fewer vulnerabilities than typical Python container images
Features
Zone Management (2 tools)
list_zones- List all zones accessible by your API tokenget_zone- Get zone details by ID or domain name
DNS Records (5 tools)
list_dns_records- List DNS records with filteringget_dns_record- Get a single DNS recordcreate_dns_record- Create A, AAAA, CNAME, MX, TXT, NS, SRV, CAA recordsupdate_dns_record- Update existing recordsdelete_dns_record- Delete records
Transform Rules (6 tools)
list_request_header_rules/set_request_header_rules- Modify request headerslist_response_header_rules/set_response_header_rules- Modify response headerslist_url_rewrite_rules/set_url_rewrite_rules- URL path/query rewrites
Page Rules (4 tools)
list_page_rules- List all page rulescreate_page_rule- Create redirects, cache settings, SSL modesupdate_page_rule- Modify existing rulesdelete_page_rule- Remove rules
Cache Management (1 tool)
purge_cache- Purge by URL, tag, host, prefix, or everything
Installation
With uvx (Recommended)
uvx mcp-cloudflare-crunchtoolsWith pip
pip install mcp-cloudflare-crunchtoolsWith Container
podman run -e CLOUDFLARE_API_TOKEN=your_token \
quay.io/crunchtools/mcp-cloudflareConfiguration
Creating a Cloudflare API Token
Navigate to API Tokens
Click "Create Token"
Click "Get started" next to "Create Custom Token"
Configure Token Name
Enter:
mcp-cloudflare-crunchtools
Configure Permissions
The Permissions section has three dropdowns per row:
First dropdown: Resource type (
AccountorZone)Second dropdown: Specific permission category
Third dropdown: Access level (
ReadorEdit)
Click "+ Add more" to add each permission row. For full management, add:
Resource
Permission
Access
Zone
Zone
Read
Zone
DNS
Edit
Zone
Page Rules
Edit
Zone
Transform Rules
Edit
Zone
Cache Purge
Purge
Configure Zone Resources
First dropdown: Select "Include"
Second dropdown: Select "All zones" or "Specific zone"
Configure Client IP Address Filtering (Optional)
Click "Use my IP" button to restrict token to your current IP
Create and Copy Token
Click "Continue to summary" → "Create Token"
IMPORTANT: Copy the token immediately - it's only shown once!
Add to Claude Code
claude mcp add mcp-cloudflare-crunchtools \
--env CLOUDFLARE_API_TOKEN=your_token_here \
-- uvx mcp-cloudflare-crunchtoolsOr for the 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-cloudflarePermission Sets by Use Case
Read-Only (viewing only)
Resource | Permission | Access |
Zone | Zone | Read |
Zone | DNS | Read |
DNS Management Only
Resource | Permission | Access |
Zone | Zone | Read |
Zone | DNS | Edit |
Full Management (all features)
Resource | Permission | Access |
Zone | Zone | Read |
Zone | DNS | Edit |
Zone | Page Rules | Edit |
Zone | Transform Rules | Edit |
Zone | Cache Purge | Purge |
Usage Examples
List Your Zones
User: List my Cloudflare zones
Assistant: [calls list_zones]Create a DNS Record
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]Add Security Headers
User: Add X-Content-Type-Options: nosniff to all responses for zone abc123...
Assistant: [calls set_response_header_rules with appropriate rule]Purge Cache
User: Purge the cache for https://example.com/styles.css
Assistant: [calls purge_cache with files=["https://example.com/styles.css"]]Security
This server was designed with security as a primary concern. See SECURITY.md for:
Threat model and attack vectors
Defense in depth architecture
Token handling best practices
Input validation rules
Audit logging
Key Security Features
Token Protection
Stored as SecretStr (never accidentally logged)
Environment variable only (never in files or args)
Sanitized from all error messages
Input Validation
Pydantic models for all inputs
Allowlist for record types, actions
Strict format validation for IDs
API Hardening
Hardcoded API base URL (prevents SSRF)
TLS certificate validation
Request timeouts
Response size limits
Automated CVE Scanning
GitHub Actions scan dependencies weekly
Automatic PRs for security updates
Dependabot alerts enabled
Development
Setup
git clone https://github.com/crunchtools/mcp-cloudflare.git
cd mcp-cloudflare
uv syncRun Tests
uv run pytestLint and Type Check
uv run ruff check src tests
uv run mypy srcBuild Container
podman build -t mcp-cloudflare .License
AGPL-3.0-or-later
Contributing
Contributions welcome! Please read SECURITY.md before submitting security-related changes.
Links
Available Tools
26 toolscreate_dns_record_toolC
Create a new DNS record.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | TTL in seconds, 1 = auto (default: 1) | |
| name | Yes | Record name (e.g., www, @, subdomain.example.com) | |
| type | Yes | Record type (A, AAAA, CNAME, MX, TXT, NS, SRV, CAA) | |
| comment | No | Optional comment | |
| content | Yes | Record content (IP address, target domain, etc.) | |
| proxied | No | Proxy through Cloudflare (default: false) | |
| zone_id | Yes | Zone ID (32-character hex string) | |
| priority | No | Priority for MX/SRV records |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of explaining behavioral traits. It only repeats the tool's name without disclosing any side effects, idempotency, permission requirements, or rate limits. For a mutating operation, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded and without any filler. It is appropriately concise for a straightforward create operation, and the schema handles detailed parameter documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 8 parameters and an output schema, the description is minimal. It does not explain the operation's context, such as the need for a valid zone_id or how it relates to sibling tools. The output schema exists, so return values are handled, but the description still lacks important contextual guidance for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so all parameters are already described in the schema. The description adds no additional meaning beyond what the schema provides, which meets the baseline of 3. It does not explain parameter relationships or default behaviors beyond schema notes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Create a new DNS record.' It specifies the verb and resource, and there is no ambiguous terminology. However, it does not explicitly distinguish from sibling tools like update_dns_record or list_dns_records, though the name itself does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, common use cases, or scenarios where other tools (e.g., update or list) would be more appropriate. For a create operation, it could at least imply that it's for new records, but it offers no context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_page_rule_toolC
Create a new page rule.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | active or disabled (default: active) | active |
| actions | Yes | Page rule actions | |
| targets | Yes | URL pattern targets | |
| zone_id | Yes | Zone ID (32-character hex string) | |
| priority | No | Rule priority 1-1000 (default: 1) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for disclosing behavior. It reveals nothing about side effects, idempotency, required permissions, or error conditions. The description is a bare statement of intent, offering minimal transparency into the tool's actual operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at six words, but this brevity borders on under-specification. It is not misleading, but it doesn't earn its place by adding any clarifying information beyond the tool name. It's brief but not structured or front-loaded with useful details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a relatively simple create operation with a comprehensive schema, the description is adequate but minimal. It doesn't explain return values or edge cases, though the presence of an output schema mitigates the need for that. Given the tool's complexity, the description is just enough to function but lacks the richness that would elevate it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage for parameters, so the baseline is 3. The description does not add any additional semantics beyond what the schema already provides. Since the schema is self-documenting, the description's lack of parameter details is acceptable, but it also doesn't enhance the meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Create a new page rule.' is essentially the English expansion of the tool name 'create_page_rule_tool'. It restates the tool's name without adding any specific details about the resource or context. This borders on tautology, as it doesn't distinguish this tool from its siblings like update_page_rule_tool or delete_page_rule_tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description simply states what the tool does without mentioning scenarios, prerequisites, or comparisons to sibling tools. The agent receives no help in deciding between this and other rule-related tools.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Action to take (managed_challenge, block, js_challenge, challenge, skip, log) | managed_challenge |
| enabled | No | Whether the rule is enabled (default: true) | |
| zone_id | No | Zone ID (32-character hex string) | |
| zone_name | No | Zone name (domain like example.com) | |
| expression | No | Cloudflare filter expression (e.g., '(http.request.uri.path contains "xmlrpc.php")') | |
| description | No | Human-readable description of the rule |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since there are no annotations, the description carries the burden of behavioral disclosure. It reveals the free plan limit, which is a behavioral constraint slash side effect. It does not mention that the tool likely requires authentication or permission, but that may be assumed from the context. It also doesn't state that the default action is managed_challenge. However, defaults are in the schema, so the description doesn't need to repeat them. Overall, it's reasonably transparent about the main constraint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one purpose sentence and one constraint sentence. It avoids repeating schema details. It sets expectations about plan limits. The structure is clear and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential: what it does, a key constraint, and a hint about limits. It doesn't provide an example of usage, but the schema has examples for the expression. It might be enhanced by stating that it will return the created rule object, but that might be evident from the output schema. Overall, it's fairly complete for a create tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters are clearly described in the schema with examples for the expression. The description text clarifies the zone_id/zone_name mutual exclusivity and provides a concrete example of a filter expression. Even though the schema does not mark any parameter as required, the description implies that either zone_id or zone_name is needed Some concern that the schema doesn't enforce this, but the description covers it. All parameters have descriptions, so 100% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new WAF custom rule' with a specific verb and resource, and the name reinforces the purpose. It distinguishes from sibling update/delete tools by the word 'create'. The note about free plan limits adds context without detracting from clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on the mutual exclusivity of zone_id and zone_name, which is critical for correct invocation. It also mentions the 5-rule limit for free plans, which helps set expectations. However, it does not explicitly state when not to use this tool (e.g., for updates) but the name 'create' implies that. It could be improved by stating the requirement to supply either zone_id or zone_name more formally.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_dns_record_toolC
Delete a DNS record.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | Zone ID (32-character hex string) | |
| record_id | Yes | DNS record ID (32-character hex string) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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 states 'Delete' which implies destructive action, but doesn't disclose irreversibility, potential impact on DNS resolution, or any confirmation/rollback behavior. This is a significant gap for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no waste, but it is under-specified rather than concise. It earns a 4 for efficiency, though it could be improved with more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema details, the description is incomplete. It doesn't explain return values, error conditions, or the irreversible nature of the operation. The output schema exists but the description doesn't leverage it to explain what the agent should expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both parameters (zone_id and record_id as 32-character hex strings). The description adds no additional meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (delete) and the resource (DNS record), which is specific and unambiguous. It distinguishes from siblings like create_dns_record_tool and update_dns_record_tool, though it doesn't explicitly mention scope or context beyond the resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, prerequisites (e.g., needing zone_id and record_id from list/get tools), or any exclusions. The description is minimal and doesn't help the agent decide when deletion is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_page_rule_toolB
Delete a page rule.
| Name | Required | Description | Default |
|---|---|---|---|
| rule_id | Yes | Page rule ID (32-character hex string) | |
| zone_id | Yes | Zone ID (32-character hex string) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavior on its own. It only states 'Delete a page rule' without indicating that this is a destructive, irreversible operation, any permission requirements, or what happens on success/failure. For a delete tool, this is a critical omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no superfluous words. It is concise and front-loaded, accurately stating the core function. There is zero waste, which is ideal for a simple operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a delete operation with no annotations and a minimal description, it lacks essential context. It does not mention that the operation is permanent, that the zone and rule must exist, or what the output schema contains. The existence of an output schema does not compensate for the missing behavioral and prerequisite context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions ('Page rule ID (32-character hex string)' and 'Zone ID (32-character hex string)'). The tool description adds no additional parameter context, such as how to find these IDs or any dependencies between them. Since schema coverage is high, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Delete a page rule.' This is a specific verb and resource, directly distinguishing it from sibling tools like create_page_rule, update_page_rule, and list_page_rules. It accurately conveys what the tool does without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., that the page rule must exist or how to obtain the rule_id), nor does it contrast with similar delete operations like delete_waf_rule. The name and siblings imply usage, but the description itself lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_waf_rule_toolA
Delete a WAF custom rule.
Provide either zone_id or zone_name, not both.
| Name | Required | Description | Default |
|---|---|---|---|
| rule_id | Yes | Rule ID (32-character hex string) | |
| zone_id | No | Zone ID (32-character hex string) | |
| zone_name | No | Zone name (domain like example.com) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavioral traits. The description only states the action, not the consequences (e.g., deletion is irreversible, affects specific zone, requires both rule_id and zone identifier). It does not mention whether the tool is mutating, but that is inferred from the verb. Insufficient disclosure of side effects or prerequisites beyond the parameter requirement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, with the core purpose in the first sentence and a crucial usage constraint in the second. It is concise and front-loaded, with no wasted words. Every sentence adds value, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 parameters, all documented in schema) and the presence of an output schema (likely indicating deletion success), the description is adequate. However, it lacks context on error handling (e.g., what happens if the rule doesn't exist) and prerequisites (e.g., the rule must belong to the specified zone). The instruction on zone disambiguation is a plus, but the deletion's irreversible nature is not highlighted. Overall, minimal but sufficient for a straightforward delete operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented structurally. The description adds the constraint of providing exactly one of zone_id or zone_name, which is not evident from the schema alone. This is valuable semantic context that helps the agent avoid incorrect invocations. The description does not add syntax details beyond the schema, but the mutual exclusivity rule compensates, earning a near-high score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes a WAF custom rule, using a specific verb ('Delete') and resource ('WAF custom rule'). It distinguishes from siblings like 'update_waf_rule_tool' and 'create_waf_rule_tool' by indicating the deletion action. The name also aligns with the description, making intent unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to provide either zone_id or zone_name, not both, giving clear usage constraints. However, it does not state when to use this tool versus alternatives like list_waf_rules_tool for finding rule_id or update_waf_rule_tool for modifying instead of deleting, but the sibling context implies deletion is separate. Lacks explicit 'when not to use' but is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dns_record_toolA
Get a single DNS record by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | Zone ID (32-character hex string) | |
| record_id | Yes | DNS record ID (32-character hex string) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the burden. The verb 'Get' strongly implies a read-only operation with no side effects, but it does not explicitly state that no data is modified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant information, making it easy to understand at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get operation, the description is sufficient. It covers the key aspects (single record, identifier-based) and does not require additional context about return values or errors, as the output schema is available.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds no additional meaning beyond the schema's parameter descriptions, which are already complete for both zone_id and record_id. Since schema coverage is 100%, the description provides no extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), the resource ('DNS record'), and the scope ('single' and 'by ID'), distinguishing it from listing or other operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (when you have a specific record ID), but does not explicitly mention alternatives like listing. However, the sibling list tool exists and the wording is clear enough for typical use.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results (default: 20) | |
| since | No | Start date ISO format (default: 30 days ago) | |
| until | No | End date ISO format (default: today) | |
| zone_id | No | Zone ID (32-character hex string) | |
| zone_name | No | Zone name (domain like example.com) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries full burden. It states the output is grouped, implying some aggregation, but does not clarify read-only nature, authentication needs, rate limits, or error behavior. The description is not misleading but is severely under-specified for behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the purpose. No fluff, immediate clarity. The constraint is stated last, but the whole description is under 30 words. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema (though not shown here), the description adequately covers the main context for a simple read tool: what it returns (grouped events) and a key usage constraint. It does not address default behavior when neither zone parameter is given, but for a security events tool this is a minor gap. Overall sufficient for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers all parameters with descriptions (100% coverage). The description adds value by explicitly stating the mutual exclusivity of zone_id and zone_name, which is not encoded in the schema. This goes beyond schema documentation and helps avoid misuse.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches security/firewall events, specifies the grouping (by action and source), and is distinct from sibling tools which handle DNS, rules, cache, etc. The verb 'get' plus resource 'security/firewall events' is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit constraint: 'Provide either zone_id or zone_name, not both.' This is valuable usage guidance. However, it does not mention when to prefer this tool over alternatives (though siblings are clearly different domains) or what happens when no zone is provided. It still offers clear direction for parameter selection.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results (default: 15) | |
| since | No | Start date ISO format (default: 30 days ago) | |
| until | No | End date ISO format (default: today) | |
| zone_id | No | Zone ID (32-character hex string) | |
| zone_name | No | Zone name (domain like example.com) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It discloses the mutual exclusivity constraint ('not both') but does not explain what happens if neither zone_id nor zone_name is provided, or if both are provided. It also omits authentication/rate-limit details, though the tool is a simple read-only analytics call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no wasted words. The first sentence states the core purpose, and the second states the key constraint. It is front-loaded and highly scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 optional parameters and an output schema, but the description does not clarify the expected behavior when neither zone_id nor zone_name is supplied (schema defaults to null). This ambiguity is a notable gap, though the output schema likely covers return structure. The description is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are individually documented. The description adds relational meaning beyond the schema by stating 'Provide either zone_id or zone_name, not both,' which is not captured in the parameter descriptions. This additional semantic linkage raises the score above the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Get top pages by request count.' This clearly distinguishes the tool from sibling analytics tools like get_zone_analytics_tool or get_traffic_by_country_tool, which target different metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The instruction 'Provide either zone_id or zone_name, not both' gives clear usage constraints for parameters, but it does not explicitly state when to choose this tool over alternatives. The context for selecting this tool versus siblings is only implied by its purpose.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of countries (default: 20) | |
| since | No | Start date ISO format (default: 30 days ago) | |
| until | No | End date ISO format (default: today) | |
| zone_id | No | Zone ID (32-character hex string) | |
| zone_name | No | Zone name (domain like example.com) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral aspects such as whether the operation is read-only, possible side effects, or required permissions. The burden is on the description, and it fails to mention these aspects, leaving the agent without crucial information about the tool's impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of only two sentences. It conveys the essential purpose and the critical constraint without any redundant or vague language. Every word serves a purpose, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (a read-like operation with no output schema provided), the description is mostly complete. It covers the core function and usage constraint. However, it does not mention what the response contains or any error conditions, but these are not strictly required for a basic getter. The lack of output specification slightly reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for all parameters, achieving 100% coverage. Additionally, the description adds a key semantic detail: the mutual exclusivity of zone_id and zone_name. This clarifies a constraint that is not explicitly encoded in the schema, enhancing the agent's ability to correctly set parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get traffic breakdown by country.' This is a specific verb+resource combination that distinguishes it from sibling tools like list_zones or get_zone_analytics, which focus on other aspects. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage instruction: 'Provide either zone_id or zone_name, not both.' This tells the agent how to correctly invoke the tool. However, it does not explicitly mention when to use this tool over alternatives, such as when traffic data is needed versus other analytics. Still, the constraint is valuable and goes beyond a generic description.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Start date ISO format (default: 30 days ago) | |
| until | No | End date ISO format (default: today) | |
| zone_id | No | Zone ID (32-character hex string) | |
| zone_name | No | Zone name (domain like example.com) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden, and it does a decent job by disclosing the exact output metrics and the date-range scope. However, it omits behavioral details such as timezone handling, data latency, permission requirements, or idempotency guarantees. It does not contradict any annotations, but it also doesn't go beyond the obvious for a read-only analytics endpoint, so it meets the baseline without excelling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, each earning its place: the first sentence defines the tool's purpose, the second lists the returned metrics, and the third gives the key parameter constraint. No wasted words, perfect front-loading of purpose. Exemplary conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (covering return value details), this description is complete for a summary tool. It covers the input date range, the selection method, and the aggregate metrics returned. However, it could be slightly more complete by mentioning timezone assumptions or whether historical data is delayed, but these are minor given the output schema and the tool's straightforward nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While schema coverage is 100% (all four parameters documented), the description adds critical semantic value by stating 'Provide either zone_id or zone_name, not both,' which is a constraint not derivable from the schema alone. This adds meaningful guidance beyond the parameter descriptions, meriting an above-baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a 'zone traffic analytics summary' with specific metrics (requests, unique visitors, bandwidth, cache ratio, status codes). It uses a specific verb ('Get') and resource ('zone traffic analytics'), making the purpose unmistakable. However, it does not explicitly differentiate itself from sibling analytics tools like get_traffic_by_country_tool or get_top_pages_tool, though the name and return fields largely compensate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to choose this tool over alternatives such as get_traffic_by_country_tool or get_top_pages_tool. It does not mention use cases, exclusions, or prerequisites. The only 'guidance' is the mutual-exclusivity constraint for zone_id/zone_name, which is a parameter rule rather than usage direction. No explicit when-to-use or when-not-to-use context is given.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | No | Zone ID (32-character hex string) | |
| zone_name | No | Zone name (domain like example.com) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the burden. It states the tool gets details, but does not clarify what happens if both parameters are provided (error? precedence?) or if neither is provided. It also doesn't mention any side effects, but as a GET-like tool it's likely read-only. The 'not both' hint is helpful but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, concise and front-loaded with the main action. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the toolhol (two optional params, output schema present), the description is adequate. It doesn't mention what happens if both or none are provided, but the phrase 'Provide either' implies one is needed. Overall complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already provides descriptions for each parameter. The description adds the crucial constraint of providing either one, not both. This adds value beyond the schema, especially since neither is required in the JSON schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get Cloudflare zone details by ID or name.' This is a specific verb+resource combination, and the mention of 'by ID or name' distinguishes it from sibling tools like list_zones_tool which retrieves multiple zones.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to provide either zone_id or zone_name, not both, which gives clear usage guidance. However, it does not explicitly mention when to choose this over list_zones_tool or other alternatives, so it lacks exclusionary context.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by record name | |
| page | No | Page number (default: 1) | |
| type | No | Filter by record type (A, AAAA, CNAME, MX, TXT, etc.) | |
| content | No | Filter by record content | |
| zone_id | Yes | Zone ID (32-character hex string) | |
| per_page | No | Results per page, max 100 (default: 100) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries full burden. It only says 'List', implying read-only, but does not disclose pagination defaults, rate limits, or that it returns a paginated list. It also doesn't clarify that all filters are optional or that results are ordered by default. No mention of error handling or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler. It is as concise as possible while conveying the core purpose. No unnecessary detail or repetition of schema information. Long enough to be useful, short enough to be instantly parsed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the schema fully describes parameters and an output schema exists, the description is minimally adequate. However, it lacks any hint about the scope of results (e.g., pagination limits, default sorting) or the fact that it returns a list of records. An agent might not know that it returns a list unless inferred from the name. For a list tool with pagination and filters, a bit more context (like 'returns a paginated list' or 'use filters to narrow results') would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (every parameter has a description). The description adds no extra meaning beyond what the schema already provides. It lists the tool's purpose but does not elaborate on parameter behavior (e.g., that name/type/content are optional filters, or that page/per_page control pagination). Since schema covers the parameters, baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list), the resource (DNS records), and the scope (for a Cloudflare zone). It unambiguously distinguishes from siblings like get_dns_record_tool (single record) and create/update/delete tools. The verb-resource pair is specific and immediately understood.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Does not mention that this is the go-to for listing multiple records while get_dns_record_tool is for a specific record. No context on when to apply filters or pagination. The description is purely declarative with no usage scenario.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| order | No | Sort order (status, priority) | priority |
| status | No | Filter by status (active, disabled) | |
| zone_id | Yes | Zone ID (32-character hex string) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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. It only says 'List all page rules,' implying a read operation, but fails to disclose pagination behavior, limits, ordering semantics, or what 'all' implies given the filter/order params. No behavioral traits are revealed beyond the bare purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with zero wasted words. For a simple list tool with fully documented schema and an output schema, this level of brevity is appropriate and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is low-complexity with 3 params (1 required), full schema coverage, and an output schema that explains return values. However, with no annotations and no usage context, the description leaves behavioral gaps—no pagination note, no interaction context with sibling create/update/delete page_rule tools—making it adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no parameter detail, but the schema already documents zone_id as a 32-character hex, order default 'priority,' and status filter. The description doesn't need to compensate given full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all page rules for a zone' states a specific verb (List), resource (page rules), and scope (for a zone). It distinguishes itself from sibling list tools (list_dns_records, list_waf_rules) by naming the resource type, though it doesn't explicitly contrast with close siblings like 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There's no mention of when-not-to-use, ordering caveats, draining behavior, or related tools. The description gives zero usage context beyond restating the resource name.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | Zone ID (32-character hex string) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It only states 'List request header modification rules,' which implicitly suggests read-only, but does not mention prerequisites, authentication, pagination, or other behavioral traits. The description adds no context beyond the obvious action and resource.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single terse sentence with no wasted words. It is front-loaded and efficient, but it is also sparse, leaving some value on the table. It earns a 4 for not being padded, though a bit more detail could have been added without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and an output schema (likely covering return structure), the minimal description is adequate. However, it lacks any behavioral transparency (e.g., read-only nature, pagination) and does not clarify the distinction from the response header counterpart. It is a minimum viable description but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter zone_id, which is described as a 32-character hex string. The description adds nothing beyond that, but the schema already provides the necessary semantics. Baseline of 3 is appropriate given high schema coverage and no additional parameter details in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (List) and the resource (request header modification rules), and it distinguishes from the sibling list_response_header_rules_tool by specifying 'request'. This is a specific verb+resource phrasing that leaves no ambiguity about the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool lists request header rules for a given zone (as required by the schema), but it does not explicitly contrast with the sibling tool for response header rules or provide guidance on when to prefer this over alternative tools. The context is clear but lacks explicit when/when-not guidance.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | Zone ID (32-character hex string) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full burden of behavioral disclosure. It does not explicitly state that the operation is read-only, nor does it mention potential pagination, rate limits, or other side effects. The verb 'List' implies non-mutation, but that is weak evidence and no additional context is offered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler or redundant content. Every word contributes to the core meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
As a simple list tool with an output schema and complete parameter schema, the minimum viable description is nearly met. However, it lacks any usage context (e.g., when to use, how it relates to setting rules), which would make it more self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% documentation of the single zone_id parameter, including its format. The description adds no parameter-specific meaning, so the schema suffices and the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and a clear resource ('response header modification rules'). It distinguishes from the sibling list_request_header_rules_tool through the 'response' qualifier, though it does not elaborate on scope or behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., set_response_header_rules_tool or list_request_header_rules_tool). The intended context is only vaguely 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_url_rewrite_rules_toolB
List URL rewrite rules.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | Zone ID (32-character hex string) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavioral traits. It only says 'List URL rewrite rules' and does not state that the operation is read-only, describe return format (though output schema exists), or mention any potential errors, rate limits, or scope limitations. Minimal transparency provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, succinct sentence that directly states the tool's function without any fluff or redundancy. It is well-structured and appropriately brief.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with one parameter and an output schema, the description is adequate but minimal. It does not mention pagination, filtering, or any contextual cues about when to use the tool. The lack of usage guidance makes completeness only average.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% since the zone_id parameter is accurately described as 'Zone ID (32-character hex string)'. The description does not add any extra semantics beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('URL rewrite rules'), making the purpose immediately clear. However, it does not differentiate from sibling list tools like list_request_header_rules_tool or list_page_rules_tool, lacking any mention of zone scope or specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, common use cases, or exclusions, leaving the agent to infer applicability solely from the name and schema.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | No | Zone ID (32-character hex string) | |
| zone_name | No | Zone name (domain like example.com) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. The description mentions the mutual exclusivity of parameters, which is a behavioral constraint, but it does not disclose that this is a read-only operation, list behavior, or potential edge cases (e.g., what happens if neither is provided). This leaves gaps in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, concise, and front-loaded with the main purpose. Every sentence earns its place—the first states the action, the second provides a critical usage instruction. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's relative simplicity (2 params, no nested objects, and output schema exists), the description is mostly complete. The mutual exclusion rule is covered, and the output schema likely documents return values. However, it misses a note on whether this returns a list or pagination, which could be inferred from the output schema. Overall, adequate for a list tool without annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with descriptions, so the baseline is 3. The description adds value by stating the mutual exclusivity rule (provide either zone_id or zone_name), which is not in the schema. This is a meaningful addition that enhances parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists all WAF custom rules for a zone, distinguishing it from sibling tools like create_waf_rule_tool and delete_waf_rule_tool. However, it doesn't explicitly contrast with the similar list_response_header_rules_tool or list_request_header_rules_tool, but the resource 'WAF custom rules' is specific enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to provide either zone_id or zone_name, not both, which is crucial for correct invocation. However, it does not explain when to use this tool versus other list tools or mention prerequisites like zone existence. This provides clear invocation constraints but lacks broader usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_zones_toolB
List all Cloudflare zones accessible by the API token.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by zone name (domain) | |
| page | No | Page number for pagination (default: 1) | |
| status | No | Filter by status (active, pending, initializing, moved, deleted) | |
| per_page | No | Results per page, max 50 (default: 50) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description is the sole source of behavioral insight. It only says 'list all' without mentioning pagination behavior, potential filtering, or side effects. The schema includes pagination parameters, but the description doesn't clarify that 'all' requires paging through results, which could mislead an agent expecting a single response with all zones.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that efficiently communicates the core purpose without any superfluous text. It is front-loaded and immediately understandable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple with an output schema and fully documented parameters, so the base need is met. However, the description omits guidance on when to use this tool versus get_zone_tool and does not address pagination nuance, making it slightly incomplete for an optimal agent decision.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for each parameter (name, page, status, per_page). The description adds no additional meaning beyond what the schema already provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Cloudflare zones accessible by the API token. The verb 'list' and resource 'zones' are specific, and it differentiates from get_zone_tool which retrieves a single zone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like get_zone_tool, nor does it mention any exclusions or prerequisites. It simply states the action without contextual usage advice.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Cache tags to purge (Enterprise) | |
| files | No | URLs to purge (max 30) | |
| hosts | No | Hostnames to purge (Enterprise) | |
| zone_id | Yes | Zone ID (32-character hex string) | |
| prefixes | No | URL prefixes to purge (Enterprise) | |
| purge_everything | No | Purge all cached content |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It clearly states that it purges cached content, implying a destructive action, but does not explicitly mention consequences like irreversible removal, impact on all visitors, or potential rate limits. The action is implied but not elaborated. Since 'purge' is a well-understood destructive operation, the description is minimally transparent but lacks depth about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences. The first sentence states the purpose, and the second gives usage guidance. There is zero fluff, no repetition of schema details, and every word earns its place. It is front-loaded with the core action and immediately provides actionable usage instructions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has six parameters, mutual exclusivity, and Enterprise plan restrictions, the description covers the core usage effectively. It does not explain return values, but an output schema exists, so that is not needed. It could have mentioned that purge is irreversible or that only one mode should be used, but it already implies 'use one of'. The description is complete enough for an agent to understand what to do, though it could be more explicit about the destructive nature and any rate limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by explicitly stating 'Use one of: purge_everything, files, tags, hosts, or prefixes', which conveys mutual exclusivity not stated in the schema. It also reinforces the Enterprise plan requirement for tags, hosts, and prefixes, which is already in the schema but reinforced in a usage context. This adds semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Purge cached content') and the specific resource ('Cloudflare's edge'). It distinguishes itself from sibling tools, which are all list/create/update/delete operations for DNS, rules, and analytics, while this is the only purge operation. The purpose is unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists the five possible modes (purge_everything, files, tags, hosts, prefixes) and indicates that tags, hosts, and prefixes require an Enterprise plan. This tells the agent which parameter to use for different scenarios. Since this is the sole purge tool, there are no alternative tools to compare against, but the guidance within the tool is clear and actionable.
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": {...}}}
| Name | Required | Description | Default |
|---|---|---|---|
| rules | Yes | List of rule definitions | |
| zone_id | Yes | Zone ID (32-character hex string) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It clearly states 'replaces all existing rules' – a destructive, non-reversible action if unintended. It also constrains action to 'rewrite', adding operational detail. However, it doesn't mention permission requirements, failure modes, or whether the replacement is atomic. Still, it addresses the most critical behavioral aspect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: two sentences plus a clear bullet list. It front-loads the purpose and key side effect, then uses bullets to enumerate the rule fields. No wasted words or redundancy; each element adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists (not shown in description), there's no need to explain return values. The description adequately covers the input structure for both parameters: zone_id is self-evident from schema, and rules are detailed. It lacks mention of validation rules, error handling, or prerequisites like zone existence, but for a setter tool with a well-structured input, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema's description for 'rules' is only 'List of rule definitions', which is minimal. The description adds substantial meaning by specifying each rule must contain 'expression', 'description', 'action', and 'action_parameters' with an example format. It also clarifies the expected structure of the headers rewrite. This is high-value information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action ('Set request header modification rules'), specifies the resource (request headers), and the critical side effect ('replaces all existing rules'). It distinguishes from sibling set tools like set_response_header_rules_tool by explicitly focusing on request headers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions that it replaces all existing rules, which is a key usage caution, but it does not explicitly state when to use this tool versus alternatives like set_response_header_rules_tool or set_url_rewrite_rules_tool. The differentiation is implicit via the name and the 'request header' wording, but lacks explicit when-not guidance.
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": {...}}}
| Name | Required | Description | Default |
|---|---|---|---|
| rules | Yes | List of rule definitions | |
| zone_id | Yes | Zone ID (32-character hex string) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It discloses the critical destructive behavior: 'replaces all existing rules'. It also gives the required rule shape. It does not mention auth requirements or failure behavior, but the main side effect is explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact: a front-loaded purpose sentence followed by a focused bullet list of rule fields. Every sentence adds necessary information, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and there are only two top-level parameters, the description covers the essential context: replacement behavior and rule object structure. Some minor details are omitted, such as full header object semantics and ordering, but the description is sufficient for correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only describes 'rules' as 'List of rule definitions', but the description adds the required nested structure: expression, description, action, and action_parameters with an example. This meaningfully compensates for the schema's lack of detail on rule item contents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Set' with the resource 'response header modification rules' and immediately clarifies the full-replacement behavior: 'replaces all existing rules'. This clearly distinguishes it from listing rules and from the request-header counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes the usage context: this tool sets response header modification rules and replaces all existing ones. It does not explicitly mention alternatives, but the phrase 'response header' plus sibling tool names make the scope reasonably clear.
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": "..."}}}
| Name | Required | Description | Default |
|---|---|---|---|
| rules | Yes | List of rule definitions | |
| zone_id | Yes | Zone ID (32-character hex string) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It clearly states that calling this replaces all existing rules, which is a critical destructive behavior. It also gives the rule structure, but doesn't mention side effects beyond replacement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the key point about replacing existing rules. It uses a bulleted sub-list for rule structure, which is concise and easy to parse. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a setter tool with an output schema (not shown), the description covers the main behavior and parameter structure. It doesn't explain error cases or idempotency, but for the complexity level, it's fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes zone_id and rules, so baseline is 3. The description adds significant value by detailing the required fields within each rule (expression, description, action, action_parameters) and giving a sample structure for action_parameters. This goes beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it sets URL rewrite rules and explicitly notes it replaces all existing rules. This distinguishes it from sibling tools like list_url_rewrite_rules_tool and set_request_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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'replaces all existing rules', which tells the agent this is a full replacement operation and should be used when defining the entire rule set. It doesn't explicitly mention alternatives, but the context is clear.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | TTL in seconds (optional) | |
| name | No | Record name (optional) | |
| type | No | Record type (optional) | |
| comment | No | Comment (optional) | |
| content | No | Record content (optional) | |
| proxied | No | Proxy through Cloudflare (optional) | |
| zone_id | Yes | Zone ID (32-character hex string) | |
| priority | No | Priority (optional) | |
| record_id | Yes | DNS record ID (32-character hex string) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries full responsibility for behavioral disclosure. It fails to mention that updating is a mutating operation, potential irreversible overwrites, or any permission requirements. The single sentence provides no additional behavioral insight beyond the obvious.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at one sentence with no wasted words. However, it is under-specified for a tool with complex behavior, but conciseness is about efficiency, and this is efficient albeit minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 9 parameters, is a mutation operation, and has no annotations or output schema explanations, the description is severely incomplete. It does not explain what fields can be changed, the effect of partial updates, or any constraints. It is far from minimally viable for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes all 9 parameters with 100% coverage, so the baseline is 3. The description adds no parameter-specific information beyond what the schema provides, which is acceptable given the schema's completeness.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (update) and resource (existing DNS record), distinguishing it from create/delete operations. It is specific enough to understand the tool's core purpose, though it lacks detail on what can be updated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites like needing zone_id and record_id, nor does it suggest retrieving them from list_dns_records_tool. It offers no context for usage.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Status (optional) | |
| actions | No | Actions (optional) | |
| rule_id | Yes | Page rule ID (32-character hex string) | |
| targets | No | URL patterns (optional) | |
| zone_id | Yes | Zone ID (32-character hex string) | |
| priority | No | Priority (optional) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether the update is partial or full replacement, what happens to unspecified fields, or whether the operation is idempotent. It also does not mention any side effects or validation behavior. For a mutation tool, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It is appropriately sized for a simple update operation, though it could be slightly more informative without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a mutation tool with no annotations and an output schema, the description is incomplete. It does not explain the update semantics (partial vs full), nor does it provide any context on how to use the optional parameters. The output schema exists but the description does not clarify what the response contains or how to interpret success/failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond the schema. The baseline of 3 is appropriate since the schema does the heavy lifting, but the description does not clarify how the optional parameters interact (e.g., whether omitting them preserves existing values).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update an existing page rule' clearly states the verb (update) and resource (page rule), and distinguishes it from sibling tools like create_page_rule_tool and delete_page_rule_tool. It is concise and unambiguous, though it could mention the scope (zone-specific) but that is implied by the required parameters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention that it requires an existing rule ID, nor does it explain the relationship to list_page_rules_tool for finding the rule_id. There is no context on prerequisites or typical usage scenarios.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | New action (optional) | |
| enabled | No | Enable or disable the rule (optional) | |
| rule_id | Yes | Rule ID (32-character hex string) | |
| zone_id | No | Zone ID (32-character hex string) | |
| zone_name | No | Zone name (domain like example.com) | |
| expression | No | New filter expression (optional) | |
| description | No | New description (optional) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose side effects, permissions, or whether omitted parameters are merged or overwritten. This lack of behavioral detail is a significant gap for an update operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. It states the purpose and a key parameter rule, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the resource and action are clear, the description does not explain what happens to unspecified optional fields (e.g., whether they are left unchanged or reset). Given the update context, this ambiguity leaves the behavior incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema descriptions are minimal (e.g., 'New action (optional)'), but the tool description adds a crucial constraint about zone_id/zone_name exclusivity. This extra guidance goes beyond the schema, which lists both as optional without that relationship.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Update an existing WAF custom rule' clearly identifies the operation (update) and the resource (WAF custom rule), distinguishing it from create/delete/list siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a specific usage constraint: 'Provide either zone_id or zone_name, not both.' It does not explicitly mention alternative tools, but the action and resource make it clear when to use it relative to WAF rule operations.
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. Dates show when Glama detected each change.
26 tool updates
v0.5.0- First observed
create_dns_record_tool - First observed
create_page_rule_tool - First observed
create_waf_rule_tool - First observed
delete_dns_record_tool - First observed
delete_page_rule_tool - First observed
delete_waf_rule_tool - First observed
get_dns_record_tool - First observed
get_security_events_tool - First observed
get_top_pages_tool - First observed
get_traffic_by_country_tool - First observed
get_zone_analytics_tool - First observed
get_zone_tool - First observed
list_dns_records_tool - First observed
list_page_rules_tool - First observed
list_request_header_rules_tool - First observed
list_response_header_rules_tool - First observed
list_url_rewrite_rules_tool - First observed
list_waf_rules_tool - First observed
list_zones_tool - First observed
purge_cache_tool - First observed
set_request_header_rules_tool - First observed
set_response_header_rules_tool - First observed
set_url_rewrite_rules_tool - First observed
update_dns_record_tool - First observed
update_page_rule_tool - First observed
update_waf_rule_tool
TDQS
Each tool targets a distinct Cloudflare resource and action. Overlapping concepts like request vs response header rules are clearly delineated by name and description, leaving no ambiguity about which tool to use.
All tools follow a consistent verb_noun_tool pattern (e.g., list_zones_tool, create_dns_record_tool, purge_cache_tool). The uniform '_tool' suffix and regular verb usage make the naming predictable and easy to navigate.
With 26 tools, the count is at the upper edge of comfortable scope. While every tool has a purpose, the sheer number of rule-related tools (headers, URL rewrites, page rules, WAF) makes it feel somewhat heavy, though not overwhelmingly so.
The server covers CRUD for DNS, page rules, and WAF rules, along with list/set for header and URL rewrite rules, cache purging, and analytics. Minor omissions like zone settings update are acceptable, but the core Cloudflare management workflows are well represented.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Cloudflare Workers MCP server: ai-guardrails
Cloudflare Workers MCP server: ai-token-counter
Cloudflare Workers MCP server: ai-model-router
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceA lightweight MCP server for managing DNS records, purging cache, and interacting with the Cloudflare API through natural language commands.24-
- AlicenseNot gradedqualityNot gradedmaintenanceA 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.-
- AlicenseNot gradedqualityDmaintenanceMCP server for managing Cloudflare DNS across multiple zones from a single API token, enabling bulk operations like toggling proxy, listing records, and batch updates.16MIT

Cloudflare MCP Serverofficial
AlicenseNot gradedqualityBmaintenanceA 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.11810Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/crunchtools/mcp-cloudflare'
If you have feedback or need assistance with the MCP directory API, please join our Discord server