{"openapi":"3.1.0","info":{"title":"Cloudflare (BYOK) API","version":"0.1.0","description":"Cloudflare (BYOK) lets an AI assistant read your own Cloudflare data through the Cloudflare API with a key you supply (API token). Read-only: 7 tools (verify_token, list_accounts, list_zones, get_zone, list_dns_records, get_dns_record, list_worker_scripts). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever sent to...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-cloudflare.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-cloudflare/docs"},"termsOfService":"https://connectorbay.com/byok-cloudflare/terms"},"servers":[{"url":"https://byok-cloudflare.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-cloudflare/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/verify_token":{"post":{"operationId":"verify_token","summary":"Check whether a Cloudflare user API token is valid: returns its status (for example active), ID and validity window. Doe","description":"Check whether a Cloudflare user API token is valid: returns its status (for example active), ID and validity window. Does not work for account-owned tokens. Use for \"Is my Cloudflare API token still active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"verify_tokenArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_accounts":{"post":{"operationId":"list_accounts","summary":"List the Cloudflare accounts the token can access, with ID, name and type. Use for \"Which Cloudflare accounts can I acce","description":"List the Cloudflare accounts the token can access, with ID, name and type. Use for \"Which Cloudflare accounts can I access\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only accounts whose name matches this text.","title":"Account Name"},"direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction.","title":"Direction"},"per_page":{"anyOf":[{"maximum":50,"minimum":5,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (5 to 50).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1; result_info.total_pages says how many exist.","title":"Page"}},"title":"list_accountsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_zones":{"post":{"operationId":"list_zones","summary":"List the Cloudflare zones (domains) the token can access, with status, type, name servers and account. Up to 50 per page","description":"List the Cloudflare zones (domains) the token can access, with status, type, name servers and account. Up to 50 per page. Use for \"Which domains do I have on Cloudflare\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain":{"anyOf":[{"maxLength":253,"type":"string"},{"type":"null"}],"default":null,"description":"Only the zone with this exact domain name, for example 'example.com'.","title":"Domain"},"status":{"anyOf":[{"enum":["initializing","pending","active","moved"],"type":"string"},{"type":"null"}],"default":null,"description":"Only zones in this status.","title":"Status"},"account_id":{"anyOf":[{"maxLength":32,"type":"string"},{"type":"null"}],"default":null,"description":"Only zones of this account ID.","title":"Account Id"},"order":{"anyOf":[{"enum":["name","status","account.id","account.name","plan.id"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field.","title":"Order"},"direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction.","title":"Direction"},"per_page":{"anyOf":[{"maximum":50,"minimum":5,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (5 to 50).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1; result_info.total_pages says how many exist.","title":"Page"}},"title":"list_zonesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_zone":{"post":{"operationId":"get_zone","summary":"Get one Cloudflare zone: status, type, name servers, account and activation date. Use for \"What are the Cloudflare name ","description":"Get one Cloudflare zone: status, type, name servers, account and activation date. Use for \"What are the Cloudflare name servers for zone 023e105f4ecef8ad9ca31a8372d0c353\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"zone_id":{"description":"Zone ID (32-character identifier from list_zones).","maxLength":200,"title":"Zone Id","type":"string"}},"required":["zone_id"],"title":"get_zoneArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_dns_records":{"post":{"operationId":"list_dns_records","summary":"List a zone's DNS records (type, name, content, proxied flag, TTL, comment), filtered by type or searched by text. Use f","description":"List a zone's DNS records (type, name, content, proxied flag, TTL, comment), filtered by type or searched by text. Use for \"What DNS records does my Cloudflare zone have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"zone_id":{"description":"Zone ID (32-character identifier from list_zones).","maxLength":200,"title":"Zone Id","type":"string"},"type":{"anyOf":[{"enum":["A","AAAA","CAA","CERT","CNAME","DNSKEY","DS","HTTPS","LOC","MX","NAPTR","NS","OPENPGPKEY","PTR","SMIMEA","SRV","SSHFP","SVCB","TLSA","TXT","URI"],"type":"string"},{"type":"null"}],"default":null,"description":"Only records of this type.","title":"Type"},"proxied":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only records proxied through Cloudflare, false for DNS-only records.","title":"Proxied"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search across record properties (name, content and others).","title":"Search"},"order":{"anyOf":[{"enum":["type","name","content","ttl","proxied"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort field.","title":"Order"},"direction":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction.","title":"Direction"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records per page (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["zone_id"],"title":"list_dns_recordsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_dns_record":{"post":{"operationId":"get_dns_record","summary":"Get one DNS record of a zone by ID: type, name, content, proxied flag, TTL and timestamps. Use for \"Show Cloudflare DNS ","description":"Get one DNS record of a zone by ID: type, name, content, proxied flag, TTL and timestamps. Use for \"Show Cloudflare DNS record 372e67954025e0ba6aaa6d586b9e0b59 of my zone\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"zone_id":{"description":"Zone ID (32-character identifier from list_zones).","maxLength":200,"title":"Zone Id","type":"string"},"dns_record_id":{"description":"DNS record ID (32-character identifier from list_dns_records).","maxLength":200,"title":"Dns Record Id","type":"string"}},"required":["zone_id","dns_record_id"],"title":"get_dns_recordArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_worker_scripts":{"post":{"operationId":"list_worker_scripts","summary":"List the Cloudflare Workers scripts of an account with name, usage model, handlers, compatibility date and modified time","description":"List the Cloudflare Workers scripts of an account with name, usage model, handlers, compatibility date and modified time. Use for \"Which Cloudflare Workers are deployed in my account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Account ID (32-character identifier from list_accounts).","maxLength":200,"title":"Account Id","type":"string"}},"required":["account_id"],"title":"list_worker_scriptsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}