Skip to main content
Glama
ry-ops

Cloudflare MCP Server

by ry-ops

✨ Ask things like

"List my zones." "Point staging.example.com at 203.0.113.10, proxied, then purge the cache." "Which DNS records point at the old server?" "Purge just /assets/app.css." "How much traffic and how many threats did example.com see this week?" "Store maintenance=true in the flags KV namespace."

Related MCP server: Cloudflare Control

🧰 13 tools, and the permissions they need

Group

Tools

Token permission

Zones

list_zones, get_zone

Zone · Zone · Read

DNS

list_dns_records (filter by type, name or content), create_dns_record, update_dns_record, delete_dns_record

Zone · DNS · Edit

Workers KV

list_kv_namespaces, list_kv_keys, read_kv_value, write_kv_value, delete_kv_value

Account · Workers KV Storage · Edit, plus CLOUDFLARE_ACCOUNT_ID

Cache

purge_cache (everything, or specific files, tags or hosts)

Zone · Cache Purge · Purge

Analytics

get_zone_analytics (requests, bandwidth, threats, pageviews)

Zone · Analytics · Read

Seven tools only read. Six change things: creating, updating or deleting DNS records, purging the cache, and writing or deleting KV keys. A token without a permission can't use those tools, so grant only what you need.

🚀 Setup

1. Create an API token. In the Cloudflare dashboard, go to My Profile → API Tokens → Create Token. Start from the Edit zone DNS template, or build a custom token from the table above. Limit it to the zones you want the server to touch.

2. Find your Account ID (Workers KV only). It's on any zone's Overview page, in the right-hand column.

3. Install. You need Python 3.10+ and uv.

git clone https://github.com/ry-ops/cloudflare-mcp-server
cd cloudflare-mcp-server
uv sync

4. Connect Claude Desktop. Add this to claude_desktop_config.json: ~/Library/Application Support/Claude/ on macOS, or %APPDATA%\Claude\ on Windows.

{
  "mcpServers": {
    "cloudflare": {
      "command": "uv",
      "args": ["--directory", "/absolute/path/to/cloudflare-mcp-server", "run", "cloudflare-mcp-server"],
      "env": {
        "CLOUDFLARE_API_TOKEN": "your_api_token",
        "CLOUDFLARE_ACCOUNT_ID": "your_account_id"
      }
    }
  }
}

The server reads only environment variables: CLOUDFLARE_API_TOKEN (required) and CLOUDFLARE_ACCOUNT_ID (for KV). Quit and reopen Claude Desktop to load it. There are more examples in EXAMPLES.md, and a short walkthrough in QUICKSTART.md.

🔒 Security

  • Scope the token to specific zones and only the permissions you need. The Edit zone DNS template plus Zone Read is enough for most DNS work.

  • Keep your MCP client's tool approval on. Deleting DNS records and purging cache take effect immediately.

  • Keep the token out of git. Put it in your client's env block, or in a secrets manager.

🤝 Agent-to-agent (A2A)

agent-card.json describes the server to other agents. It has five skills (zone management, DNS management, KV storage, cache management and analytics), and the minimum and recommended token permissions for each.

🩺 Troubleshooting

The token is wrong or is missing a permission for that tool. Check it against the table above, and that its zone resources include the zone you asked about.

Set CLOUDFLARE_ACCOUNT_ID, and give the token Account · Workers KV Storage · Edit.

Use an absolute path in --directory, run uv sync once in the project, check the JSON is valid, and quit Claude Desktop completely before reopening it.

🛠️ Development

uv sync
uv run cloudflare-mcp-server   # stdio server

All the code is in src/cloudflare_mcp_server/__init__.py. See CONTRIBUTING.md and CHANGELOG.md.

License

MIT. See LICENSE.


Available Tools

13 tools
create_dns_recordB

Create a new DNS record in a zone. Supports all DNS record types.

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idYesThe zone ID
typeYesDNS record type (A, AAAA, CNAME, TXT, MX, etc.)
nameYesDNS record name (e.g., 'www' or '@' for root)
contentYesDNS record content (e.g., IP address, hostname)
ttlNoTime to live (1 = automatic, or 120-86400 seconds)
proxiedNoWhether the record is proxied through Cloudflare (only for A, AAAA, CNAME)
priorityNoPriority (for MX, SRV records)
commentNoComment for the DNS record

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description must cover behavioral traits. Only mentions 'supports all types', but omits validation, permissions, conflict handling, and side effects.

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

