{"openapi":"3.1.0","info":{"title":"Cloudflare Logpush (BYOK) API","version":"0.1.0","description":"Cloudflare Logpush (BYOK) lets an AI assistant read your own Cloudflare Logpush data through the Cloudflare Logpush API with a key you supply (Cloudflare API token with Logs read permission). Read-only: 10 tools (list_account_jobs, get_account_job, list_account_dataset_jobs, list_zone_jobs, get_zone_job, list_zone_dataset_jobs, list_transformers, get_transformer, list_transformer_versions,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-cloudflare-logpush.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-cloudflare-logpush/docs"},"termsOfService":"https://connectorbay.com/byok-cloudflare-logpush/terms"},"servers":[{"url":"https://byok-cloudflare-logpush.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-cloudflare-logpush/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_account_jobs":{"post":{"operationId":"list_account_jobs","summary":"List the account-level Logpush jobs with dataset, enabled flag, frequency, last successful push, last error and output f","description":"List the account-level Logpush jobs with dataset, enabled flag, frequency, last successful push, last error and output format. The destination URL is left out of the answer because it can contain credentials. Use for \"Are my Cloudflare account Logpush jobs running and when did they last succeed\".","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":"list_account_jobsArguments","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_account_job":{"post":{"operationId":"get_account_job","summary":"Get one account-level Logpush job: dataset, health (last push and last error), batching limits and output fields. The de","description":"Get one account-level Logpush job: dataset, health (last push and last error), batching limits and output fields. The destination URL is left out of the answer because it can contain credentials. Use for \"What fields does account Logpush job 146 send\".","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"},"job_id":{"description":"Logpush job id (integer), as returned by the job lists.","title":"Job Id","type":"integer"}},"required":["account_id","job_id"],"title":"get_account_jobArguments","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_account_dataset_jobs":{"post":{"operationId":"list_account_dataset_jobs","summary":"List the account-level Logpush jobs of one dataset. The destination URL is left out of the answer because it can contain","description":"List the account-level Logpush jobs of one dataset. The destination URL is left out of the answer because it can contain credentials. Use for \"Which account Logpush jobs ship audit_logs\".","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"},"dataset_id":{"description":"Logpush dataset name, for example http_requests, firewall_events, dns_logs or workers_trace_events.","enum":["access_requests","account_abuse_protection_events","audit_logs","audit_logs_v2","biso_user_actions","casb_findings","device_posture_results","dex_application_tests","dex_device_state_events","dlp_forensic_copies","dns_firewall_logs","dns_logs","email_security_alerts","email_security_post_delivery_events","firewall_events","gateway_dns","gateway_http","gateway_network","http_requests","ipsec_logs","magic_bgp_logs","magic_ids_detections","mcp_portal_logs","mnm_flow_logs","nel_reports","network_analytics_logs","page_shield_events","sinkhole_http_logs","spectrum_events","ssh_logs","turnstile_events","warp_config_changes","warp_toggle_changes","websocket_analytics","workers_trace_events","zaraz_events","zero_trust_network_sessions"],"title":"Dataset Id","type":"string"}},"required":["account_id","dataset_id"],"title":"list_account_dataset_jobsArguments","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_zone_jobs":{"post":{"operationId":"list_zone_jobs","summary":"List the zone-level Logpush jobs with dataset, enabled flag, frequency, last successful push, last error and output form","description":"List the zone-level Logpush jobs with dataset, enabled flag, frequency, last successful push, last error and output format. The destination URL is left out of the answer because it can contain credentials. Use for \"Are my zone's Logpush jobs healthy\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"zone_id":{"description":"Cloudflare zone id (32-character hex string, from the Cloudflare connector's list_zones).","maxLength":40,"title":"Zone Id","type":"string"}},"required":["zone_id"],"title":"list_zone_jobsArguments","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_job":{"post":{"operationId":"get_zone_job","summary":"Get one zone-level Logpush job: dataset, health (last push and last error), batching limits and output fields. The desti","description":"Get one zone-level Logpush job: dataset, health (last push and last error), batching limits and output fields. The destination URL is left out of the answer because it can contain credentials. Use for \"When did zone Logpush job 146 last push logs\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"zone_id":{"description":"Cloudflare zone id (32-character hex string, from the Cloudflare connector's list_zones).","maxLength":40,"title":"Zone Id","type":"string"},"job_id":{"description":"Logpush job id (integer), as returned by the job lists.","title":"Job Id","type":"integer"}},"required":["zone_id","job_id"],"title":"get_zone_jobArguments","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_zone_dataset_jobs":{"post":{"operationId":"list_zone_dataset_jobs","summary":"List the zone-level Logpush jobs of one dataset. The destination URL is left out of the answer because it can contain cr","description":"List the zone-level Logpush jobs of one dataset. The destination URL is left out of the answer because it can contain credentials. Use for \"Which zone Logpush jobs ship firewall_events\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"zone_id":{"description":"Cloudflare zone id (32-character hex string, from the Cloudflare connector's list_zones).","maxLength":40,"title":"Zone Id","type":"string"},"dataset_id":{"description":"Logpush dataset name, for example http_requests, firewall_events, dns_logs or workers_trace_events.","enum":["access_requests","account_abuse_protection_events","audit_logs","audit_logs_v2","biso_user_actions","casb_findings","device_posture_results","dex_application_tests","dex_device_state_events","dlp_forensic_copies","dns_firewall_logs","dns_logs","email_security_alerts","email_security_post_delivery_events","firewall_events","gateway_dns","gateway_http","gateway_network","http_requests","ipsec_logs","magic_bgp_logs","magic_ids_detections","mcp_portal_logs","mnm_flow_logs","nel_reports","network_analytics_logs","page_shield_events","sinkhole_http_logs","spectrum_events","ssh_logs","turnstile_events","warp_config_changes","warp_toggle_changes","websocket_analytics","workers_trace_events","zaraz_events","zero_trust_network_sessions"],"title":"Dataset Id","type":"string"}},"required":["zone_id","dataset_id"],"title":"list_zone_dataset_jobsArguments","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_transformers":{"post":{"operationId":"list_transformers","summary":"List Logpush transformers with dataset, description and the jobs they are attached to. Use for \"Which Logpush transforme","description":"List Logpush transformers with dataset, description and the jobs they are attached to. Use for \"Which Logpush transformers 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"}},"required":["account_id"],"title":"list_transformersArguments","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_transformer":{"post":{"operationId":"get_transformer","summary":"Get one Logpush transformer with its dataset, description and associated jobs. Use for \"Which jobs use Logpush transform","description":"Get one Logpush transformer with its dataset, description and associated jobs. Use for \"Which jobs use Logpush transformer 12\".","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"},"transformer_id":{"description":"Logpush transformer id (integer), as returned by list_transformers.","title":"Transformer Id","type":"integer"}},"required":["account_id","transformer_id"],"title":"get_transformerArguments","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_transformer_versions":{"post":{"operationId":"list_transformer_versions","summary":"List the versions of a Logpush transformer (up to 10) with creation time. Use for \"How many versions does Logpush transf","description":"List the versions of a Logpush transformer (up to 10) with creation time. Use for \"How many versions does Logpush transformer 12 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"},"transformer_id":{"description":"Logpush transformer id (integer), as returned by list_transformers.","title":"Transformer Id","type":"integer"},"limit":{"anyOf":[{"maximum":10,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many versions to return (1 to 10).","title":"Limit"}},"required":["account_id","transformer_id"],"title":"list_transformer_versionsArguments","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_log_retention_flag":{"post":{"operationId":"get_log_retention_flag","summary":"Show whether log retention (retrieval of stored logs by Ray ID or time) is enabled for a zone. Use for \"Is log retention","description":"Show whether log retention (retrieval of stored logs by Ray ID or time) is enabled for a zone. Use for \"Is log retention enabled on my Cloudflare zone\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"zone_id":{"description":"Cloudflare zone id (32-character hex string, from the Cloudflare connector's list_zones).","maxLength":40,"title":"Zone Id","type":"string"}},"required":["zone_id"],"title":"get_log_retention_flagArguments","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}}}}