cloudflare-mcp-go
Provides tools for interacting with the Cloudflare API v4, enabling security triage and investigation across zones, DNS records, WAF and firewall rules, rate limits, security events, HTTP request logs, Security Center insights, threat intelligence, and account audit logs.
cloudflare-mcp-go
An MCP (Model Context Protocol) server for the Cloudflare API v4, written in Go.
It lets any MCP client (Claude, and other MCP-compatible tools) inspect and investigate your Cloudflare account through natural language: zones, DNS, WAF and firewall rules, rate limits, HTTP request logs, Security Center insights, and threat intelligence. The server is read-focused and geared toward security triage and investigation workflows.
Quick start
Requires a Cloudflare API token and Go 1.25+.
Add it to Claude Code with a single command:
claude mcp add cloudflare \
-e CLOUDFLARE_API_TOKEN=your-api-token \
-- go run github.com/M-Yamashita01/cloudflare-mcp-go@v0.2.0That is all — no manual clone or build required. CLOUDFLARE_ACCOUNT_ID is optional and only needed by a few tools (accounts, audit logs, KV, intel).
Related MCP server: Cloudflare API MCP
Tools
28 tools grouped by domain.
Zones & DNS
Tool | Description |
| List zones in your account (ID, name, status, plan). |
| Get details of a specific zone. |
| List DNS records for a zone (type, name, content, TTL, proxy status). |
| DNS query analytics: query counts, response codes, query type distribution. |
Firewall, WAF & rate limiting
Tool | Description |
| IP access rules that block, challenge, or allow IPs, CIDRs, ASNs, or countries. |
| WAF managed rulesets entrypoint and which managed rulesets are enabled. |
| Custom firewall rules with expressions, actions, and priorities. |
| Full configuration of a specific firewall rule by ID. |
| All rulesets for a zone (metadata only). |
| A specific ruleset with all its rules. |
| Rate limiting rules: thresholds, match criteria, actions. |
| Full configuration of a specific rate limiting rule by ID. |
Security events & logs
Tool | Description |
| Query security events via the GraphQL Analytics API for triage. |
| Look up an HTTP request log entry by Cloudflare Ray ID. |
| Retrieve HTTP request logs for a time range (max 1h, data ≥5min old). |
| List available HTTP request log fields. |
Security Center
Tool | Description |
| Security Center insights with severity, type, and classification. |
| Aggregated insight counts by severity, class, or type. |
Threat intelligence
Tool | Description |
| Threat intelligence for an IP: geolocation, ASN, infrastructure, threat categories. |
| Security intelligence for a domain: risk scores, categories, DNS info. |
| Threat intelligence for multiple domains at once. |
| Historical threat data and classifications for a domain. |
| Domains that have resolved to a given IP (passive DNS). |
| WHOIS registration data for a domain. |
| ASN overview and subnet allocations. |
Account & audit
Tool | Description |
| Cloudflare accounts accessible with the current token. |
| Account audit log entries (who changed what and when). |
| Workers KV namespaces in an account. |
Usage examples
Once connected, ask your MCP client things like:
"List the DNS records for example.com."
"A request was blocked with Ray ID 8f1c2d3e4f5a6b7c — why?"
"Show me the high-severity Security Center insights for this zone."
"Is IP 203.0.113.10 known to be malicious? What domains resolve to it?"
"Which firewall rules are currently challenging traffic?"
Configuration
The server communicates over stdio and can be connected from any MCP client.
Variable | Required | Purpose |
| Yes | Authenticates all Cloudflare API calls. |
| No | Needed by account, audit log, KV, and intel tools. |
Claude Code
claude mcp add cloudflare \
-e CLOUDFLARE_API_TOKEN=your-api-token \
-- go run github.com/M-Yamashita01/cloudflare-mcp-go@v0.2.0Or, if you have the repository cloned locally:
claude mcp add cloudflare -e CLOUDFLARE_API_TOKEN=your-api-token -- go run .Claude Desktop / other MCP clients
Build the binary and point your client's MCP config at it. On macOS the Claude Desktop config lives at ~/Library/Application Support/Claude/claude_desktop_config.json:
go build -o cloudflare-mcp-go .{
"mcpServers": {
"cloudflare": {
"command": "/path/to/cloudflare-mcp-go",
"env": {
"CLOUDFLARE_API_TOKEN": "your-api-token"
}
}
}
}Any MCP-compatible client can connect via stdio transport using the same pattern.
Build & run manually
go build -o cloudflare-mcp-go .
export CLOUDFLARE_API_TOKEN="your-api-token"
./cloudflare-mcp-goProject structure
main.go # Entry point
internal/
cfapi/ # Shared Cloudflare API client
tool/
zone/ # Zone management tools
dns/ # DNS record & analytics tools
account/ # Account management tools
audit/ # Audit log tools
kv/ # Workers KV tools
security/ # Firewall, WAF & rate limiting tools
securitycenter/ # Security Center insight tools
intel/ # Threat intelligence tools
logs/ # HTTP request log tools
doc/
architecture.md # Architecture documentationSee doc/architecture.md for detailed design documentation.
Available Tools
28 toolsget_asn_intelA
Get an overview of an Autonomous System Number (ASN) and its subnet allocations. Useful for understanding the network behind a suspicious IP and assessing whether an entire ASN is involved in attacks.
| Name | Required | Description | Default |
|---|---|---|---|
| asn | Yes | required,The Autonomous System Number to look up | |
| account_id | Yes | required,The ID of the Cloudflare account |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It implies a read-only operation ('Get') but does not disclose potential side effects, error conditions, required permissions, or rate limits. It adds that it returns 'overview' and 'subnet allocations,' which gives some insight into output, but not detail on edge cases or authentication requirements beyond the account_id parameter.
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 unnecessary words. The primary action and resource are front-loaded ('Get an overview of an ASN and its subnet allocations'), followed by a concise use-case sentence. Every word earns its place.
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 read tool with two required parameters and no output schema, the description adequately covers what it does (returns an overview and subnet allocations) and when to use it (analyzing suspicious IPs, ASN-level attack involvement). It lacks explicit return format or error handling details, but for a 'get' operation, this is sufficient for an agent to invoke it 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?
Schema coverage is 100%, so both parameters (asn and account_id) are already documented in the input schema. The description does not add any additional meaning or syntax details beyond what the schema provides. The mention of 'overview' and 'subnet allocations' gives context about the return value, not about the parameters themselves. Baseline of 3 is appropriate since schema handles the heavy lifting.
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 a specific verb ('Get') and a specific resource ('overview of an Autonomous System Number (ASN) and its subnet allocations'). It also provides context on the purpose, such as 'understanding the network behind a suspicious IP' and 'assessing whether an entire ASN is involved in attacks,' which distinguishes it from sibling tools like get_ip_intel or get_whois.
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 gives practical guidance on when to use this tool: 'Useful for understanding the network behind a suspicious IP and assessing whether an entire ASN is involved in attacks.' This implies the context (IP investigation, ASN-level threat assessment) but does not explicitly name alternatives or exclusions. However, the sibling list includes get_ip_intel and get_whois, so the ASN-specific focus is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dns_analyticsA
Get DNS query analytics report for a Cloudflare zone. Returns query counts, response codes, and query type distributions. Useful for detecting DNS anomalies and attack patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Start date for the report in ISO 8601 format (e.g. 2026-05-01T00:00:00Z) | |
| until | No | End date for the report in ISO 8601 format | |
| zone_id | Yes | required,The ID of the zone |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states what the report returns and that it is read-oriented, but it does not disclose operational traits such as read-only status, default time range behavior, or data availability limits.
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 lead with the action and resource, then the return contents, then a use case. Every sentence provides information without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The definition gives enough to call the tool correctly: zone_id is the only required parameter and the return categories are stated. It would be more complete with default-date behavior and output format, but those are minor for this simple report 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?
Schema description coverage is 100%, so the schema already documents zone_id, since, and until. The description adds no additional parameter-level meaning beyond naming the zone and output categories, so 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 ('Get') and resource ('DNS query analytics report... for a Cloudflare zone'), and names concrete return contents (query counts, response codes, query type distributions). This distinguishes it from sibling tools like list_dns_records or get_domain_intel 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?
'Useful for detecting DNS anomalies and attack patterns' gives a clear use context for the report. It does not spell out exclusions or alternatives, but the use case is explicit enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_domain_historyA
Get historical threat data for a domain. Returns past and current security threat categories and content classifications. Useful for checking if a domain has a pattern of malicious behavior over time.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | required,The domain name to look up | |
| account_id | Yes | required,The ID of the Cloudflare account |
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 states what the tool returns but does not mention any limitations, permissions, rate limits, or side effects. Since this is a read operation, the lack of explicit read-only status is a gap, and there is no discussion of potential errors or data scope.
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 concise sentences, front-loaded with the purpose and output, followed by a practical use case. There is no extraneous content, making it efficient 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?
For a simple read tool with two parameters and no output schema, the description adequately explains the return data and provides a usage scenario. It lacks details about pagination or authentication, but these are not critical for a basic lookup and the use case is clearly stated.
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 both parameters (domain and account_id) having descriptive text. The tool description adds no extra meaning beyond what the schema already provides, so it stays at the baseline 3. It does not explain why account_id is needed or how it influences the query.
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 retrieves historical threat data for a domain and specifies the returned data types (past and current security threat categories and content classifications). It uses a specific verb and resource, and the use case for checking malicious behavior patterns makes the purpose 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 context for when to use the tool ('checking if a domain has a pattern of malicious behavior over time'), which guides selection. It does not explicitly name alternatives or state when not to use it, but the context is sufficient for most scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_domain_intelA
Get security intelligence for a domain. Returns risk scores, content categories, and DNS information. Useful for investigating suspicious domains found in referrer headers or access logs.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | required,The domain name to look up | |
| account_id | Yes | required,The ID of the Cloudflare account |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool returns risk scores, content categories, and DNS information, which gives some insight into output. However, it does not explicitly state read-only behavior, rate limits, or error conditions. This adds value but is not comprehensive.
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 with no filler. The primary action is front-loaded, followed by return contents, then a practical use case. Every sentence earns its place, making it highly scannable for an agent.
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 only two simple parameters and no output schema, the description covers the essential aspects: what it does, what it returns, and when to use it. A minor gap is that it doesn't mention any permission or account prerequisites, but the parameter suggestions cover the account ID. Overall, it is nearly complete for a lookup 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?
Schema coverage is 100%, with both 'domain' and 'account_id' already described in the input schema. The description adds no additional parameter-level meaning beyond what the schema 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 states a specific verb and resource ('Get security intelligence for a domain') and enumerates concrete return contents (risk scores, content categories, DNS information). It is clearly differentiated from siblings like get_ip_intel by domain focus and further reinforced by the use case of investigating suspicious domains. This is unambiguous and immediately actionable.
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 context: 'Useful for investigating suspicious domains found in referrer headers or access logs.' This gives an agent a concrete scenario for when to use it. However, it does not explicitly mention alternatives or when not to use it, so it stops short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_domain_intel_bulkA
Get threat intelligence for multiple domains at once. Returns risk scores and content categories for each domain. Useful for batch assessment of suspicious domains found in logs.
| Name | Required | Description | Default |
|---|---|---|---|
| domains | Yes | required,Comma-separated list of domain names to look up | |
| account_id | Yes | required,The ID of the Cloudflare account |
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 mentions the tool returns risk scores and categories but does not disclose behavioral traits such as authentication requirements, rate limits, maximum batch size, error handling for invalid domains, or whether the operation is read-only. The description is silent on these critical aspects.
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 front-loads the core purpose and output, then adds a practical use case. Every word earns its place, 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 tool is simple and the schema covers parameters, the lack of an output schema and annotations means the description should clarify response structure, limits, and edge cases. It mentions the key outputs (risk scores and categories) but omits details like per-domain ordering, error behavior, or any batch size restrictions. This is adequate for a minimal tool 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 description coverage is 100%, so both parameters (domains and account_id) are already documented in the schema. The description adds minimal extra meaning, only reinforcing that multiple domains are handled. It does not provide examples, formatting details, or constraints beyond what the schema states, so it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (get threat intelligence), the resource (multiple domains), and the output (risk scores and content categories). It also distinguishes itself from the singular sibling get_domain_intel by emphasizing 'multiple domains at once', making it unambiguous for an agent to select.
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 use case ('batch assessment of suspicious domains found in logs') but does not explicitly state when not to use it or name alternatives like get_domain_intel for single domains. The guidance is implied rather than explicit, leaving the agent to infer the distinction from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_firewall_ruleA
Get details of a specific custom firewall rule by ID. Returns the full rule configuration including filter expression, action, and priority. Useful for investigating why a specific rule triggered a block.
| Name | Required | Description | Default |
|---|---|---|---|
| rule_id | Yes | required,The ID of the firewall rule | |
| zone_id | Yes | required,The ID of the zone |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses that this is a read operation ('Get'), scopes behavior to custom rules only (so agents know managed rulesets are out of scope), and lists what the response contains. It does not mention error/404 behavior, but that is a minor gap for a simple get-by-ID tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler: the first front-loads the action, scope, and return contents; the second supplies the use case. Every sentence earns its place.
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 2-parameter read tool with no output schema, the description covers what it does, what it returns, and when to use it. The only missing nicety is noting that rule_id typically comes from list_firewall_rules, which would aid call chaining — a minor omission given the tool's simplicity.
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% — both rule_id and zone_id are already documented in the schema. The description adds only the 'custom firewall rule' qualifier to clarify what rule_id refers to, without adding format or sourcing details. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Get details of a specific custom firewall rule by ID') and enumerates the returned contents (filter expression, action, priority). The 'custom... by ID' scope clearly differentiates this from list_firewall_rules and get_ruleset, so an agent can distinguish it without opening schemas.
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?
'Useful for investigating why a specific rule triggered a block' gives a concrete scenario with clear context, and the 'specific... by ID' wording implies the contrast with list_firewall_rules. However, no alternative is explicitly named and no when-not condition is stated, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_insight_countsA
Get aggregated Security Center insight counts by dimension (severity, class, or type). Useful for quick security posture overview and prioritization.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | required,The ID of the zone | |
| dimension | Yes | required,Aggregation dimension: severity or class or type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description communicates the core behavior: aggregated counts by a requested dimension. However, there are no annotations, so the description carries the burden of disclosure; it does not mention response shape, whether counts include all insights, or any read-only guarantee, leaving some behavioral detail implicit.
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 filler. The first sentence front-loads the operation and key dimensions, and the second sentence adds a useful use case without 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?
For a simple two-parameter tool with full schema coverage, the description provides enough information for an agent to select and invoke it correctly. The only notable omission is explicit detail about the returned format, but 'counts' makes the expected output reasonably inferable.
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 both parameters already have documentation. The tool description adds the purpose of the dimension field ('severity, class, or type') but does not add new parameter-level meaning beyond what the schema already states, so the baseline score 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 states a specific verb and resource: 'Get aggregated Security Center insight counts' by dimension. It also names the aggregation dimensions ('severity, class, or type'), which clearly distinguishes it from the sibling list_security_insights tool that returns raw insights rather than counts.
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 gives a clear use context: 'quick security posture overview and prioritization.' It does not explicitly name alternatives or when-not-to-use conditions, but the intended applicable scenario is evident enough for an agent to route to it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ip_intelA
Get threat intelligence for an IP address. Returns geolocation, ASN, infrastructure type, and security threat categories. Useful for investigating suspicious IPs found in security events or access logs.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | required,The IPv4 or IPv6 address to look up | |
| account_id | Yes | required,The ID of the Cloudflare account |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly signals a read operation with 'Get' and discloses the output data categories, which is the key behavioral context for a lookup tool. It does not explicitly mention auth or rate limits, but none are provided in annotations and the required account_id parameter implies authentication; no additional side effects need 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 carry all needed information with no redundant clauses. The purpose is front-loaded, the return fields are listed, and the usage scenario is appended efficiently.
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 two-parameter lookup with no output schema, the description sufficiently names the output categories and the intended use case. It could mention edge cases or error handling, but those are not essential for an agent to select and invoke this tool 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?
Schema description coverage is 100%: the schema already explains 'ip' and 'account_id'. The description adds no parameter-level detail beyond what the schema provides, so the standard 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 first sentence names a specific verb and resource: 'Get threat intelligence for an IP address.' The second sentence enumerates distinct return fields (geolocation, ASN, infrastructure type, security threat categories) that differentiate it from sibling domain/ASN intelligence tools like get_domain_intel and get_asn_intel.
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 final sentence explicitly states when to use it: 'useful for investigating suspicious IPs found in security events or access logs.' It gives clear context but does not name specific alternatives or exclusion conditions, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_log_by_rayidA
Look up an HTTP request log entry by its Cloudflare Ray ID. Returns request details including client IP, path, user agent, status code, and security actions. Useful for investigating why a specific request was blocked or challenged.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated list of log fields to return | |
| ray_id | Yes | required,The Ray ID of the request to look up | |
| zone_id | Yes | required,The ID of the zone | |
| timestamps | No | Timestamp format: unixnano (default), unix, or rfc3339 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool is a read-only lookup and lists the types of information returned. Yet it omits behaviors like error handling when a ray_id is not found, authentication requirements, or rate limits. For a simple lookup this is adequate but not fully transparent.
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, front-loaded with the action and resource, followed by a useful use-case sentence. It is efficient and free of fluff, though the second sentence could be considered slightly redundant with the first. Overall it is concise 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?
Given no output schema and no annotations, the description must compensate. It states the purpose and key return fields, and the schema covers parameter descriptions, so an agent can call it correctly. However, it lacks guidance on alternative tools and does not mention error cases or prerequisites, leaving some contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds context about the returned fields, which helps an agent understand the purpose of the resource, but it does not explain parameter-specific semantics beyond what the schema already states. It adds little value over the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Look up an HTTP request log entry by its Cloudflare Ray ID.' It clearly differentiates the tool from siblings like get_ratelimit or get_firewall_rule because it targets log entries by Ray ID. The mention of returned details (client IP, path, user agent, etc.) further clarifies the resource scope.
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 usage when investigating blocked/challenged requests, giving a clear context. However, it does not explicitly mention when not to use the tool or name alternatives such as query_security_events, which could also investigate security actions. The guidance is implied rather than explicit, so it falls short of a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rate_limitA
Get details of a specific rate limiting rule by ID. Returns the full configuration including threshold, period, action, and match criteria.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | required,The ID of the zone | |
| rate_limit_id | Yes | required,The ID of the rate limit rule |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the read operation and the returned fields, but does not mention behavior for missing IDs, authorization requirements, or error cases. The surface behavior is clear, but deeper semantics are not covered.
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 focused sentences with no filler. It front-loads the purpose and immediately adds valuable return-content detail, earning every word.
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 two-parameter retrieval tool, the description is nearly complete: it names the resource, the identifier, and the return shape. The lack of an output schema is compensated by listing response fields. Minor gaps around not-found behavior and credentials prevent a 5.
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 schema already documents both parameters. The description adds minimal parameter-level value beyond confirming the operation is by ID, which matches the baseline of 3.
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 ('Get') and resource ('rate limiting rule by ID'), and explicitly indicates it returns the full configuration. This distinguishes it from sibling list_rate_limits and other get_* tools because it is scoped to a specific rate limiting rule.
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?
Usage is implied: call this when you have a specific rate_limit_id and need the rule's full configuration. However, it does not explicitly state when not to use it or mention the alternative sibling list_rate_limits for discovering IDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rulesetA
Get a specific ruleset with all its rules. Returns the complete rule definitions including expressions, actions, and configurations. Useful for inspecting what traffic patterns are matched by a ruleset.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | required,The ID of the zone | |
| ruleset_id | Yes | required,The ID of the ruleset |
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 clearly states the output includes complete rule definitions with expressions, actions, and configurations, which is meaningful context beyond the tool name alone. It does not cover error cases or auth requirements, but for a read-only get operation the disclosed behavior is substantial.
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?
Three sentences, all informative: the first states what the tool does, the second details the return payload, and the third gives the use case. There is no filler, and the naming is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only two required parameters, full schema coverage, and no output schema, the description sufficiently explains both the return contents and the practical use case. An agent has enough information to call this tool correctly and interpret the result.
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 parameters zone_id and ruleset_id are already fully documented in the schema. The description adds no additional parameter-level meaning beyond reinforcing that a specific ruleset is being retrieved.
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 a specific ruleset with all its rules.' It further defines the scope as 'complete rule definitions including expressions, actions, and configurations,' making it clearly distinct from list-oriented siblings like list_rulesets.
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 gives a clear intended use case: 'Useful for inspecting what traffic patterns are matched by a ruleset.' It does not explicitly name alternatives or state when not to use this tool, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_whoisA
Get WHOIS registration data for a domain. Returns registrant information, nameservers, and registration/expiration dates. Useful for investigating domain ownership and detecting newly registered suspicious domains.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | required,The domain name to look up | |
| account_id | Yes | required,The ID of the Cloudflare account |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses the output contents (registrant info, nameservers, dates) and implies a read-only lookup, but does not mention authentication requirements, rate limits, or failure behavior for invalid/unknown domains.
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?
Three concise sentences with no filler. The main action is front-loaded, followed by output summary and use case; every sentence 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?
For a low-complexity tool with two parameters and no output schema, the description provides the essential action, outputs, and use cases. It could be more complete by noting response format or errors, but the main context is present.
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 parameters are already documented in the schema. The description does not add parameter-specific meaning beyond calling the resource a domain, which keeps it at the baseline for 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 names a specific verb and resource: 'Get WHOIS registration data for a domain.' It distinguishes this from sibling domain tools by focusing on WHOIS registrant info, nameservers, and registration/expiration dates rather than general domain intelligence or history.
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 gives clear context: 'Useful for investigating domain ownership and detecting newly registered suspicious domains.' This implies when to choose the tool, though it doesn't name sibling alternatives or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_zoneA
Get details of a specific Cloudflare zone. Returns zone details such as ID, name, status, and plan.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | required,The ID of the zone to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of explaining behavior. It usefully discloses the return content (ID, name, status, plan), but it does not mention error behavior, authentication requirements, or read-only semantics beyond the implied 'get' action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the action and resource, then immediately lists return fields. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter getter with no output schema, the description gives enough return-value context to set expectations. It could mention not-found or error behavior for full completeness, but nothing critical is missing for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents zone_id with 100% coverage, so the description adds little beyond restating that the zone is 'specific'. The baseline of 3 applies because the schema handles parameter semantics adequately.
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 'Get' with a clear resource ('a specific Cloudflare zone') and states the returned information (ID, name, status, plan). This clearly differentiates it from sibling tools like list_zones, which list rather than get 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 phrase 'a specific Cloudflare zone' implies this tool is for retrieving one zone by ID, but it does not explicitly say when to prefer this over list_zones or other get_* siblings. Usage context is implied rather than directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_accountsA
List Cloudflare accounts accessible with the current API token. Returns account details such as ID, name, and settings.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Account name to filter by | |
| page | No | Page number of paginated results (default: 1) | |
| per_page | No | Number of accounts per page (default: 20, max: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the burden of behavioral disclosure. It discloses the read-only nature ('List'), the authorization scope ('accessible with the current API token'), and the return substance ('account details such as ID, name, and settings'). Pagination behavior is not described, but it is largely covered by the input schema.
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 with no filler. The first sentence front-loads the action and scope, and the second sentence defines the return shape. Every clause contributes useful information.
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 read-only list tool with no output schema, the description gives enough context about the resource, credential scope, and return values. Combined with fully documented pagination parameters, it is nearly complete; the only minor gap is that pagination behavior is not explicitly stated in the description.
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 three parameters are fully documented in the schema (name filter, page, per_page), so the baseline is 3 even without parameter details in the description. The description adds no new parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states an explicit verb ('List'), a specific resource ('Cloudflare accounts'), and a binding scope ('accessible with the current API token'). This clearly separates it from sibling tools like list_zones and list_dns_records, even without naming alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'accessible with the current API token' implies the intended context, but the description never explicitly states when to use this tool versus alternatives or when not to use it. No sibling-tool exclusions or fallback guidance are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_audit_logsA
List audit log entries for a Cloudflare account. Returns operation history including timestamps, actors, actions, and affected resources. Useful for investigating who changed what and when.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number of paginated results (default: 1) | |
| since | No | Filter by start date in ISO 8601 format (e.g. 2026-05-01T00:00:00Z) | |
| before | No | Filter by end date in ISO 8601 format | |
| actor_ip | No | Filter by the IP address of the actor | |
| per_page | No | Number of entries per page (default: 25, max: 1000) | |
| direction | No | Sort direction: asc or desc (default: desc) | |
| account_id | Yes | required,The ID of the Cloudflare account | |
| actor_email | No | Filter by the email of the actor |
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 states the tool 'Returns' data, implying a read-only operation, and describes the content of the results. However, it does not disclose pagination behavior (despite page/per_page parameters), potential side effects, authentication requirements, or what happens when filters are applied. The description gives a general sense of the operation but lacks depth expected for a query tool without annotation support.
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 concise sentences with no redundant information. The action is front-loaded ('List audit log entries'), followed by a brief explanation of the returned data and a clear use case. Every sentence earns its place, and there is 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 tool's complexity (8 parameters, no output schema), the description provides a good high-level overview of the returned data and purpose. It does not explicitly mention pagination or the shape of the response, but the schema covers parameters and the description gives enough context for an agent to understand what the tool does. The lack of an output schema is partially mitigated by the description of the returned fields. Minor gaps include not mentioning pagination or sorting defaults, but the description is adequate for most use cases.
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 each of the 8 parameters having a description in the schema. The tool description itself does not add any parameter-specific information beyond what the schema already provides. Since the schema fully documents the parameters, the description does not need to compensate, 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 clearly states the tool lists audit log entries for a Cloudflare account and specifies the data returned (timestamps, actors, actions, affected resources). It differentiates itself from siblings like list_received_logs or query_security_events by focusing on audit log investigation, though it does not explicitly name any alternatives. The verb 'List' and resource 'audit log entries' make the purpose 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 gives a clear use case ('investigating who changed what and when') but does not explicitly state when to use this tool versus similar siblings such as query_security_events or list_received_logs. There is no mention of exclusions or alternatives. The usage context is implied but not made explicit enough to guide an agent to the right tool among closely related options.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dns_recordsA
List DNS records for a Cloudflare zone. Returns record details such as ID, type, name, content, TTL, and proxy status.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | DNS record name to filter by | |
| page | No | Page number of paginated results (default: 1) | |
| type | No | DNS record type to filter by (A, AAAA, CNAME, TXT, MX, etc.) | |
| content | No | DNS record content to filter by | |
| zone_id | Yes | required,The ID of the zone | |
| per_page | No | Number of records per page (default: 100, max: 5000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral disclosure burden. It clearly signals a read-only list operation and enumerates return fields, but it does not mention pagination behavior, result limits, or how the filtering parameters affect the response. This is acceptable but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with the action front-loaded and the return fields following. No filler or repetition of schema 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 straightforward list operation with fully documented parameters and a stated set of return fields, the description is largely sufficient. It does not explicitly explain pagination behavior, but the schema's page/per_page parameters cover that. A slightly richer usage note would make it 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 schema already documents every parameter. The description adds no meaning beyond the schema, such as filter syntax or interactions between parameters. Baseline 3 is appropriate because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List DNS records for a Cloudflare zone.' It also names the return fields, which distinguishes this from sibling tools like list_passive_dns or get_dns_analytics. An agent can identify exactly what this tool does without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool instead of alternatives. It does not mention prerequisites such as needing a valid zone_id, nor does it contrast against sibling DNS-related tools. Usage must be inferred entirely from the tool name and first sentence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_firewall_rulesA
List custom firewall rules for a Cloudflare zone. Returns rule expressions, actions, and priorities. Useful for investigating which rules may be blocking or challenging traffic.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number of paginated results (default: 1) | |
| zone_id | Yes | required,The ID of the zone | |
| per_page | No | Number of rules per page (default: 25, max: 100) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the action and the data returned, but it does not mention that this is a read-only operation (no side effects), or any prerequisites like required permissions. It also does not describe pagination behavior beyond what the schema implies. The description provides some context but lacks depth on response structure or potential errors. Given the read-only nature and common listing pattern, a 3 is appropriate.
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 concise sentences. The first states the action and output, the second provides a use case. There is no fluff or redundancy, and the key information is front-loaded. Every sentence earns its place.
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 it's a simple listing tool with three parameters and no output schema, the description is mostly complete. It covers purpose, returned data, and a typical use case. It could mention that results are paginated (though the schema implies it) and how to interpret the returned rules (e.g., that expressions are in Cloudflare's syntax). But for a list operation, it provides sufficient context for an agent to call it correctly. The absence of explicit pagination guidance is a minor gap.
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% – all three parameters have descriptive text (zone_id, page, per_page) in the schema. The description does not add meaning beyond what the schema provides, except implying that zone_id is the target of the listing. Since the schema covers the parameters adequately, the baseline of 3 is correct.
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 specific verb 'list' and resource 'custom firewall rules' for a Cloudflare zone. It also specifies the returned data (rule expressions, actions, priorities), distinguishing it from other list tools like list_rulesets or list_rate_limits. The context of 'custom' differentiates it from managed rules, providing clear 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 gives a clear use case: 'investigating which rules may be blocking or challenging traffic.' This implies when to use the tool. However, it does not explicitly mention alternatives or when not to use it, such as when needing a single rule (get_firewall_rule) or when working with managed rulesets. But the naming and context provide sufficient guidance for most agents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ip_access_rulesB
List IP access rules for a Cloudflare zone. Returns rules that block, challenge, or allow specific IPs, CIDRs, ASNs, or countries.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | Filter by specific IP address | |
| mode | No | Filter by mode: block, challenge, whitelist, js_challenge | |
| page | No | Page number of paginated results (default: 1) | |
| zone_id | Yes | required,The ID of the zone | |
| per_page | No | Number of rules per page (default: 20, max: 1000) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the behavioral disclosure burden. It communicates a read-only listing operation and describes the output in terms of rule actions and match targets, but it does not mention pagination behavior, ordering, authentication requirements, or whether the list is exhaustive. These are meaningful gaps for a tool with no annotation support.
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 filler. The core action and scope are front-loaded, and the second sentence adds useful detail about the rule actions and match types without repeating schema content.
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 full parameter documentation, the description is minimally adequate: it names the required scope (zone) and the nature of the returned rules. However, with no output schema or annotations, it does not explain pagination semantics, how filters combine, or how this tool differs from closely related sibling tools, leaving the agent to infer those details.
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 every parameter already has a description in the input schema. The tool description adds no parameter-level detail beyond what the schema provides; it only contextualizes what the rules match, which is already implied by the schema's filter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), a specific resource ('IP access rules for a Cloudflare zone'), and clarifies what the rules do ('block, challenge, or allow specific IPs, CIDRs, ASNs, or countries'). It is clear and unambiguous, though it does not explicitly contrast itself with sibling tools such as list_firewall_rules or get_firewall_rule.
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 like list_firewall_rules, get_rate_limit, or get_ruleset. The description only says what the tool does, not under what circumstances an agent should select it or when it should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_kv_namespacesA
List Workers KV namespaces in a Cloudflare account. Returns namespace details such as ID and title.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number of paginated results (default: 1) | |
| order | No | Order results by field: id or title | |
| per_page | No | Number of namespaces per page (default: 20, max: 100) | |
| direction | No | Sort direction: asc or desc | |
| account_id | Yes | required,The ID of the Cloudflare account |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It clearly indicates a read-only listing operation and mentions the returned namespace details. It does not disclose pagination behavior or response shape, but the verb 'List' and the return-value note provide adequate basic transparency for a simple read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and resource, followed by a concise statement of return content. There is no redundant or filler language.
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 a fully documented schema, the description covers scope and return content adequately. It does not enumerate all possible returned fields or pagination mechanics, but the schema's pagination parameters and the 'such as ID and title' summary make the tool usable without further 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?
Schema description coverage is 100%, so the schema already documents all five parameters. The description adds little beyond reinforcing the account scope and the kind of returned data; it does not enrich parameter semantics beyond what the schema provides.
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: 'List Workers KV namespaces in a Cloudflare account.' It also states what is returned ('namespace details such as ID and title'), making the tool's purpose unmistakable and distinct from the sibling Cloudflare tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this tool when you need to enumerate KV namespaces for a given Cloudflare account. However, it does not explicitly contrast with alternatives or state when not to use it, so guidance is only implied rather than direct.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_log_fieldsA
List all available HTTP request log fields for a Cloudflare zone. Returns field names and descriptions. Use this to discover which fields can be specified when calling get_log_by_rayid or list_received_logs.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | required,The ID of the zone |
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 states the output (field names and descriptions) and implies a read-only discovery operation, but it does not explicitly confirm no side effects, mention authentication needs, rate limits, or pagination 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?
Two efficient sentences deliver the purpose, output, and usage guidance with no wasted words. The description is front-loaded with the resource and action, then immediately points to related tools.
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 low-complexity discovery tool with one fully documented parameter and no output schema, the description sufficiently covers the return value and intended use. Minor omissions like pagination or error behavior are not critical for this kind of 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?
The input schema already fully documents the single zone_id parameter with 100% coverage. The description adds no additional parameter semantics beyond what the schema provides, so the baseline score 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 a specific verb and resource: list available HTTP request log fields for a Cloudflare zone, returning field names and descriptions. It also references sibling tools, distinguishing it from get_log_by_rayid and list_received_logs.
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 use this tool to discover which fields can be specified when calling two specific siblings. It provides clear context for when to use the tool, though it does not mention exclusions or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_passive_dnsA
List domains that have resolved to a specific IP address (passive DNS). Useful for identifying shared hosting or malicious infrastructure by revealing which domains point to a given IP.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | required,The IPv4 address to look up | |
| account_id | Yes | required,The ID of the Cloudflare account |
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 states the operation is a 'list' (implying read-only) and reveals domains for an IP, but it does not mention any limits, pagination, or what happens when no results exist. For a simple list operation this is adequate, but it leaves some behavioral traits unspecified.
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 zero wasted words. The primary action and resource are stated first, followed by a concise rationale for use. It is appropriately sized and front-loaded.
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 two-parameter tool with full schema coverage and no output schema, the description provides the essential purpose and a use case. However, it lacks explicit usage guidelines (when not to use, alternatives) and any mention of behavioral limitations. Given the low complexity, it is minimally sufficient but not comprehensive.
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 provides full descriptions for both parameters (ip and account_id) at 100% coverage, so the baseline is 3. The description does not add any additional semantic detail beyond the schema; it only ties the ip parameter to the concept of passive DNS. No enhancement is needed, but no extra value is provided either.
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 a specific verb ('List') and resource ('domains that have resolved to a specific IP address'), and immediately identifies it as passive DNS. It is distinct from sibling tools like get_ip_intel or get_domain_intel, though it does not explicitly name alternatives. The purpose is unambiguous and actionable.
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 gives a concrete use case ('identifying shared hosting or malicious infrastructure'), which implies when it is useful. However, it does not explicitly say when not to use it or mention alternatives such as get_ip_intel or get_domain_intel that might also provide IP-related intelligence. The guidance is contextual but not prescriptive about choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rate_limitsA
List rate limiting rules for a Cloudflare zone. Returns thresholds, matching criteria, actions, and bypass rules. Useful for checking brute-force protection and identifying rate-limited traffic.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number of paginated results (default: 1) | |
| zone_id | Yes | required,The ID of the zone | |
| per_page | No | Number of rules per page (default: 25, max: 1000) |
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 disclose response contents ('thresholds, matching criteria, actions, and bypass rules') and the 'list' verb implies a read-only operation, but it does not address pagination behavior, ordering, errors, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the action, the response contents, and a concrete use case. The primary purpose is front-loaded and there is no filler or repetition of schema information.
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 paginated list tool with fully documented parameters, the description is nearly complete: it states the purpose, what the response contains (compensating for the absent output schema), and a concrete use case. The only gaps are the lack of explicit sibling routing to get_rate_limit and no explicit read-only/authorization disclosure, which is mitigated by the 'list' verb.
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 all three parameters (zone_id, page, per_page) already documented including defaults and max. The description adds no parameter-level detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List rate limiting rules for a Cloudflare zone.' It further specifies what is returned ('thresholds, matching criteria, actions, and bypass rules'), which distinguishes it from the singular get_rate_limit sibling and from list_firewall_rules/list_rulesets.
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 clear use context: 'useful for checking brute-force protection and identifying rate-limited traffic.' However, it does not name alternatives or state when not to use this tool, so the agent must infer the distinction from sibling names like get_rate_limit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_received_logsA
Retrieve HTTP request logs for a Cloudflare zone within a time range. Returns NDJSON log entries. Time range is limited to 1 hour and data must be at least 5 minutes old. Useful for investigating traffic patterns and anomalies.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | required,End timestamp (exclusive) in RFC3339 or UNIX format | |
| count | No | Maximum number of records to return | |
| start | Yes | required,Start timestamp (inclusive) in RFC3339 or UNIX format | |
| fields | No | Comma-separated list of log fields to return | |
| sample | No | Sampling rate between 0.0 and 1.0 | |
| zone_id | Yes | required,The ID of the zone | |
| timestamps | No | Timestamp format: unixnano (default), unix, or rfc3339 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral transparency burden. It discloses output format (NDJSON) and data availability constraints (time range limited to 1 hour, data at least 5 minutes old). It does not discuss pagination, auth, or default values for count/sample, so it is adequate but not exhaustive.
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?
Four short sentences front-load the purpose, then add necessary constraints and a use case. No redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers the return format (NDJSON) and key constraints. It doesn't explain output fields or pagination, but those are partially addressed by sibling list_log_fields and schema parameters. Overall adequate for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all parameters are described in the schema. The description does not add parameter-specific semantics beyond the schema; it only mentions time range constraints. 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 tool retrieves HTTP request logs for a Cloudflare zone within a time range and specifies the output format (NDJSON). It distinguishes from siblings like get_log_by_rayid and query_security_events by explicitly mentioning HTTP request logs and zone scope.
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 gives clear context: useful for investigating traffic patterns and anomalies, and records specific constraints (1-hour range, 5-minute delay). However, it does not name alternative tools or state when not to use this tool, so it stops short of being fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rulesetsA
List all rulesets for a Cloudflare zone. Returns ruleset metadata (ID, name, kind, phase, version) without individual rules. Use get_ruleset to inspect rules within a specific ruleset.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | required,The ID of the zone |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the burden of behavioral disclosure. It clarifies the return content (metadata only, no rules) and implicitly indicates it is a read operation (list). However, it does not detail pagination, rate limits, or response format, which is a gap for a list operation with no other behavioral metadata.
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, with the primary action and core information in the first sentence, and the alternative routing in the second. Every word serves a purpose; no filler 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?
The tool is simple (one parameter) and the description covers its main behavior and routing to a sibling. However, because there is no output schema and no annotations, it could be more complete by mentioning that the response is a paginated list or any default limits, and note that it is read-only. Still, for a list operation, the current description is sufficient for basic 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 input schema has 100% coverage and describes 'zone_id' as 'The ID of the zone'. The description adds no further meaning about the parameter, so it adds no extra semantic value beyond the schema. The 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 ('List all rulesets'), the resource ('for a Cloudflare zone'), and the key distinction from get_ruleset ('without individual rules'). It is specific and unambiguous, fully distinguishing it from the sibling 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 directs users to use get_ruleset when they need to inspect individual rules, providing a clear when-not-to-use scenario. It lacks mention of alternative list tools (like list_waf_managed_rulesets) but still offers sufficient usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_security_insightsB
List Security Center insights for a Cloudflare zone. Returns security issues with severity, type, and classification. Useful for identifying misconfigurations and vulnerabilities.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | required,The ID of the zone | |
| severity | No | Filter by severity: critical, high, moderate, low, informational | |
| issue_type | No | Filter by issue type | |
| issue_class | No | Filter by issue class |
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 behavioral disclosure. It only mentions what it returns (security issues with severity, type, classification) but does not mention pagination, potential rate limits, authentication needs, or whether results are sorted or filtered. It also does not explicitly confirm this is a read-only operation, though listing implies it.
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, front-loading the primary action and return content. It is efficient and free of fluff, though it could incorporate more usage context without becoming verbose. The structure is good, but not perfect.
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 there is no output schema and no annotations, the description provides the return type and use case but lacks details on pagination, error handling, or how this tool differs from similar ones like get_insight_counts. It is adequate for a simple list operation but leaves some gaps for an agent deciding how to use it fully.
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 documented in the schema. The tool description adds no extra meaning to the parameters—it does not explain how filters interact, provide examples, or clarify the format of values. Since the schema handles parameter semantics, 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 lists Security Center insights for a Cloudflare zone, with a specific verb and resource. It distinguishes itself from siblings like get_insight_counts by focusing on insights with severity, type, and classification, making the purpose 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 mentions it is useful for identifying misconfigurations and vulnerabilities, giving a usage context. However, it does not explicitly state when not to use it or point to alternatives such as get_insight_counts or query_security_events, leaving the routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_waf_managed_rulesetsA
Get the WAF managed rulesets entrypoint for a Cloudflare zone. Returns which managed rulesets (e.g. Cloudflare Managed Ruleset, OWASP) are enabled and their configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | required,The ID of the zone |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the read-only nature ('Get') and the returned content, but does not mention authentication requirements, rate limits, or what 'entrypoint' means behaviorally. It is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The action and resource are front-loaded, and the return-value explanation is concise and directly useful.
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 one-parameter, read-only tool with no output schema, the description explains the return value sufficiently. It could mention whether the response is paginated or how configuration is structured, but the tool's low complexity makes the current description nearly 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% for the single parameter zone_id, so the schema already documents it. The description adds only the context that the tool operates 'for a Cloudflare zone', which does not meaningfully expand on the schema's 'The ID of the zone'.
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 ('Get') and identifies the exact resource ('WAF managed rulesets entrypoint for a Cloudflare zone'). It also clarifies the return value ('which managed rulesets are enabled and their configuration'), making it distinct from siblings like get_ruleset or list_rulesets.
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 usage context ('for a Cloudflare zone') but provides no explicit guidance on when to choose this tool over alternatives such as list_rulesets or get_ruleset. No exclusions or conditions are stated, leaving the agent to infer the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_zonesB
List zones in your Cloudflare account. Returns zone details such as ID, name, status, and plan.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | A domain name to filter zones by | |
| page | No | Page number of paginated results (default: 1) | |
| per_page | No | Number of zones per page (default: 20, max: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that this is a read-only listing operation and mentions returned details, but it does not explain pagination behavior, filtering semantics, authentication needs, or any rate-limit implications.
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 filler. The primary action is front-loaded, and the output details are stated efficiently.
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 three optional parameters and no output schema, the description plus schema covers the essential information. It states what is returned, and the schema documents the parameters. It could mention pagination behavior more explicitly, but overall it is complete enough for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add any meaning beyond the schema for the name, page, or per_page parameters, but it also does not need to since the schema already documents them adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('zones in your Cloudflare account'), and mentions the returned fields. It is distinct from singular get_zone, but it does not explicitly differentiate itself from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like get_zone or list_accounts. The description implies a list operation but provides no context about filtering, pagination, or when a different tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_security_eventsB
Query security events for a Cloudflare zone using the GraphQL Analytics API. Returns event details including client info, action taken, rule details, bot score, and response status for security event triage.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Filter by requested HTTP hostname | |
| limit | No | Max number of events to return (default: 100, max: 10000) | |
| action | No | Filter by action taken: block, challenge, jschallenge, managedchallenge, log, allow, bypass, connectionclose | |
| source | No | Filter by mitigation source: firewallManaged, firewallCustom, firewallrules, waf, rateLimit, bic, hot, securitylevel, uablock, ip, iprange, asn, country, zonelockdown, l7ddos, botfight, botmanagement, apishield, apishieldschemavalidation, apishieldtokenvalidation, apishieldsequencemitigation, dlp, validation | |
| country | No | Filter by client country name (e.g. US, JP, CN) | |
| date_to | Yes | required,End datetime in RFC3339 format | |
| rule_id | No | Filter by the rule ID that triggered the event | |
| zone_id | Yes | required,The ID of the zone | |
| client_ip | No | Filter by client IP address | |
| date_from | Yes | required,Start datetime in RFC3339 format (e.g. 2026-03-23T08:19:58Z) | |
| http_method | No | Filter by HTTP request method (e.g. GET, POST) | |
| request_path | No | Filter by HTTP request path |
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 behavioral disclosure. It mentions the GraphQL Analytics API and states that it returns event details, but does not disclose pagination, default limits, rate limits, data retention, or access requirements. This is minimal transparency for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each earning its place: the first identifies the operation and API, the second summarizes the return payload. No filler, redundancy, or unnecessary detail.
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 12 parameters and no output schema, the description provides a useful high-level summary of returned fields (client info, action, rule details, bot score, response status) but omits output structure, pagination, and behavioral constraints. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 12 parameters are already documented in the schema. The description adds no parameter-specific semantics beyond the return fields, 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?
States a specific verb ('Query'), a clear resource ('security events for a Cloudflare zone'), and the underlying API ('GraphQL Analytics API'). It is unambiguous about the operation, though it does not explicitly differentiate from sibling tools like list_security_insights.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for security event triage' implies a use case and provides some context, but the description offers no explicit guidance on when to use this tool versus alternatives, no exclusions, and no reference to sibling tools.
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.
28 tool updates
v0.1.0- First observed
get_asn_intel - First observed
get_dns_analytics - First observed
get_domain_history - First observed
get_domain_intel - First observed
get_domain_intel_bulk - First observed
get_firewall_rule - First observed
get_insight_counts - First observed
get_ip_intel - First observed
get_log_by_rayid - First observed
get_rate_limit - First observed
get_ruleset - First observed
get_whois - First observed
get_zone - First observed
list_accounts - First observed
list_audit_logs - First observed
list_dns_records - First observed
list_firewall_rules - First observed
list_ip_access_rules - First observed
list_kv_namespaces - First observed
list_log_fields - First observed
list_passive_dns - First observed
list_rate_limits - First observed
list_received_logs - First observed
list_rulesets - First observed
list_security_insights - First observed
list_waf_managed_rulesets - First observed
list_zones - First observed
query_security_events
TDQS
Scored across 28 tools
Most tools target distinct resources and operations, with clear get/list/query patterns. The main risk is among the various intelligence tools (get_domain_intel, get_domain_history, get_whois, get_ip_intel, get_asn_intel), but their descriptions clearly differentiate by input and purpose.
All tool names follow a consistent snake_case verb_noun pattern, using 'get_' for single items, 'list_' for collections, and 'query_' for GraphQL analytics. No mixed styles or vague verbs.
With 28 tools, the server exceeds the typical well-scoped range. While the broad Cloudflare security/analytics domain justifies many resources, the count feels heavy and includes near-duplicates like get_domain_intel and get_domain_intel_bulk.
The toolset provides strong read-only coverage for security investigation: listing and getting firewall rules, rate limits, rulesets, logs, events, and multiple intelligence sources. Missing mutation capabilities (create/update/delete) are a notable gap if management workflows are expected, but for a read-only security analysis server this is nearly complete.
Maintenance
Related MCP Connectors
Cloudflare Workers MCP server: api-flow-analyzer
Cloudflare Workers MCP server: domain-intel
Cloudflare Workers MCP server: ai-gateway
Cloudflare Workers MCP server: interactive-api-playground
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 gradedqualityDmaintenanceA lightweight MCP server that enables agents to interface with Cloudflare's REST API, allowing management of DNS records and other Cloudflare services.6 npm15GPL 2.0
- AlicenseBqualityCmaintenanceSlim Cloudflare MCP Server — 42 tools for managing DNS, zones, tunnels, WAF, Zero Trust, and security via Cloudflare API v4. Multi-zone support. No SSH, no shell, API-only with 3 runtime dependencies. AGPL-3.0 + Commercial dual-licensed.9665 npmAGPL 3.0
- AlicenseCqualityDmaintenanceA high-performance MCP server providing AI assistants with read-only access to the Cloudflare ecosystem. Query your entire Cloudflare infrastructure using natural language through Claude, Cursor, or any MCP-compatible client.3905MIT