Conciseness4/5

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

Single sentence is efficient, though it could include a brief context sentence. No redundancy.

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

Completeness2/5

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

With 8 parameters and no output schema, description does not cover return value, error cases, or usage examples, leaving gaps for agent understanding.

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

Parameters3/5

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

Schema coverage is 100% (baseline 3). Description adds no extra information beyond schema, which fully documents parameters.

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

Purpose5/5

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

Description clearly states action (Create), resource (DNS record), and context (in a zone). Supports all types distinguishes from siblings like delete, update, list.

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

Usage Guidelines3/5

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

No explicit when-to-use vs alternatives. Implies creation but doesn't contrast with update or list. Lacks exclusion criteria.

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

delete_dns_recordB

Delete a DNS record from a zone

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idYesThe zone ID
record_idYesThe DNS record ID to delete

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits like destructiveness, irreversibility, or permission requirements. For a deletion operation, such transparency is important.

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

Conciseness5/5

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

The description is a single, clear sentence with no extraneous words. It efficiently conveys the tool's purpose.

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

Completeness3/5

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

With no output schema and no annotations, the description is minimal. It does not explain return values or error handling. However, for a simple delete operation with two well-described parameters, it is minimally adequate.

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

Parameters3/5

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

Schema coverage is 100% and both parameters have clear descriptions in the schema. The description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Delete' and the resource 'DNS record from a zone'. It differentiates from sibling tools like create_dns_record and update_dns_record.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, or any prerequisites or conditions. The usage is implied only by the tool name.

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

delete_kv_valueB

Delete a key from Workers KV storage

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoAccount ID (uses default from config if not provided)
namespace_idYesThe KV namespace ID
keyYesThe key to delete

TDQS

B3.3/5.0
Behavior2/5

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

The description says 'Delete' but lacks behavioral details such as whether the operation is irreversible, required permissions, or what happens if the key does not exist. With no annotations, the description carries full burden but provides minimal disclosure.

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

Conciseness5/5

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

The description is one sentence, directly front-loading the purpose. Every word is necessary, with no redundancy. Ideal conciseness.

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

Completeness3/5

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

For a simple delete operation with three parameters, the description covers the basic purpose but omits important context: behavior on missing key, error states, immediacy of deletion, and any side effects. It is adequate but not fully complete.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all parameters. The description adds nothing beyond what the schema provides. According to guidelines, high coverage gives a baseline of 3, and no extra value is added.

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

Purpose5/5

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

The description clearly states 'Delete a key from Workers KV storage', specifying the action (delete) and the resource (Workers KV key). It effectively distinguishes from sibling tools like read_kv_value and write_kv_value.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For example, it does not mention that deletion is permanent or suggest using list_kv_keys first. Context about prerequisites or consequences is absent.

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

get_zoneA

Get detailed information about a specific zone by zone ID

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idYesThe zone ID

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full responsibility. It fails to disclose behavioral traits such as read-only nature, error conditions, rate limits, or what 'detailed information' encompasses.

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

Conciseness4/5

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

The description is a single, clear sentence with no extraneous information. It is appropriately concise for a simple retrieval tool, though could benefit from slight expansion.

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

Completeness2/5

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

Given no output schema and minimal description, the agent lacks information about the return format or fields. 'Detailed information' is vague, making the tool less complete for accurate invocation.

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

Parameters3/5

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

The input schema fully describes the single parameter (zone_id) with 'The zone ID'. The description adds 'by zone ID' which reinforces but does not add beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Get detailed information'), the resource ('a specific zone'), and the discriminator ('by zone ID'). It effectively distinguishes from sibling tools like list_zones and get_zone_analytics.

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

Usage Guidelines4/5

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

The description implies usage when a zone ID is known, but does not explicitly contrast with sibling tools or state when not to use. The guidance is clear but not exhaustive.

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

get_zone_analyticsB

Get analytics data for a zone including requests, bandwidth, threats, and pageviews.

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idYesThe zone ID
sinceNoStart time (ISO 8601 format or relative like '-1440' for last 24h)
untilNoEnd time (ISO 8601 format or relative like '-0')

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits like read-only nature, data freshness, or rate limits. It only states it 'gets' data, which implies a read operation but lacks explicit safety or side-effect information.

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

