mcp-cloudflare-dns
Provides tools for managing Cloudflare DNS zones, DNS records (CRUD), cache purging, and page rules, enabling AI assistants to control Cloudflare DNS settings programmatically.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-cloudflare-dnsList all DNS records for example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-cloudflare-dns
Cloudflare DNS MCP server for operators who need zone, record, cache, and page-rule control from an MCP client without opening the Cloudflare dashboard for every change.
Release posture: beta package, version 0.1.1 from pyproject.toml.
Choose your path
You are... | Start here | Then |
Installing the server in Claude/Codex/Cursor | Quick start below | |
Verifying what the server can touch | ||
Auditing packaging or release metadata |
Related MCP server: cloudflare-dns-mcp-server
Architecture
flowchart TD
U[AI operator] --> C[MCP client]
C --> S[FastMCP server]
E[CF_API_TOKEN] --> S
S --> T[Tool handlers]
T --> R[Retry wrapper]
R --> A[Cloudflare API]
A --> R --> T --> CRequest flow
flowchart TD
Q[Operator asks for a DNS change] --> H[Selected MCP tool]
H --> I[Load token and build client]
I --> J{Cloudflare call succeeds?}
J -- yes --> K[Return normalized JSON result]
J -- retryable --> L[Backoff and retry]
L --> J
J -- no --> M[Return error payload]Quick start
Install the package.
python -m pip install mcp-cloudflare-dnsExport a token with DNS permissions.
export CF_API_TOKEN="your-cloudflare-api-token"Register it in your MCP client.
{
"mcpServers": {
"cloudflare-dns": {
"command": "uvx",
"args": ["mcp-cloudflare-dns"],
"env": {
"CF_API_TOKEN": "your-cloudflare-api-token"
}
}
}
}Available tools
Tool group | Tools | Purpose |
Zone inventory |
| Inspect available zones and key settings |
DNS records |
| Read and mutate records |
Edge actions |
| Invalidate cached content and inspect page rules |
delete_dns_record and full-cache actions stay gated behind the destructive env flags described in
docs/start-here.md.
Runtime proof
Claim | Proof |
Package entry point is stable |
|
Server is MCP-specific, not a generic CLI |
|
Cloudflare failures are retried |
|
Release artifacts are built |
|
Repo map
Path | Purpose |
FastMCP tool surface, env loading, retry wrapper | |
Package metadata, version, script entry point | |
Registry-facing metadata for MCP discovery | |
Setup, env, validation, common failures | |
Component map and request lifecycle |
Validation
Check | Command |
Import compiles |
|
Package builds |
|
README links stay local |
|
License
MIT
Available Tools
10 toolscreate_dns_recordCreate Dns RecordC
Create a new DNS record.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | TTL in seconds. 1 = auto (only valid when proxied=True) | |
| name | Yes | Record name (e.g. 'api' or 'api.example.com') | |
| comment | No | Optional note about this record | |
| content | Yes | Record value (IP address, hostname, text, etc.) | |
| proxied | No | Whether to proxy through Cloudflare (orange cloud). Only valid for A, AAAA, CNAME. | |
| zone_id | Yes | Cloudflare zone ID | |
| priority | No | MX/SRV priority (required for MX records) | |
| record_type | Yes | A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, etc. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only says 'Create a new DNS record.' It does not mention side effects like DNS propagation or duplicate conflicts, permission requirements, or the consequences of creation. This is a significant gap for a mutation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single sentence is concise and free of filler, but it is under-specified; it does not front-load any caveats or context. It is appropriately sized for a trivial tool, yet it borders on under-specification rather than effective conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having 8 parameters with nuances such as TTL auto only when proxied, priority required for MX, and proxied only for certain record types, and no annotations, the description omits all operational context. An agent has to infer usage from the schema and sibling names, leaving the description incomplete for correct 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?
Schema description coverage is 100%, so each of the 8 parameters already has a descriptive explanation. The description adds no parameter-level information, but the schema fully compensates, earning the baseline 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 'Create a new DNS record.' restates the tool name and title almost verbatim, adding no additional scope or qualifiers. It states the operation but provides no differentiation from sibling tools beyond the verb 'create', which is already inherent in the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool over update_dns_record or delete_dns_record, nor any prerequisites such as the need for an existing zone. The description relies entirely on the tool name to convey usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_dns_recordDelete Dns RecordA
Delete a DNS record. Requires CF_ALLOW_DESTRUCTIVE=true.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | Cloudflare zone ID | |
| record_id | Yes | DNS record ID to delete |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the behavioral disclosure burden. It explicitly reveals that the operation is gated behind CF_ALLOW_DESTRUCTIVE=true, signaling both the destructive nature and the likely failure mode if the flag is unset. It does not detail irreversibility effects, but the tool is a straightforward delete.
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 only two sentences, with the action stated first and the critical safety prerequisite stated immediately after. There is 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?
For a simple two-parameter deletion tool with an output schema present, the description covers the essential action and the important guardrail flag. It could mention recovery or side effects, but the flag plus clear verb makes it sufficiently complete for an agent to call 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 for parameters is 100%, and the schema already provides clear descriptions for zone_id and record_id. The description adds no additional parameter-specific semantics, 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 states a clear verb and resource: 'Delete a DNS record.' This directly distinguishes it from sibling tools like create_dns_record, update_dns_record, and list_dns_records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear prerequisite: 'Requires CF_ALLOW_DESTRUCTIVE=true,' which is useful operational guidance. However, it does not explicitly explain when to choose this over alternatives or mention any exclusion conditions beyond the environment flag.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dns_recordGet Dns RecordA
Get a specific DNS record by zone ID and record ID.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes | ||
| record_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. The verb 'Get' makes clear this is a read operation and not destructive, but no additional behavior is disclosed, such as whether a nonexistent record returns an error or whether permissions are needed. For a simple getter this is minimally 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?
The description is a single, front-loaded sentence with no fluff or repetition. Every word earns its place, and the key selection criteria are stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID operation with an output schema already present, the description covers the essential facts: what to retrieve and the identifiers required. It does not need to explain return values because the output schema exists. It could have noted a sibling alternative or error behavior, but the operation is simple enough that the description does not leave a major 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?
The input schema has no descriptions for either parameter and schema description coverage is 0%, so the description must compensate. It does so minimally by relating the parameters to their roles: zone_id and record_id together identify the record. This adds some meaning beyond the bare parameter names, though the names were already fairly self-explanatory.
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 clear verb ('Get') and resource ('specific DNS record'), and identifies the two identifiers that select the record. It does not explicitly distinguish itself from list_dns_records, but the word 'specific' conveys that this is a single-record fetch, which is enough for an agent to separate it from list/create/update/delete siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when the agent already has a zone ID and record ID and wants one DNS record. It does not explicitly say when not to use it or mention alternatives like list_dns_records, but the 'specific' qualifier and the required IDs make the intended context reasonably inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_zoneGet ZoneA
Get details for a specific Cloudflare zone by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of conveying behavior. The verb 'Get' clearly implies a read-only operation, and 'by ID' scopes the request. However, it does not state explicit behavioral details like non-mutation, error behavior, or authentication needs, though the output schema covers return structure. This 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?
The description is one sentence, front-loads the key purpose, and contains no filler or repetition. 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 get-by-ID tool with one parameter and an output schema, the description provides enough context for an agent to understand what the tool does and how to invoke it. It could mention when to use list_zones instead, but the tool's simplicity and the provided schema make it 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 0%, so the description must compensate. It does clarify that the single parameter is the zone's ID and ties it to 'a specific Cloudflare zone,' which adds minimal meaningful context. It does not explain the expected format, how to obtain the ID, or edge cases, leaving it barely sufficient.
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 clear verb ('Get'), a specific resource ('a specific Cloudflare zone'), and the key qualifier 'by ID,' which distinguishes it from list_zones and get_zone_settings. An agent can immediately understand what this tool does and how it differs from its siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this when you have a zone ID and need details for a single zone. However, it does not explicitly contrast with list_zones or explain when to prefer one over the other, leaving the routing decision mostly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_zone_settingsGet Zone SettingsA
Get key security and performance settings for a zone. Returns SSL mode, security level, minification, always-https, brotli, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| zone_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does this by naming the returned setting types (SSL mode, security level, minification, always-https, brotli) and the 'Get' verb implies a non-mutating operation. It does not discuss permissions or error behavior, but this is a simple read-only getter.
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 and resource front-loaded. The enumeration of return values is useful and there is no filler or redundant text.
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 one-parameter read-only getter, the description is complete: it explains what the tool returns, an output schema covers the exact return structure, and the parameter is straightforward. Nothing material is missing for an agent to 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 coverage is 0%, so the description needs to add meaning for the zone_id parameter, but it does not. The parameter name is self-explanatory, yet the description provides no detail about how zone_id should be supplied or what identifying a zone entails.
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 ('Get') and a specific resource ('security and performance settings for a zone') and enumerates representative settings. This clearly distinguishes it from siblings like get_dns_record, purge_cache, and even get_zone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when you need a zone's security/performance settings, but it gives no explicit guidance on when to choose it over get_zone or other siblings. There are no exclusions or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dns_recordsList Dns RecordsC
List DNS records for a zone.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter by record name (e.g. 'api.example.com') | |
| zone_id | Yes | Cloudflare zone ID | |
| record_type | No | Filter by type — A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, etc. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 does not mention pagination behavior — a critical concern for a list operation — nor what the default result set is when no filters are applied. It only implies a read operation, leaving the agent to guess at list semantics.
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 8-word sentence has zero waste and is perfectly front-loaded. It is slightly under-specified, but that is a completeness issue rather than a conciseness defect; the descriptor itself is efficiently written.
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?
An output schema covers the return shape, but for a list operation with three parameters and no annotations, the description fails to explain pagination, default filtering behavior, or when listing differs from fetching a single record. An agent cannot fully predict the tool's behavior from this definition alone.
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 all three parameters (zone_id, name, record_type) with type details and an example for name. The description adds nothing about the filter parameters beyond the schema, so 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 states a specific verb ('List') and a specific resource ('DNS records') scoped to a zone. It is clearly distinct from singular operations like get_dns_record and from get_zone_settings, but it does not explicitly differentiate itself from siblings, so it misses the top score.
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 offers no guidance on when to use this tool versus the related get_dns_record (single record) or update_dns_record siblings. There are no stated exclusions, prerequisites, or use-case scenarios — an agent must infer when listing is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_page_rulesList Page RulesB
List page rules for a zone.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by 'active' or 'disabled' (default: all) | |
| zone_id | Yes | Cloudflare zone ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 only says 'list', which implies a read-only operation, but it does not disclose pagination, ordering, default filter behavior, permissions, or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with zero wasted words. It says exactly what the tool does and no more, which is appropriate for the tool's simplicity.
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, the schema fully documents both parameters, and an output schema exists, so the lack of return-value detail is not a gap. However, the description omits any usage context or exclusion relative to sibling tools and gives no behavioral detail beyond the list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds no semantic detail beyond 'for a zone,' which maps trivially to zone_id. 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?
States a specific verb ('list'), a specific resource ('page rules'), and a clear scope ('for a zone'). This distinguishes it from sibling tools like list_dns_records and list_zones without needing to open 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?
Gives no guidance on when to use this tool versus alternatives like list_dns_records or get_zone_settings. There are no explicit conditions, exclusions, or sibling comparisons, leaving the agent to infer usage solely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_zonesList ZonesB
List all Cloudflare zones on this account.
| Name | Required | Description | Default |
|---|---|---|---|
| name_filter | No | Optional domain name substring to filter results (e.g. 'example.com') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It clearly signals a non-mutating, account-wide list operation, which is useful. However, it does not mention pagination, rate limits, authentication, or what happens when many zones exist, so 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?
A single sentence delivers the core verb, resource, and scope with no filler or redundancy. The description is appropriately sized for a tool with one optional parameter and a simple list operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with one well-described optional parameter and an output schema, the description supplies the essential type and scope. It lacks pagination context or sibling-routing guidance, but those are minor gaps for a basic read-only list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single optional parameter name_filter is fully documented in the input schema with its own description, so schema coverage is 100%. The tool description adds nothing about the filter, but the schema already provides the necessary meaning, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List'), a clear resource ('Cloudflare zones'), and an account-level scope ('on this account'). 'All' implies a collection operation that loosely distinguishes it from get_zone, but it does not explicitly name or contrast any 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?
No guidance is given about when to use this tool versus list_dns_records, get_zone, or get_zone_settings. There are no exclusions, conditions, or references to alternatives. The phrase 'when you need all zones' is implied but essentially tautological.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
purge_cachePurge CacheC
Purge Cloudflare cache for a zone.
| Name | Required | Description | Default |
|---|---|---|---|
| urls | No | Specific URLs to purge (up to 30 per call) | |
| zone_id | Yes | Cloudflare zone ID | |
| purge_everything | No | Purge entire zone cache (overrides urls). Requires CF_ALLOW_DESTRUCTIVE=true. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It names a destructive operation ('Purge') but does not explain that purge_everything overrides urls, destroys the entire zone cache, or requires CF_ALLOW_DESTRUCTIVE=true. The schema hints at these, but the description itself adds no behavioral context beyond the verb.
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?
One short sentence with zero wasted words. The purpose is front-loaded and immediately scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has meaningful branching behavior (urls vs purge_everything, with an override and a safety requirement). The description alone doesn't help an agent choose between modes or understand the destructive scope. An output schema exists, but the description is too sparse to be contextually complete for a mutation tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter (zone_id, urls, purge_everything) documented inline. The description adds no parameter meaning beyond what the schema already provides, 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 states the specific verb 'Purge' and the resource 'Cloudflare cache for a zone.' This clearly distinguishes the tool from zone/DNS/page-rule siblings, but it doesn't capture the two purge modes (specific URLs vs entire zone), so it's clear but slightly generic.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to purge specific URLs versus the entire zone, nor does it mention alternatives or exclusions. Given there are no sibling cache tools, the main usage decision is between the two modes, and no hints are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_dns_recordUpdate Dns RecordA
Update an existing DNS record. Only the fields you provide will be changed.
| Name | Required | Description | Default |
|---|---|---|---|
| ttl | No | New TTL in seconds (1 = auto) | |
| comment | No | Update the record comment | |
| content | No | New record value | |
| proxied | No | Toggle Cloudflare proxy on/off | |
| zone_id | Yes | Cloudflare zone ID | |
| record_id | Yes | DNS record ID to update |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals a key behavioral trait: partial update semantics ('Only the fields you provide will be changed'). With no annotations, this is valuable. But it doesn't disclose other important behaviors like whether updating content triggers validation, what happens to unspecified fields, or any side effects (e.g., propagation, DNS resolution impact).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero waste. The core action is stated first, and the partial-update behavior is front-loaded as the second sentence. Very efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return format is covered. However, with no annotations, the description doesn't cover mutation implications, auth needs, or validation behavior. For an update tool, knowing that only provided fields change is helpful, but an agent might want to know if updates are idempotent or if certain fields (like content) have format restrictions beyond schema types.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds the partial-update semantic, which is meaningful but not parameter-specific. It doesn't clarify nuances like the '1 = auto' TTL special value beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update an existing DNS record') and the resource (DNS record). It's distinct from siblings like create_dns_record and delete_dns_record. However, it doesn't explicitly differentiate itself from list_dns_records or get_dns_record, though the verb 'update' makes it clear.
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 'Only the fields you provide will be changed' gives useful usage context, implying partial updates. However, it doesn't explicitly state when to use this vs alternatives, prerequisites (like needing zone_id and record_id), or when not to use it (e.g., for creating or deleting records).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource and action: zones, DNS records, zone settings, cache, and page rules are clearly separated. The DNS record tools follow a standard CRUD split with no ambiguity between get/list/create/update/delete.
All tool names follow a consistent verb_noun snake_case pattern (list_, get_, create_, update_, delete_, purge_). This makes the toolset predictable and easy to reason about.
With 10 tools, the server is well-scoped for its purpose. Each tool covers a meaningful operation without redundancy or excessive granularity.
DNS record management is fully covered with create, read, update, and delete operations. Zone lookup and settings read are present, but zone settings cannot be updated and page rules only support listing, leaving minor workflow gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Cloudflare Workers MCP server: ai-agent-scratchpad
Cloudflare Workers MCP server: ai-model-router
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceA lightweight MCP server for managing DNS records, purging cache, and interacting with the Cloudflare API through natural language commands.24
- AlicenseNot gradedqualityNot gradedmaintenanceA token-efficient MCP server for managing Cloudflare DNS zones and records with full CRUD support and bulk operations. It can be deployed locally via stdio or as a Cloudflare Worker for remote HTTP access.
- AlicenseAqualityDmaintenanceMCP server to manage Cloudflare Workers, KV, R2, Pages, DNS, and cache from your IDE.13554MIT
- AlicenseNot gradedqualityDmaintenanceA 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.5MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/apexradius/mcp-cloudflare-dns'
If you have feedback or need assistance with the MCP directory API, please join our Discord server