@thenavidm/cloudflare-mcp-cli
v3.0.1
Published
Focused Cloudflare MCP and shared CLI with current DNS/Rulesets schemas, private profiles and reviewed mutation workflows.
Maintainers
Keywords
Readme
Cloudflare MCP Server & CLI
Cloudflare MCP server and CLI for Codex and AI agents. 29 tools for current DNS, cache, zone settings, Rulesets, Worker metadata and read-only analytics, with private accounts and explicit operation approval. One shared implementation supplies both binaries and a desktop bundle.
Built and maintained by Navid Moazzez. Built on Slipway, which turns one definition of each tool into the MCP server and the CLI. The complete guide is on navid.me.
The terminal illustrates real command names and approval flow. It is not a recording of a provider account run. Cloudflare already has official CLI and hosted MCP products; their current schemas, approval policies and supported workflows are compared below.
Requires Node 22+ and eligible Cloudflare API access for account operations. Validation: fixture tests, schema validation and protocol/artifact discovery are separate from provider-account outcomes and desktop GUI outcomes, which remain unverified. Section 7 has the measured token costs; no success rate is invented.
Two ways to use it
Command line
npm install -g @thenavidm/cloudflare-mcp-cli@latest
cloudflare-cli tools
cloudflare-cli list-zones --per-page 10 --agent
cloudflare-cli schema create-dns-record
cloudflare-cli create-dns-record --zone-id YOUR_ZONE_ID --payload-file /absolute/private/approved-dns.json --account work --confirm --agentMCP server, for your AI app
codex mcp add cloudflare -- npx -y @thenavidm/cloudflare-mcp-cli@latestConfigure private credentials first. Ask: “Read DNS for this exact zone; do not change any records.” Full setup is in INSTALL.md.
Which one
| Where you work | Surface | | --- | --- | | Codex or shell agent | Shared CLI, local MCP or both | | Desktop chat | Compatible local MCP or desktop bundle | | Scripts / CI | CLI or MCP client | | Remote-only client / broad API | Official Cloudflare hosted MCP / cf | | Workers deployment | Official Wrangler / cf |
Features
| Capability | CLI | MCP | | --- | --- | --- | | Zone/DNS reads | list-zones / list-dns-records | list_zones / list_dns_records | | Explicit DNS changes | create-dns-record / update-dns-record | create_dns_record / update_dns_record | | Exact DNS review/apply | preview-dns-batch / apply-dns-batch | preview_dns_batch / apply_dns_batch | | Rulesets and settings | get-zone-ruleset / get-zone-setting | get_zone_ruleset / get_zone_setting | | Bounded reads / analytics | query-pages / analytics-query | query_pages / analytics_query | | Local schemas / previews | get-operation-schema / preview-operation | get_operation_schema / preview_operation | | Profiles and policy | list-accounts / --account / --confirm | list_accounts / account / confirm |
Contents
| Number | Section | What it covers | | --- | --- | --- | | 1 | What you can ask it | What you can ask it | | 2 | Quick install | Quick install | | 3 | Set up Cloudflare access | Set up Cloudflare access | | 4 | Connect your client | Connect your client | | 5 | Check it works | Check it works | | 6 | Output, flags and exit codes | Output, flags and exit codes | | 7 | MCP or CLI and token cost | MCP or CLI and token cost | | 8 | Every tool and argument | Every tool and argument | | 9 | DNS, Rulesets, cache and analytics | DNS, Rulesets, cache and analytics | | 10 | Pagination, retries and local input files | Pagination, retries and local input files | | 11 | Several private accounts | Several private accounts | | 12 | Writing safely | Writing safely | | 13 | How the two surfaces work | How the two surfaces work | | 14 | Privacy and data handling | Privacy and data handling | | 15 | Environment variables | Environment variables | | 16 | Updates and removal | Updates and removal | | 17 | Troubleshooting | Troubleshooting | | 18 | API coverage and comparisons | API coverage and comparisons | | 19 | Versions | Versions | | 20 | FAQ | FAQ |
1. What you can ask it
- Read the intended zone's DNS records without changing anything.
- Inspect the exact native schema for an A, AAAA, TXT, MX or other supported DNS request.
- Preview a small reviewed DNS batch and submit only the same approved zone/profile/body.
- Apply one explicit DNS edit or deletion after inspecting its record ID and content.
- Read the selected zone setting, then change only the approved value.
- Inspect current Rulesets and the selected phase entrypoint before approving a Ruleset change.
- Purge only the requested cache targets after confirmation.
- Query an eligible analytics dataset for an explicit time window without mutations.
Actual credential-free stdio discovery supplies 29 tools: 18 reads and 11 confirmation-gated mutations. Twenty-two native operations use a pinned, reviewed current REST schema; seven helpers provide local profile/schema/preview, bounded reads, DNS review/apply and query-only analytics. This is a focused management surface. It does not deploy Workers, expose an unrestricted raw API request or implement every Cloudflare product.
2. Quick install
npm install -g @thenavidm/cloudflare-mcp-cli@latest
cloudflare-cli --version
cloudflare-cli tools
cloudflare-cli schema create-dns-record
cloudflare-cli loginRequires Node 22+ for manual installs. Configure private tokens before provider calls. Discovery and local previews work without provider authentication. See INSTALL.md for macOS, Windows, Linux, every supported local client, Docker and desktop extension setup.
3. Set up Cloudflare access
Private API tokens and resource access
- Choose the intended Cloudflare user/account and zone. Create a least-privilege API token through My Profile > API Tokens, or Manage account > Account API tokens for an account-owned token.
- Choose only the permissions needed below and restrict account/zone resources. Check optional expiry and IP filters. Save the secret privately outside every repository; never use the Global API Key with this Bearer-only package.
- Configure CLOUDFLARE_TOKEN_FILE as an absolute token-only file, or privately set CLOUDFLARE_API_TOKEN. Optional CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_ZONE_ID supply input defaults. A default does not restrict token permissions.
- Run cloudflare-cli doctor for local configuration checks. Deliberately run doctor --network to verify token status: user tokens use GET /user/tokens/verify; account-owned tokens need CLOUDFLARE_TOKEN_KIND=account and a private account ID, using GET /accounts/{account_id}/tokens/verify. Only an active result is accepted; token IDs/status bodies are not printed.
- Read the exact zone and DNS records, inspect the complete current input schema, preview the intended change locally and approve only the chosen request. A local preview does not verify provider permissions, conflicts or current remote state.
Requests use Authorization: Bearer on the fixed https://api.cloudflare.com/client/v4 origin. Token-kind selection changes the diagnostic route, not ordinary authorization or resource access. The wrapper does not implement OAuth login, refresh, saved official cf sessions, automatic .env loading or global CLI config ingestion. login prints instructions; it neither opens consent nor saves credentials.
User tokens inherit permitted user access. Account-owned tokens act as service principals; creation requires the provider's token-provisioning capability or Super Administrator role and grants cannot exceed the creator's permissions. Some products still have compatibility restrictions; verify the exact operation in the account-token compatibility documentation.
| Intended task | Permission to review with the provider | Resource scope | | --- | --- | --- | | Discover zones / zone identity | Zone: Read | Intended zone(s) | | Read DNS records | DNS: Read | Intended zone(s) | | Create/edit/delete/batch DNS | DNS: Edit | Intended zone(s) | | Purge cache | Cache Purge permission | Intended zone(s) | | Read/change zone settings | Zone Settings: Read / Edit | Intended zone(s) and supported setting | | Read/change a Ruleset | The permission for its Ruleset phase, such as zone WAF or Transform Rules read/edit | Intended zone(s); phase/plan restrictions apply | | Worker script metadata | Workers Scripts: Read | Intended account(s) | | Query analytics | Analytics: Read and current dataset access | Intended account/zone(s) | | Read Page Rules | Page Rules: Read | Intended zone(s) | | List provider accounts | Account Settings: Read or provider-documented account listing grant | Accessible intended accounts |
Review API token permissions and the selected endpoint's accepted grant list; this table is task guidance, not a complete static authorization manifest. Do not grant token-management, account administration or every zone solely for installation.
Use a private 0700 directory and regular 0600 token-only file on macOS/Linux. Windows users must restrict the file ACL to their own user; POSIX checks do not establish Windows ACL protection. Token files cannot be symlinks or exceed 64 KiB. File credentials override environment credentials and are cached until restart. GUI applications may have a different environment from your terminal.
Plans and limits
This AGPL wrapper is free; Cloudflare services and plan restrictions remain separate. DNS, proxy, cache purge, setting values, Ruleset phases and analytics availability are controlled by Cloudflare. Read metadata for the selected setting or dataset rather than assuming every write is allowed on every plan.
Current general API limits list 1200 requests per five minutes for a user/account token and 200 per second per IP, with cumulative user limits and endpoint-specific exceptions. Other sessions and processes consume the same upstream quota. Local pacing defaults to 200 ms per profile/process; it does not reserve quota. No reads or mutations retry automatically after 429, timeout, network failure or HTTP 200 provider errors. Wait according to current provider response/reset policy and inspect state before a deliberate repeat.
GraphQL analytics limits separately describe a default 300-query/five-minute user quota, up to ten zones or one account per scoped query, and dataset-specific retention/record limits. The general limits table uses a different GraphQL maximum figure; use the current analytics rules and returned policy for the actual query. Account-based limiting can be enabled through provider controls; the wrapper does not opt you into it. Inspect the provider's settings node for your dataset and resource. Adaptive analytics may be sampled; an aggregate is not necessarily an exact event ledger.
Reviewed DNS batches have a local cap of 1–50 total actions, deliberately below many provider plan limits. The underlying native batch command uses the reviewed source schema and provider limits. Request JSON is capped at 1 MiB; responses at 5 MiB; GraphQL query text at 64 KiB and 10000 parsed tokens; default timeout is 30 seconds. These caps do not raise Cloudflare quotas or plan allowances.
Rotation and revocation
Revoke or rotate the selected user/account token in its Cloudflare settings, update private configuration and restart every client using it. npm uninstall does not revoke the token, restore DNS, remove Rulesets or undo a cache purge. Keep account exports, DNS TXT values, signed URLs and diagnostic responses out of public issues.
4. Connect your client
Codex is the primary documented agent. After private credential setup:
codex mcp add cloudflare -- npx -y @thenavidm/cloudflare-mcp-cli@latest
codex mcp listUse the private env_vars TOML configuration in INSTALL.md to forward token/profile settings. Fully restart an npx @latest server to resolve the latest npm release. An already-running process keeps its existing version.
| Client | Setup route | Important detail | | --- | --- | --- | | Codex desktop / CLI | codex mcp add or private config.toml | Forward private env vars; choose CLI with SKILL.md for shell tasks | | Claude Desktop | Versioned .mcpb or manual local stdio | Set sensitive token/file, defaults and policy in private extension settings | | Claude Code | claude mcp add --scope user | Optional client; section 7 has its measured costs | | Cursor | Private user mcp.json | Interpolation/envFile must refer to private local settings | | VS Code / Copilot | User MCP configuration | servers root and secure input prompts | | Windsurf | Private Cascade MCP settings | Reconnect after changes | | Zed | context_servers | Direct command/args/env shape | | Gemini CLI | Private settings.json | Merge mcpServers and inspect /mcp | | Cline / other stdio clients | Add local MCP | Adapt command/args without committed credentials | | Remote-only clients | Official HTTPS MCP | This package supplies local stdio, no public listener |
The desktop archive vendors production dependencies. Host policies/runtime support and actual GUI installation remain separate from protocol discovery. INSTALL.md retains click-by-click steps and platform-specific launcher advice.
5. Check it works
cloudflare-cli doctor
cloudflare-cli doctor --network
cloudflare-cli list-accounts --agent
cloudflare-cli list-zones --per-page 10 --agent
cloudflare-cli get-zone --zone-id YOUR_ZONE_ID --agentLocal doctor reports configuration, not credentials validated. --network checks an active token through its configured token-kind route; it does not prove access to every endpoint. First provider read should be the exact zone needed for the task. Do not create DNS records or purge cache merely to verify installation.
Full discovery has 29 tools; CLOUDFLARE_READ_ONLY=1 hides eleven mutations and direct calls still refuse. Local helpers expose no tokens or provider IDs. A missing credential exits 10; a valid install is not proof of provider account access.
6. Output, flags and exit codes
The house CLI derives tool flags from the same input schemas used by MCP. Tool names use underscores in MCP and hyphens in the shell. Native path/query arguments are top-level flags; current native request bodies use --payload JSON or --payload-file PATH, never both. --select filters returned data locally; it does not change Cloudflare's upstream fields or quota.
| Flag / command | Contract | | --- | --- | | tools / no command | Discover every command; confirmed mutations are marked | | COMMAND --help | Actual tool schema arguments | | schema COMMAND | Complete JSON input schema, including native payload unions/references | | --agent | Compact JSON and no prompts; never confirms a write | | --json / --compact | Machine JSON, optionally compact | | --select a,b.c | Local dotted result selection | | --payload / --payload-file | Native JSON body / private regular JSON file | | --account NAME | Exact private profile label | | --confirm | Explicit intent for the selected mutation only | | --no-input / --no-color / --yes | Noninteractive formatting/prompt policy; no mutation permission |
| Exit | Meaning | | --- | --- | | 0 | Success | | 1 | Unexpected error | | 2 | Invalid input or refused mutation, an unknown command or a hidden write | | 3 | Not found | | 4 | Authentication/permission error | | 5 | Provider or transport failure | | 7 | Rate limited | | 10 | No credentials configured |
Provider REST results retain success/result/result_info envelopes; query-only analytics retains data. HTTP 200 with provider errors fails. JSON output is not proof that DNS has propagated or every downstream service accepted a setting.
7. MCP or CLI and token cost
| Mode | What the client receives | Evidence required | | --- | --- | --- | | Local MCP | Tool descriptions/schemas according to the client's loading policy; returned provider data | Actual client/model usage for that loading mode | | Shared CLI | Discovered help/SKILL.md and chosen command output | Actual successful matched task usage | | Official Code Mode | Small docs/search/execute interface and generated execution/result | Its provider claims are not our Codex measurements | | Read-only / bounded output | Fewer exposed writes, bounded pages and local --select | Policy/output bounds, not a measured token reduction |
Measured on 2026-10-05 against 2.0.1, the same day, with Claude Code 2.1.286 on Claude Opus 5.5 (one short prompt with and without the server connected, the difference read from the API's own usage figures) and Codex 0.159.3 on gpt-6.1-sol:
| Cost | 2.0.1 | 3.0.0 |
| --- | --- | --- |
| Claude Code, every tool loaded, every message | 230,145 | 144,067 |
| Claude Code's default, tool search, every message | 608 | 611 |
| SKILL.md, read once | 3,930 | 4,014 |
| Codex over the CLI, one task, median of five | 104,401 | 83,426 |
| Codex over MCP, the same task, median of five | 40,548 | 41,139 |
The task was "find the command that purges a zone's cache, and the flags it requires". Every tool loaded costs less because each native body appeared twice, as its own fields and inside payload, and 3.0.0 writes each repeated part once under $defs. Over the CLI, three 2.0.1 runs guessed a command that does not exist, cache or schema with no name, and every extra step carries the whole conversation forward; every 3.0.0 run read the help, asked which and read purge-cache --help. Over MCP, Codex prints its own TypeScript rendering of the tools it picks: it leaves the argument descriptions out of a tool whose schema is large, and sharing the repeats brought purge_cache under that size, so Codex now shows how to purge by tags, hosts or prefixes, 2,344 characters that 2.0.1's rendering left out. SKILL.md costs 84 more because it now says how approval works over MCP and lists every exit code.
Do not compare 29 tools against three Code Mode tools as a winner or claim a universal CLI saving; no other offering was measured.
8. Every tool and argument
Twenty-two current native operations and seven helpers. Each schema below comes from actual stdio discovery. Native payload bodies preserve required keys, enums, unions, nested references and source constraints. Missing zone_id/account_id may use the selected private profile default; other required arguments remain required. Confirmation is enforced outside ordinary schema-required lists.
| MCP tool | CLI command | Policy |
| --- | --- | --- |
| list_provider_accounts | cloudflare-cli list-provider-accounts | Read / local helper |
| list_zones | cloudflare-cli list-zones | Read / local helper |
| get_zone | cloudflare-cli get-zone | Read / local helper |
| list_dns_records | cloudflare-cli list-dns-records | Read / local helper |
| get_dns_record | cloudflare-cli get-dns-record | Read / local helper |
| create_dns_record | cloudflare-cli create-dns-record | Explicit confirmation required |
| update_dns_record | cloudflare-cli update-dns-record | Explicit confirmation required |
| overwrite_dns_record | cloudflare-cli overwrite-dns-record | Explicit confirmation required |
| delete_dns_record | cloudflare-cli delete-dns-record | Explicit confirmation required |
| batch_dns_records | cloudflare-cli batch-dns-records | Explicit confirmation required |
| purge_cache | cloudflare-cli purge-cache | Explicit confirmation required |
| get_zone_setting | cloudflare-cli get-zone-setting | Read / local helper |
| update_zone_setting | cloudflare-cli update-zone-setting | Explicit confirmation required |
| list_workers | cloudflare-cli list-workers | Read / local helper |
| list_zone_rulesets | cloudflare-cli list-zone-rulesets | Read / local helper |
| get_zone_ruleset | cloudflare-cli get-zone-ruleset | Read / local helper |
| get_zone_entrypoint | cloudflare-cli get-zone-entrypoint | Read / local helper |
| create_zone_ruleset | cloudflare-cli create-zone-ruleset | Explicit confirmation required |
| update_zone_ruleset | cloudflare-cli update-zone-ruleset | Explicit confirmation required |
| delete_zone_ruleset | cloudflare-cli delete-zone-ruleset | Explicit confirmation required |
| list_page_rules | cloudflare-cli list-page-rules | Read / local helper |
| get_page_rule | cloudflare-cli get-page-rule | Read / local helper |
| list_accounts | cloudflare-cli list-accounts | Read / local helper |
| get_operation_schema | cloudflare-cli get-operation-schema | Read / local helper |
| preview_operation | cloudflare-cli preview-operation | Read / local helper |
| query_pages | cloudflare-cli query-pages | Read / local helper |
| preview_dns_batch | cloudflare-cli preview-dns-batch | Read / local helper |
| apply_dns_batch | cloudflare-cli apply-dns-batch | Explicit confirmation required |
| analytics_query | cloudflare-cli analytics-query | Read / local helper |
list_provider_accounts
cloudflare-cli list-provider-accounts
List all accounts you have ownership or verified access to. Read operation.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| name | No; body and guard rules apply | string | Name of the account. |
| page | No; body and guard rules apply | number | Page number of paginated results. minimum: 1. default: 1. |
| per_page | No; body and guard rules apply | number | Maximum number of results per page. minimum: 5. maximum: 50. default: 20. |
| direction | No; body and guard rules apply | string | Direction to order results. Values: asc, desc. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
Native operation: GET /accounts; accounts-list-accounts. Native body not required. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
list_zones
cloudflare-cli list-zones
Lists, searches, sorts, and filters your zones. Listing zones across more than 500 accounts is currently not allowed. Read operation.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| name | No; body and guard rules apply | string | A domain name. Optional filter operators can be provided to extend refine the search: * equal (default) * not_equal * starts_with * ends_with * contains * starts_with_case_sensitive * ends_with_case_sensitive * contains_case_sensitive maxLength: 253. |
| status | No; body and guard rules apply | string | Specify a zone status to filter by. Values: initializing, pending, active, moved. |
| type | No; body and guard rules apply | array | Zone types to filter by. Multiple types can be specified as a comma-separated list (e.g., ?type=full,partial,secondary). When this parameter is not provided, zones with type "internal" are excluded from the results. Items: string. |
| account_id | No; body and guard rules apply | string | Filter by an account ID. |
| account_name | No; body and guard rules apply | string | An account Name. Optional filter operators can be provided to extend refine the search: * equal (default) * not_equal * starts_with * ends_with * contains * starts_with_case_sensitive * ends_with_case_sensitive * contains_case_sensitive maxLength: 253. |
| page | No; body and guard rules apply | number | Page number of paginated results. minimum: 1. default: 1. |
| per_page | No; body and guard rules apply | number | Number of zones per page. minimum: 5. maximum: 50. default: 20. |
| order | No; body and guard rules apply | string | Field to order zones by. Values: name, status, account.id, account.name, plan.id. |
| direction | No; body and guard rules apply | string | Direction to order zones. Values: asc, desc. |
| match | No; body and guard rules apply | string | Whether to match all search requirements or at least one (any). Values: any, all. default: all. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
Native operation: GET /zones; zones-get. Native body not required. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
get_zone
cloudflare-cli get-zone
Retrieves detailed information about a specific zone identified by its zone ID.
Returns zone configuration, status, nameservers, and associated metadata. Read operation.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| zone_id | No; body and guard rules apply | zones_identifier | See current schema minLength: 1. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
Native operation: GET /zones/{zone_id}; zones-0-get. Native body not required. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
list_dns_records
cloudflare-cli list-dns-records
List, search, sort, and filter a zones' DNS records. Read operation.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| zone_id | No; body and guard rules apply | dns-records_identifier | See current schema minLength: 1. |
| name | No; body and guard rules apply | string | Exact value of the DNS record name. This is a convenience alias for name.exact. |
| name_exact | No; body and guard rules apply | string | Exact value of the DNS record name. Name filters are case-insensitive. |
| name_contains | No; body and guard rules apply | string | Substring of the DNS record name. Name filters are case-insensitive. |
| name_startswith | No; body and guard rules apply | string | Prefix of the DNS record name. Name filters are case-insensitive. |
| name_endswith | No; body and guard rules apply | string | Suffix of the DNS record name. Name filters are case-insensitive. |
| type | No; body and guard rules apply | dns-records_type | See current schema |
| content | No; body and guard rules apply | string | Exact value of the DNS record content. This is a convenience alias for content.exact. |
| content_exact | No; body and guard rules apply | string | Exact value of the DNS record content. Content filters are case-insensitive. |
| content_contains | No; body and guard rules apply | string | Substring of the DNS record content. Content filters are case-insensitive. |
| content_startswith | No; body and guard rules apply | string | Prefix of the DNS record content. Content filters are case-insensitive. |
| content_endswith | No; body and guard rules apply | string | Suffix of the DNS record content. Content filters are case-insensitive. |
| proxied | No; body and guard rules apply | dns-records_proxied | See current schema |
| match | No; body and guard rules apply | dns-records_match | See current schema |
| comment | No; body and guard rules apply | string | Exact value of the DNS record comment. This is a convenience alias for comment.exact. |
| comment_present | No; body and guard rules apply | string | If this parameter is present, only records with a comment are returned. |
| comment_absent | No; body and guard rules apply | string | If this parameter is present, only records without a comment are returned. |
| comment_exact | No; body and guard rules apply | string | Exact value of the DNS record comment. Comment filters are case-insensitive. |
| comment_contains | No; body and guard rules apply | string | Substring of the DNS record comment. Comment filters are case-insensitive. |
| comment_startswith | No; body and guard rules apply | string | Prefix of the DNS record comment. Comment filters are case-insensitive. |
| comment_endswith | No; body and guard rules apply | string | Suffix of the DNS record comment. Comment filters are case-insensitive. |
| tag | No; body and guard rules apply | string | Condition on the DNS record tag. Parameter values can be of the form : to search for an exact name:value pair, or just to search for records with a specific tag name regardless of its value. This is a convenience shorthand for the more powerful `tag.` parameters. Examples: - `tag=important` is equivalent to `tag.present=important` - `tag=team:DNS` is equivalent to `tag.exact=team:DNS` |
| `tag_present` | No; body and guard rules apply | string | Name of a tag which must be present on the DNS record. Tag filters are case-insensitive. |
| `tag_absent` | No; body and guard rules apply | string | Name of a tag which must *not* be present on the DNS record. Tag filters are case-insensitive. |
| `tag_exact` | No; body and guard rules apply | string | A tag and value, of the form `:`. The API will only return DNS records that have a tag named whose value is . Tag filters are case-insensitive. |
| `tag_contains` | No; body and guard rules apply | string | A tag and value, of the form `:`. The API will only return DNS records that have a tag named whose value contains . Tag filters are case-insensitive. |
| `tag_startswith` | No; body and guard rules apply | string | A tag and value, of the form `:`. The API will only return DNS records that have a tag named whose value starts with . Tag filters are case-insensitive. |
| `tag_endswith` | No; body and guard rules apply | string | A tag and value, of the form `:`. The API will only return DNS records that have a tag named whose value ends with ``. Tag filters are case-insensitive. |
| search | No; body and guard rules apply | dns-records_search | See current schema |
| tag_match | No; body and guard rules apply | dns-records_tag_match | See current schema |
| page | No; body and guard rules apply | dns-records_page | See current schema |
| per_page | No; body and guard rules apply | dns-records_per_page | See current schema |
| order | No; body and guard rules apply | dns-records_order | See current schema |
| direction | No; body and guard rules apply | dns-records_direction | See current schema |
| include_shadow_metadata | No; body and guard rules apply | boolean | Whether to include shadow metadata in the meta field of each record in the response. See Shadowed records. default: False. |
| shadowed_by_name | No; body and guard rules apply | string | Filters the response to records at or below the specified NS delegation name. NS, DS, and NSEC records at the delegation name are excluded because they are not shadowed by that delegation. Those record types are included only when they exist below the delegation. The value must be a non-apex subdomain of the zone. Requires include_shadow_metadata=true. See Shadowed records. |
| shadowing_name | No; body and guard rules apply | string | Returns NS records that shadow the given name, searching at the name itself and each of its ancestor names within the zone, excluding the zone apex. The value must be a subdomain of the zone; the zone apex is not accepted. See Shadowed records. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
Native operation: GET /zones/{zone_id}/dns_records; dns-records-for-a-zone-list-dns-records. Native body not required. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
get_dns_record
cloudflare-cli get-dns-record
Retrieves details for a specific DNS record in the zone. Read operation.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| dns_record_id | Yes | dns-records_identifier | See current schema minLength: 1. |
| zone_id | No; body and guard rules apply | dns-records_identifier | See current schema minLength: 1. |
| include_shadow_metadata | No; body and guard rules apply | boolean | Whether to include shadow metadata in the meta field of each record in the response. See Shadowed records. default: False. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
Native operation: GET /zones/{zone_id}/dns_records/{dns_record_id}; dns-records-for-a-zone-dns-record-details. Native body not required. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
create_dns_record
cloudflare-cli create-dns-record
Create a new DNS record for a zone.
Notes:
- A/AAAA records cannot exist on the same name as CNAME records.
- NS records cannot exist on the same name as any other record type.
- Domain names are always represented in Punycode, even if Unicode characters were used when creating the record. Every change requires explicit confirmation; never repeat an unknown outcome automatically.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| zone_id | No; body and guard rules apply | dns-records_identifier | See current schema minLength: 1. |
| include_shadow_metadata | No; body and guard rules apply | boolean | Whether to include shadow metadata in the meta field of each record in the response. See Shadowed records. default: False. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
| confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |
| payload | No; body and guard rules apply | object | Complete current native JSON request body. Do not mix with payload_file. |
| payload_file | No; body and guard rules apply | string | Regular non-symlink local JSON request file, at most 1 MiB. No credentials in public files. minLength: 1. |
Native operation: POST /zones/{zone_id}/dns_records; dns-records-for-a-zone-create-dns-record. Native body required through payload or payload_file. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
update_dns_record
cloudflare-cli update-dns-record
Update an existing DNS record.
Notes:
- A/AAAA records cannot exist on the same name as CNAME records.
- NS records cannot exist on the same name as any other record type.
- Domain names are always represented in Punycode, even if Unicode characters were used when creating the record. Every change requires explicit confirmation; never repeat an unknown outcome automatically.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| dns_record_id | Yes | dns-records_identifier | See current schema minLength: 1. |
| zone_id | No; body and guard rules apply | dns-records_identifier | See current schema minLength: 1. |
| include_shadow_metadata | No; body and guard rules apply | boolean | Whether to include shadow metadata in the meta field of each record in the response. See Shadowed records. default: False. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
| confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |
| payload | No; body and guard rules apply | object | Complete current native JSON request body. Do not mix with payload_file. |
| payload_file | No; body and guard rules apply | string | Regular non-symlink local JSON request file, at most 1 MiB. No credentials in public files. minLength: 1. |
Native operation: PATCH /zones/{zone_id}/dns_records/{dns_record_id}; dns-records-for-a-zone-patch-dns-record. Native body required through payload or payload_file. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
overwrite_dns_record
cloudflare-cli overwrite-dns-record
Overwrite an existing DNS record.
Notes:
- A/AAAA records cannot exist on the same name as CNAME records.
- NS records cannot exist on the same name as any other record type.
- Domain names are always represented in Punycode, even if Unicode characters were used when creating the record. Every change requires explicit confirmation; never repeat an unknown outcome automatically.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| dns_record_id | Yes | dns-records_identifier | See current schema minLength: 1. |
| zone_id | No; body and guard rules apply | dns-records_identifier | See current schema minLength: 1. |
| include_shadow_metadata | No; body and guard rules apply | boolean | Whether to include shadow metadata in the meta field of each record in the response. See Shadowed records. default: False. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
| confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |
| payload | No; body and guard rules apply | object | Complete current native JSON request body. Do not mix with payload_file. |
| payload_file | No; body and guard rules apply | string | Regular non-symlink local JSON request file, at most 1 MiB. No credentials in public files. minLength: 1. |
Native operation: PUT /zones/{zone_id}/dns_records/{dns_record_id}; dns-records-for-a-zone-update-dns-record. Native body required through payload or payload_file. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
delete_dns_record
cloudflare-cli delete-dns-record
Permanently removes a DNS record from the zone. Every change requires explicit confirmation; never repeat an unknown outcome automatically.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| dns_record_id | Yes | dns-records_identifier | See current schema minLength: 1. |
| zone_id | No; body and guard rules apply | dns-records_identifier | See current schema minLength: 1. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
| confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |
Native operation: DELETE /zones/{zone_id}/dns_records/{dns_record_id}; dns-records-for-a-zone-delete-dns-record. Native body not required. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
batch_dns_records
cloudflare-cli batch-dns-records
Send a Batch of DNS Record API calls to be executed together.
Notes:
Although Cloudflare will execute the batched operations in a single database transaction, Cloudflare's distributed KV store must treat each record change as a single key-value pair. This means that the propagation of changes is not atomic. See the documentation for more information.
The operations you specify within the /batch request body are always executed in the following order:
- Deletes
- Patches
- Puts
- Posts Every change requires explicit confirmation; never repeat an unknown outcome automatically.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| zone_id | No; body and guard rules apply | dns-records_identifier | See current schema minLength: 1. |
| include_shadow_metadata | No; body and guard rules apply | boolean | Whether to include shadow metadata in the meta field of each record in the response. See Shadowed records. default: False. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
| confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |
| payload | No; body and guard rules apply | object | Complete current native JSON request body. Do not mix with payload_file. |
| payload_file | No; body and guard rules apply | string | Regular non-symlink local JSON request file, at most 1 MiB. No credentials in public files. minLength: 1. |
Native operation: POST /zones/{zone_id}/dns_records/batch; dns-records-for-a-zone-batch-dns-records. Native body required through payload or payload_file. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
purge_cache
cloudflare-cli purge-cache
Deletes cached content in every Cloudflare data center and cache tier, including Cache Reserve. The next request for purged content is a cache MISS: Cloudflare fetches the full response from your origin and caches it again. Cloudflare does not serve purged content from cache again, even if your origin is unavailable.
To keep content cached and have Cloudflare revalidate it with your origin instead, use POST /zones/{zone_id}/invalidate_cache.
Choose what to purge
Send one of these fields in the request body:
files: specific URLs. If your cache key includes request headers, send each URL with the header values it was cached with.tags: all content whoseCache-Tagresponse header contains one of the tags.hosts: all content cached for the hostnames.prefixes: all content whose URL starts with one of the prefixes.purge_everything: all cached content in the zone.
Check the result
A 200 response with success: true means Cloudflare accepted the request. It does not confirm that any content was cached or removed. To check, request a purged URL and confirm that the CF-Cache-Status response header is MISS.
Availability and limits
Rate limits and the number of items you can send in one request depend on your plan. See Purge cache: availability and limits. Every change requires explicit confirmation; never repeat an unknown outcome automatically.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| zone_id | No; body and guard rules apply | cache-purge_identifier | The zone ID. minLength: 1. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
| confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |
| payload | No; body and guard rules apply | Union | Complete current native JSON request body. Do not mix with payload_file. |
| payload_file | No; body and guard rules apply | string | Regular non-symlink local JSON request file, at most 1 MiB. No credentials in public files. minLength: 1. |
Native operation: POST /zones/{zone_id}/purge_cache; zone-purge. Native body required through payload or payload_file. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
get_zone_setting
cloudflare-cli get-zone-setting
Fetch a single zone setting by name Read operation.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| zone_id | No; body and guard rules apply | zones_identifier | See current schema minLength: 1. |
| setting_id | Yes | zones_setting_name | See current schema minLength: 1. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
Native operation: GET /zones/{zone_id}/settings/{setting_id}; zone-settings-get-single-setting. Native body not required. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
update_zone_setting
cloudflare-cli update-zone-setting
Updates a single zone setting by the identifier Every change requires explicit confirmation; never repeat an unknown outcome automatically.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| zone_id | No; body and guard rules apply | zones_identifier | See current schema minLength: 1. |
| setting_id | Yes | zones_setting_name | See current schema minLength: 1. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
| confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |
| payload | No; body and guard rules apply | Union | Complete current native JSON request body. Do not mix with payload_file. |
| payload_file | No; body and guard rules apply | string | Regular non-symlink local JSON request file, at most 1 MiB. No credentials in public files. minLength: 1. |
Native operation: PATCH /zones/{zone_id}/settings/{setting_id}; zone-settings-edit-single-setting. Native body required through payload or payload_file. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
list_workers
cloudflare-cli list-workers
Fetch a list of uploaded Worker scripts. Read operation.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| account_id | No; body and guard rules apply | workers_identifier | See current schema minLength: 1. |
| tags | No; body and guard rules apply | string | Filter scripts by tags. Format: comma-separated list of tag:allowed pairs where allowed is 'yes' or 'no'. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
Native operation: GET /accounts/{account_id}/workers/scripts; worker-script-list-workers. Native body not required. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
list_zone_rulesets
cloudflare-cli list-zone-rulesets
Fetches all rulesets at the zone level. Read operation.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| zone_id | No; body and guard rules apply | rulesets_ZoneId | See current schema minLength: 1. |
| cursor | No; body and guard rules apply | rulesets_Cursor | See current schema |
| per_page | No; body and guard rules apply | rulesets_PerPage | See current schema |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
Native operation: GET /zones/{zone_id}/rulesets; listZoneRulesets. Native body not required. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
get_zone_ruleset
cloudflare-cli get-zone-ruleset
Fetches the latest version of a zone ruleset. Read operation.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| ruleset_id | Yes | rulesets_RulesetId | See current schema minLength: 1. |
| zone_id | No; body and guard rules apply | rulesets_ZoneId | See current schema minLength: 1. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
Native operation: GET /zones/{zone_id}/rulesets/{ruleset_id}; getZoneRuleset. Native body not required. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
get_zone_entrypoint
cloudflare-cli get-zone-entrypoint
Fetches the latest version of the zone entry point ruleset for a given phase. Read operation.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| ruleset_phase | Yes | rulesets_RulesetPhase | See current schema minLength: 1. |
| zone_id | No; body and guard rules apply | rulesets_ZoneId | See current schema minLength: 1. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
Native operation: GET /zones/{zone_id}/rulesets/phases/{ruleset_phase}/entrypoint; getZoneEntrypointRuleset. Native body not required. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
create_zone_ruleset
cloudflare-cli create-zone-ruleset
Creates a ruleset at the zone level. Every change requires explicit confirmation; never repeat an unknown outcome automatically.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| zone_id | No; body and guard rules apply | rulesets_ZoneId | See current schema minLength: 1. |
| dry_run | No; body and guard rules apply | boolean | Validates the request without persisting changes when set to true. Responses that normally return 200 return result: null; endpoints that normally return 204 continue to return 204. default: False. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
| confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |
| payload | No; body and guard rules apply | JSON | Complete current native JSON request body. Do not mix with payload_file. |
| payload_file | No; body and guard rules apply | string | Regular non-symlink local JSON request file, at most 1 MiB. No credentials in public files. minLength: 1. |
Native operation: POST /zones/{zone_id}/rulesets; createZoneRuleset. Native body required through payload or payload_file. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
update_zone_ruleset
cloudflare-cli update-zone-ruleset
Updates a zone ruleset, creating a new version. Every change requires explicit confirmation; never repeat an unknown outcome automatically.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| ruleset_id | Yes | rulesets_RulesetId | See current schema minLength: 1. |
| zone_id | No; body and guard rules apply | rulesets_ZoneId | See current schema minLength: 1. |
| dry_run | No; body and guard rules apply | boolean | Validates the request without persisting changes when set to true. Responses that normally return 200 return result: null; endpoints that normally return 204 continue to return 204. default: False. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
| confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |
| payload | No; body and guard rules apply | JSON | Complete current native JSON request body. Do not mix with payload_file. |
| payload_file | No; body and guard rules apply | string | Regular non-symlink local JSON request file, at most 1 MiB. No credentials in public files. minLength: 1. |
Native operation: PUT /zones/{zone_id}/rulesets/{ruleset_id}; updateZoneRuleset. Native body required through payload or payload_file. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
delete_zone_ruleset
cloudflare-cli delete-zone-ruleset
Deletes all versions of an existing zone ruleset. Every change requires explicit confirmation; never repeat an unknown outcome automatically.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| ruleset_id | Yes | rulesets_RulesetId | See current schema minLength: 1. |
| zone_id | No; body and guard rules apply | rulesets_ZoneId | See current schema minLength: 1. |
| dry_run | No; body and guard rules apply | boolean | Validates the request without persisting changes when set to true. Responses that normally return 200 return result: null; endpoints that normally return 204 continue to return 204. default: False. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
| confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |
Native operation: DELETE /zones/{zone_id}/rulesets/{ruleset_id}; deleteZoneRuleset. Native body not required. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
list_page_rules
cloudflare-cli list-page-rules
Fetches Page Rules in a zone. Read operation.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| zone_id | No; body and guard rules apply | zones_identifier-2 | See current schema minLength: 1. |
| order | No; body and guard rules apply | string | The field used to sort returned Page Rules. Values: status, priority. default: priority. |
| direction | No; body and guard rules apply | string | The direction used to sort returned Page Rules. Values: asc, desc. default: desc. |
| match | No; body and guard rules apply | string | When set to all, all the search requirements must match. When set to any, only one of the search requirements has to match. Values: any, all. default: all. |
| status | No; body and guard rules apply | string | The status of the Page Rule. Values: active, disabled. default: disabled. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
Native operation: GET /zones/{zone_id}/pagerules; page-rules-list-page-rules. Native body not required. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
get_page_rule
cloudflare-cli get-page-rule
Fetches the details of a Page Rule. Read operation.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| pagerule_id | Yes | zones_identifier-2 | See current schema minLength: 1. |
| zone_id | No; body and guard rules apply | zones_identifier-2 | See current schema minLength: 1. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
Native operation: GET /zones/{zone_id}/pagerules/{pagerule_id}; page-rules-get-a-page-rule. Native body not required. Schema discovery is local; endpoint permissions/plan decisions remain provider controlled.
list_accounts
cloudflare-cli list-accounts
Local profile labels/default/auth method only. No provider IDs, credential values or paths. No network.
| Argument | Required | Type | Details | | --- | --- | --- | --- | | None | No | None | No arguments |
get_operation_schema
cloudflare-cli get-operation-schema
Complete selected current API input, path and query schema. Local metadata only.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| operation | Yes | string | See the full input schema. Values: list_provider_accounts, list_zones, get_zone, list_dns_records, get_dns_record, create_dns_record, update_dns_record, overwrite_dns_record, delete_dns_record, batch_dns_records, purge_cache, get_zone_setting, update_zone_setting, list_workers, list_zone_rulesets, get_zone_ruleset, get_zone_entrypoint, create_zone_ruleset, update_zone_ruleset, delete_zone_ruleset, list_page_rules, get_page_rule. |
preview_operation
cloudflare-cli preview-operation
Validate a named operation and return its exact local method/path/query/body/profile. No request, auth validation or provider policy checks.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| operation | Yes | string | See the full input schema. Values: list_provider_accounts, list_zones, get_zone, list_dns_records, get_dns_record, create_dns_record, update_dns_record, overwrite_dns_record, delete_dns_record, batch_dns_records, purge_cache, get_zone_setting, update_zone_setting, list_workers, list_zone_rulesets, get_zone_ruleset, get_zone_entrypoint, create_zone_ruleset, update_zone_ruleset, delete_zone_ruleset, list_page_rules, get_page_rule. |
| arguments | Yes | object | See the full input schema. |
query_pages
cloudflare-cli query-pages
Read at most five pages of a supported paginated named operation. Provider page metadata determines continuation; missing metadata stops with an explicit unknown continuation.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| operation | Yes | string | See the full input schema. Values: list_provider_accounts, list_zones, list_dns_records. |
| arguments | Yes | object | See the full input schema. |
| max_pages | No; body and guard rules apply | integer | See the full input schema. minimum: 1. maximum: 5. default: 1. |
preview_dns_batch
cloudflare-cli preview-dns-batch
Local schema-validated DNS batch review capped at 50 actions. Digest binds exact JSON body, zone path and profile label; no account or DNS state read. Not a provider authorization grant.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| zone_id | No; body and guard rules apply | string | See the full input schema. minLength: 1. maxLength: 32. |
| account | No; body and guard rules apply | string | See the full input schema. |
| payload | No; body and guard rules apply | object | See the full input schema. |
| payload_file | No; body and guard rules apply | string | See the full input schema. minLength: 1. |
apply_dns_batch
cloudflare-cli apply-dns-batch
Verify the reviewed digest and submit one exact native DNS batch with mandatory confirmation. Does not assert remote-state consistency or atomic DNS propagation; no retry.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| zone_id | No; body and guard rules apply | string | See the full input schema. minLength: 1. maxLength: 32. |
| account | No; body and guard rules apply | string | See the full input schema. |
| payload | No; body and guard rules apply | object | See the full input schema. |
| payload_file | No; body and guard rules apply | string | See the full input schema. minLength: 1. |
| preview_sha256 | Yes | string | See the full input schema. pattern: ^[0-9a-f]{64}$. |
| confirm | No; body and guard rules apply | boolean | Set true only when the user asked for exactly this action. |
analytics_query
cloudflare-cli analytics-query
One parsed GraphQL query only, with variables. No mutations, subscriptions or multiple operations. Permissions, dataset retention, sampling and query limits remain provider controlled.
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| query | Yes | string | See the full input schema. minLength: 1. maxLength: 65536. |
| variables | No; body and guard rules apply | object | See the full input schema. |
| account | No; body and guard rules apply | string | See the full input schema. |
Nested native input definitions
Identical object shapes are listed once below. References point to the named definitions; union branches retain their individual requirements. Some provider JSON-schema conditions do not fit a flat table; use schema COMMAND or get_operation_schema for complete validation. Unknown native root body keys are refused locally; provider constraints still apply.
list_provider_accounts
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| name | No; body and guard rules apply | string | Name of the account. |
| page | No; body and guard rules apply | number | Page number of paginated results. minimum: 1. default: 1. |
| per_page | No; body and guard rules apply | number | Maximum number of results per page. minimum: 5. maximum: 50. default: 20. |
| direction | No; body and guard rules apply | string | Direction to order results. Values: asc, desc. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
list_zones
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| name | No; body and guard rules apply | string | A domain name. Optional filter operators can be provided to extend refine the search: * equal (default) * not_equal * starts_with * ends_with * contains * starts_with_case_sensitive * ends_with_case_sensitive * contains_case_sensitive maxLength: 253. |
| status | No; body and guard rules apply | string | Specify a zone status to filter by. Values: initializing, pending, active, moved. |
| type | No; body and guard rules apply | array | Zone types to filter by. Multiple types can be specified as a comma-separated list (e.g., ?type=full,partial,secondary). When this parameter is not provided, zones with type "internal" are excluded from the results. Items: string. |
| account_id | No; body and guard rules apply | string | Filter by an account ID. |
| account_name | No; body and guard rules apply | string | An account Name. Optional filter operators can be provided to extend refine the search: * equal (default) * not_equal * starts_with * ends_with * contains * starts_with_case_sensitive * ends_with_case_sensitive * contains_case_sensitive maxLength: 253. |
| page | No; body and guard rules apply | number | Page number of paginated results. minimum: 1. default: 1. |
| per_page | No; body and guard rules apply | number | Number of zones per page. minimum: 5. maximum: 50. default: 20. |
| order | No; body and guard rules apply | string | Field to order zones by. Values: name, status, account.id, account.name, plan.id. |
| direction | No; body and guard rules apply | string | Direction to order zones. Values: asc, desc. |
| match | No; body and guard rules apply | string | Whether to match all search requirements or at least one (any). Values: any, all. default: all. |
| account | No; body and guard rules apply | string | Exact private profile label. Account/zone defaults route inputs; token permissions remain provider controlled. |
get_zone
| Argument | Required | Type | Details |
| --- | --- | --- | --- |
| zone_id | No; body and guard rules apply | zones_identifier | See current schema minLength: 1. |
| account | No; body and guard rules apply |