Conciseness5/5

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

The description is a single, clear sentence with 13 words, directly stating the tool's purpose with no redundancy or unnecessary detail.

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

Completeness3/5

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

The description provides some output context (requests, bandwidth, threats, pageviews) but lacks details on output format, time range semantics, and behavioral aspects. Given no output schema, more completeness would be helpful.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds no new meaning beyond the schema. It does not explain how 'since' and 'until' affect the analytics data or provide context beyond field names.

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

Purpose5/5

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

The description clearly states the tool retrieves analytics data for a zone, listing specific data types (requests, bandwidth, threats, pageviews). This distinguishes it from sibling tools like get_zone (zone details) and list_zones (listing zones).

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

Usage Guidelines2/5

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

No usage guidance is provided. The description does not specify when to use this tool, prerequisites, or alternatives among siblings.

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

list_dns_recordsB

List DNS records for a zone. Can filter by type, name, content, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idYesThe zone ID
typeNoDNS record type (A, AAAA, CNAME, TXT, MX, etc.)
nameNoDNS record name to filter by
contentNoDNS record content to filter by
pageNoPage number for pagination
per_pageNoNumber of records per page (max: 100)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions filtering but omits important behavioral traits like pagination (page/per_page parameters exist but no mention of default behavior or limits), sorting, or any rate limits. Minimal disclosure for a listing endpoint.

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

Conciseness4/5

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

The description is a single, concise sentence that conveys the primary action. It is efficiently front-loaded but could include more detail in the same space.

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

Completeness2/5

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

With 6 parameters, no output schema, and no annotations, the description is too sparse. It does not explain pagination behavior, default values, sorting, or what happens when no filters are applied. This leaves gaps for an agent to use the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds 'etc.' but doesn't provide meaningful additional semantic context beyond listing a few filterable fields. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool lists DNS records for a zone, which is a specific verb and resource. However, it does not explicitly differentiate from sibling tools like create/delete/update_dns_record, though the purpose is fairly obvious.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this vs alternatives. Usage is implied by the tool name and context (it's the listing tool among mutation ones), but no exclusions or prerequisites are mentioned.

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

list_kv_keysA

List all keys in a Workers KV namespace. Supports pagination and prefix filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoAccount ID (uses default from config if not provided)
namespace_idYesThe KV namespace ID
prefixNoFilter keys by prefix
limitNoMaximum number of keys to return (default: 1000)
cursorNoCursor for pagination

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description provides behavioral traits: supports pagination and prefix filtering. It honestly represents a read operation. However, it does not disclose rate limits, authorization requirements, or behavior for empty results, but the core behavior is transparent.

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

Conciseness5/5

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

Two sentences, front-loaded with the main action, and no unnecessary words. Every sentence earns its place.

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

Completeness3/5

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

The description omits return value details (e.g., format, pagination metadata). Given no output schema, this is a gap. Parameters are well-documented in schema, so overall adequate but not fully complete.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all 5 parameters. The description adds context by mentioning 'pagination and prefix filtering', which ties to the prefix, limit, and cursor parameters. This adds marginal value beyond the schema.

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

Purpose5/5

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

The description clearly states the verb 'List', the resource 'keys in a Workers KV namespace', and key features (pagination, prefix filtering). This distinguishes it from siblings like read_kv_value (single key) and list_kv_namespaces (list namespaces).

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

Usage Guidelines3/5

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

The description implies usage for listing keys with optional filtering and pagination but does not explicitly state when to use this tool over alternatives (e.g., when you need to enumerate keys vs reading a known key). No exclusion criteria or prerequisite conditions are mentioned.

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

list_kv_namespacesB

List all Workers KV namespaces in the account. KV is Cloudflare's key-value storage.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoAccount ID (uses default from config if not provided)
pageNoPage number for pagination
per_pageNoNumber of namespaces per page

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavioral traits. It only states the basic list action, omitting details like pagination behavior (page and per_page parameters), authentication requirements, rate limits, or whether the result is flat or nested.

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

Conciseness5/5

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

The description is extremely concise at two short sentences, immediately stating the purpose. Every word earns its place; there is no fluff or redundancy.

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

Completeness4/5

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

Given the low complexity of listing namespaces and full schema coverage, the description is largely complete. However, since there is no output schema, a brief note on the shape of the returned data would be beneficial for full completeness.

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

