{"openapi":"3.1.0","info":{"title":"Cloudflare Tunnels (BYOK) API","version":"0.1.0","description":"Cloudflare Tunnels (BYOK) lets an AI assistant read your own Cloudflare Tunnels data through the Cloudflare Tunnels API with a key you supply (Cloudflare API token with Cloudflare Tunnel and Zero Trust read permission). Read-only: 10 tools (list_tunnels, get_tunnel, list_tunnel_connectors, get_tunnel_ingress, list_mesh_nodes, list_private_network_routes, list_virtual_networks,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-cloudflare-tunnels.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-cloudflare-tunnels/docs"},"termsOfService":"https://connectorbay.com/byok-cloudflare-tunnels/terms"},"servers":[{"url":"https://byok-cloudflare-tunnels.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-cloudflare-tunnels/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/list_tunnels":{"post":{"operationId":"list_tunnels","summary":"List Cloudflare Tunnels (cloudflared) of an account with status, type, configuration source and activity times. Tunnel t","description":"List Cloudflare Tunnels (cloudflared) of an account with status, type, configuration source and activity times. Tunnel tokens and connector client IPs are not returned. Use for \"Which of my Cloudflare tunnels are down\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Cloudflare account id (32-character hex string shown in the dashboard URL, or from the Cloudflare connector's list_accounts).","maxLength":40,"title":"Account Id","type":"string"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only tunnels with this exact name.","title":"Name"},"is_deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list deleted tunnels instead of live ones.","title":"Is Deleted"},"status":{"anyOf":[{"enum":["inactive","degraded","healthy","down"],"type":"string"},{"type":"null"}],"default":null,"description":"Only tunnels with this health status.","title":"Status"},"include_prefix":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only tunnels whose name starts with this text.","title":"Include Prefix"},"exclude_prefix":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Leave out tunnels whose name starts with this text.","title":"Exclude Prefix"},"per_page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 1000).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1; result_info.total_count says how many exist.","title":"Page"}},"required":["account_id"],"title":"list_tunnelsArguments","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_tunnel":{"post":{"operationId":"get_tunnel","summary":"Get one Cloudflare Tunnel: name, status, type, configuration source and activity times. Tunnel tokens and connector clie","description":"Get one Cloudflare Tunnel: name, status, type, configuration source and activity times. Tunnel tokens and connector client IPs are not returned. Use for \"Is tunnel f70ff985-a4ef-4643-bbbc-4a0ed4fc8415 healthy\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Cloudflare account id (32-character hex string shown in the dashboard URL, or from the Cloudflare connector's list_accounts).","maxLength":40,"title":"Account Id","type":"string"},"tunnel_id":{"description":"Tunnel id (UUID), as returned by list_tunnels.","maxLength":64,"title":"Tunnel Id","type":"string"}},"required":["account_id","tunnel_id"],"title":"get_tunnelArguments","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_tunnel_connectors":{"post":{"operationId":"list_tunnel_connectors","summary":"List the active connectors (cloudflared instances) of a tunnel with version, architecture, start time and features. Tunn","description":"List the active connectors (cloudflared instances) of a tunnel with version, architecture, start time and features. Tunnel tokens and connector client IPs are not returned. Use for \"Which cloudflared versions run for tunnel f70ff985-a4ef-4643-bbbc-4a0ed4fc8415\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Cloudflare account id (32-character hex string shown in the dashboard URL, or from the Cloudflare connector's list_accounts).","maxLength":40,"title":"Account Id","type":"string"},"tunnel_id":{"description":"Tunnel id (UUID), as returned by list_tunnels.","maxLength":64,"title":"Tunnel Id","type":"string"}},"required":["account_id","tunnel_id"],"title":"list_tunnel_connectorsArguments","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_tunnel_ingress":{"post":{"operationId":"get_tunnel_ingress","summary":"Get the ingress rules (hostname to service mapping) of a remotely managed tunnel and its configuration version. Use for ","description":"Get the ingress rules (hostname to service mapping) of a remotely managed tunnel and its configuration version. Use for \"What does tunnel f70ff985-a4ef-4643-bbbc-4a0ed4fc8415 route to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Cloudflare account id (32-character hex string shown in the dashboard URL, or from the Cloudflare connector's list_accounts).","maxLength":40,"title":"Account Id","type":"string"},"tunnel_id":{"description":"Tunnel id (UUID), as returned by list_tunnels.","maxLength":64,"title":"Tunnel Id","type":"string"}},"required":["account_id","tunnel_id"],"title":"get_tunnel_ingressArguments","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_mesh_nodes":{"post":{"operationId":"list_mesh_nodes","summary":"List WARP Connector (Mesh) nodes of an account with status and activity times. Use for \"Which WARP Connector nodes do I ","description":"List WARP Connector (Mesh) nodes of an account with status and activity times. Use for \"Which WARP Connector nodes do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Cloudflare account id (32-character hex string shown in the dashboard URL, or from the Cloudflare connector's list_accounts).","maxLength":40,"title":"Account Id","type":"string"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only tunnels with this exact name.","title":"Name"},"is_deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list deleted tunnels instead of live ones.","title":"Is Deleted"},"status":{"anyOf":[{"enum":["inactive","degraded","healthy","down"],"type":"string"},{"type":"null"}],"default":null,"description":"Only tunnels with this health status.","title":"Status"},"per_page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 1000).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1; result_info.total_count says how many exist.","title":"Page"}},"required":["account_id"],"title":"list_mesh_nodesArguments","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_private_network_routes":{"post":{"operationId":"list_private_network_routes","summary":"List private network routes (CIDR to tunnel) with tunnel and virtual network names. Use for \"Which private networks are ","description":"List private network routes (CIDR to tunnel) with tunnel and virtual network names. Use for \"Which private networks are routed through my tunnels\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Cloudflare account id (32-character hex string shown in the dashboard URL, or from the Cloudflare connector's list_accounts).","maxLength":40,"title":"Account Id","type":"string"},"tunnel_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only routes pointing at this tunnel id.","title":"Tunnel Id"},"virtual_network_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only routes in this virtual network id.","title":"Virtual Network Id"},"comment":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only routes with exactly this comment.","title":"Comment"},"is_deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list deleted tunnels instead of live ones.","title":"Is Deleted"},"per_page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 1000).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1; result_info.total_count says how many exist.","title":"Page"}},"required":["account_id"],"title":"list_private_network_routesArguments","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_virtual_networks":{"post":{"operationId":"list_virtual_networks","summary":"List Zero Trust virtual networks with name, default flag and comment. Use for \"Which virtual networks exist in my Zero T","description":"List Zero Trust virtual networks with name, default flag and comment. Use for \"Which virtual networks exist in my Zero Trust account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Cloudflare account id (32-character hex string shown in the dashboard URL, or from the Cloudflare connector's list_accounts).","maxLength":40,"title":"Account Id","type":"string"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only the virtual network with this exact name.","title":"Name"},"is_default":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for only the default virtual network.","title":"Is Default"},"is_deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list deleted tunnels instead of live ones.","title":"Is Deleted"}},"required":["account_id"],"title":"list_virtual_networksArguments","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_hostname_routes":{"post":{"operationId":"list_hostname_routes","summary":"List hostname routes (private hostname to tunnel). Use for \"Which private hostnames are routed to tunnels\".","description":"List hostname routes (private hostname to tunnel). Use for \"Which private hostnames are routed to tunnels\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Cloudflare account id (32-character hex string shown in the dashboard URL, or from the Cloudflare connector's list_accounts).","maxLength":40,"title":"Account Id","type":"string"},"hostname":{"anyOf":[{"maxLength":253,"type":"string"},{"type":"null"}],"default":null,"description":"Only routes whose hostname contains this text.","title":"Hostname"},"tunnel_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only routes pointing at this tunnel id.","title":"Tunnel Id"},"is_deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list deleted tunnels instead of live ones.","title":"Is Deleted"},"per_page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 1000).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1; result_info.total_count says how many exist.","title":"Page"}},"required":["account_id"],"title":"list_hostname_routesArguments","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_subnets":{"post":{"operationId":"list_subnets","summary":"List Zero Trust subnets (Cloudflare source, initial resolved IP, WARP) with address range, capacity and usage. Use for \"","description":"List Zero Trust subnets (Cloudflare source, initial resolved IP, WARP) with address range, capacity and usage. Use for \"Which subnets does my Zero Trust account use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Cloudflare account id (32-character hex string shown in the dashboard URL, or from the Cloudflare connector's list_accounts).","maxLength":40,"title":"Account Id","type":"string"},"subnet_type":{"anyOf":[{"enum":["cloudflare_source","initial_resolved_ip","warp"],"type":"string"},{"type":"null"}],"default":null,"description":"Only subnets of this type.","title":"Subnet Type"},"address_family":{"anyOf":[{"enum":["v4","v6"],"type":"string"},{"type":"null"}],"default":null,"description":"Only v4 or v6 subnets.","title":"Address Family"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only the subnet with this exact name.","title":"Name"},"per_page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results per page (1 to 1000).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1; result_info.total_count says how many exist.","title":"Page"}},"required":["account_id"],"title":"list_subnetsArguments","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_connectivity_settings":{"post":{"operationId":"get_connectivity_settings","summary":"Show the account's Zero Trust connectivity settings: whether the ICMP proxy and the WARP off-ramp are enabled. Use for \"","description":"Show the account's Zero Trust connectivity settings: whether the ICMP proxy and the WARP off-ramp are enabled. Use for \"Is the ICMP proxy enabled for my Zero Trust account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Cloudflare account id (32-character hex string shown in the dashboard URL, or from the Cloudflare connector's list_accounts).","maxLength":40,"title":"Account Id","type":"string"}},"required":["account_id"],"title":"get_connectivity_settingsArguments","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}}}}