Parameters3/5

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

Input schema provides 100% coverage with descriptions for all parameters (account_id, page, per_page). The description adds no additional semantic meaning beyond what the schema already conveys, so it meets the baseline.

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

Purpose4/5

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

The description uses a clear verb and resource ('List all Workers KV namespaces'), establishing a specific purpose. However, it does not differentiate from sibling tools like list_kv_keys, which is a missed opportunity for clarity.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as list_kv_keys or list_dns_records. The context of usage is implied but not explicit, and no exclusions or prerequisites are mentioned.

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

list_zonesB

List all zones (domains) in the Cloudflare account. Returns zone details including ID, name, status, and nameservers.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter zones by name (optional)
statusNoFilter by status: active, pending, initializing, moved, deleted, deactivated (optional)
pageNoPage number for pagination (default: 1)
per_pageNoNumber of zones per page (default: 20, max: 50)

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It fails to mention that this is a read-only operation, any rate limits, authentication requirements, or potential side effects, offering only a minimal summary of the return fields.

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

Conciseness4/5

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

The description is a single, well-constructed sentence that packs the core purpose and returned fields efficiently, with no fluff. It could be slightly improved by front-loading the filtering capability, but it is already concise.

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

Completeness2/5

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

Given the tool has 4 optional parameters, no output schema, and no annotations, the description is incomplete. It omits important context about pagination behavior, default page size, and the scope of 'all zones' (e.g., whether it returns results across all pages).

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

Parameters3/5

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

Input schema has 100% coverage; all four parameters are well-described in the schema. The description adds only a brief mention of response details, which does not significantly augment parameter understanding, meeting the baseline.

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

Purpose5/5

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

The description clearly states the verb 'list' and the resource 'zones (domains)' in a Cloudflare account, and distinguishes it from sibling tools like list_dns_records or get_zone by explicitly noting the return of zone details (ID, name, status, nameservers).

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

Usage Guidelines3/5

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

The description lacks any guidance on when to use this tool versus alternatives like get_zone (for a single zone). No exclusions or preferences are indicated, leaving the agent to infer from the tool name alone.

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

purge_cacheB

Purge Cloudflare's cache for a zone. Can purge everything or specific files/tags/hosts.

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idYesThe zone ID
purge_everythingNoPurge all cached content (use cautiously!)
filesNoArray of URLs to purge
tagsNoArray of cache tags to purge
hostsNoArray of hosts to purge

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description should fully disclose behavior. It mentions the destructive nature of 'purge_everything' with a caution, but omits details on rate limits, authentication requirements, reversibility, or effects on non-purged content.

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

Conciseness5/5

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

The description is extremely concise, with two sentences that efficiently convey the core function and options. No superfluous words.

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

Completeness2/5

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

Given the lack of output schema and annotations, the description is incomplete. It doesn't explain return values, error conditions, or the requirement that at least one purge method (purge_everything, files, tags, hosts) must be specified. The 'zone_id' parameter is mentioned but its format is not clarified.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema; it simply paraphrases the parameter options without additional constraints or format details.

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

Purpose5/5

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

The description clearly states the action (purge cache), the resource (Cloudflare zone), and the modes (everything or specific files/tags/hosts). It distinctly separates this tool from sibling tools like DNS or KV operations.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool over others or when not to use it. The only hint is the caution on 'purge_everything', but no differentiation between purge modes or prerequisites.

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

read_kv_valueB

Read a value from Workers KV storage by key. Returns the stored value.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoAccount ID (uses default from config if not provided)
namespace_idYesThe KV namespace ID
keyYesThe key to read

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states it reads and returns a value, but does not specify behavior for missing keys (null vs error), repeatability, permissions, or any side effects. This is insufficient for reliable agent invocation.

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

Conciseness4/5

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

Two short sentences with no superfluous content. However, it could incorporate a bit more detail (e.g., key existence handling) without harming conciseness. Still, it is efficiently front-loaded and easy to parse.

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

Completeness2/5

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

For a simple read tool without an output schema, the description should clarify the return format or error cases. It only says 'Returns the stored value,' which is vague. An agent lacks information on what happens if the key does not exist or if the namespace is invalid, making the tool incomplete for autonomous use.

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

Parameters3/5

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

The input schema has 100% coverage with clear descriptions (e.g., account_id defaults to config, namespace_id and key are required). The description adds only 'by key' which is already implied. Since schema coverage is high, baseline 3 is appropriate; no extra nuance is provided.

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

Purpose5/5

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

The description clearly states the action ('Read a value'), the resource ('Workers KV storage by key'), and the return behavior ('Returns the stored value'). This unambiguously differentiates it from sibling tools like write_kv_value or delete_kv_value.

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

Usage Guidelines2/5

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

No usage context or alternatives are mentioned. An agent receives no guidance on when to use this tool over, say, list_kv_keys, or what prerequisites are needed (e.g., does the key need to exist?). This omission forces the agent to rely on trial and error.

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

update_dns_recordB

Update an existing DNS record. Can modify type, name, content, TTL, proxy status, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
zone_idYesThe zone ID
record_idYesThe DNS record ID to update
typeYesDNS record type
nameYesDNS record name
contentYesDNS record content
ttlNoTime to live
proxiedNoWhether the record is proxied through Cloudflare
priorityNoPriority (for MX, SRV records)
commentNoComment for the DNS record

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so description must fully disclose behavior. It states 'update' but does not mention error handling, idempotency, return value, or authorization requirements.

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

Conciseness4/5

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

Single sentence, 14 words, efficient and clear. Could front-load more critical info but remains concise.

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

Completeness2/5

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

No output schema, no description of return value or error conditions. For a tool with 9 parameters (5 required), more contextual guidance is needed.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all parameters. Description adds minimal value (just lists some fields) but does not significantly extend beyond schema.

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

Purpose5/5

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

Description clearly states the tool updates an existing DNS record and lists modifiable fields (type, name, content, TTL, proxy status). It distinguishes from sibling tools like create_dns_record and delete_dns_record.

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

Usage Guidelines2/5

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

No guidance on when to use update versus create or delete. No mention of prerequisites (record must exist) or context for usage.

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

write_kv_valueC

Write a key-value pair to Workers KV storage. Can store text or metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoAccount ID (uses default from config if not provided)
namespace_idYesThe KV namespace ID
keyYesThe key to write
valueYesThe value to store
expiration_ttlNoNumber of seconds for the key to expire
metadataNoArbitrary JSON metadata to store with the key

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description must carry full burden. Only states 'Write' implying mutation, but fails to disclose side effects (overwrites?), authorization needs, or limits (e.g., key/value size limits).

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

Conciseness5/5

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

Two concise sentences with no wasted words. Front-loaded with the essential action.

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

Completeness2/5

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

Lacks information about return values, error conditions, or usage patterns for optional parameters like expiration_ttl and metadata. Given no output schema and no annotations, description is insufficient for complete understanding.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds minimal value beyond the schema, only mentioning 'text or metadata' which schema already covers.

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

Purpose4/5

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

Clearly states the action (write) and the resource (key-value pair to Workers KV storage). Distinguishes from sibling read/delete tools, but could be more specific about full capabilities like expiration and metadata.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives or prerequisites. For example, does not mention that keys must exist or that this overwrites existing keys.

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

Tool Schema Changelog

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

  1. 13 tool updatesv1.0.0
    • First observedcreate_dns_record
    • First observeddelete_dns_record
    • First observeddelete_kv_value
    • First observedget_zone
    • First observedget_zone_analytics
    • First observedlist_dns_records
    • First observedlist_kv_keys
    • First observedlist_kv_namespaces
    • First observedlist_zones
    • First observedpurge_cache
    • First observedread_kv_value
    • First observedupdate_dns_record
    • First observedwrite_kv_value

TDQS

A3.6/5.0

Scored across 13 tools

Disambiguation5/5

Each tool targets a distinct operation within well-separated domains (DNS, KV, zones, cache, analytics). No two tools have overlapping purposes; an agent can easily distinguish them.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (e.g., create_dns_record, list_kv_keys). There are no deviations or mixed conventions.

Tool Count5/5

With 13 tools covering DNS lifecycle, KV storage operations, zone queries, cache purging, and analytics, the count is well-scoped for a Cloudflare management server.

Completeness4/5

Core workflows are covered: DNS CRUD, KV operations (create/read/update/delete/list), zone listing/details, cache purge, and analytics. Minor gaps: no single DNS record retrieval (list can filter) and no zone creation, but overall coverage is strong.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers