{"openapi":"3.1.0","info":{"title":"Cloudflare Security Center (BYOK) API","version":"0.1.0","description":"Cloudflare Security Center (BYOK) lets an AI assistant read your own Cloudflare Security Center data through the Cloudflare Security Center API with a key you supply (Cloudflare API token with Security Center read permission). Read-only: 9 tools (list_account_insights, list_zone_insights, count_account_insights_by_class, count_account_insights_by_severity, count_account_insights_by_type,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-cloudflare-security-center.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-cloudflare-security-center/docs"},"termsOfService":"https://connectorbay.com/byok-cloudflare-security-center/terms"},"servers":[{"url":"https://byok-cloudflare-security-center.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-cloudflare-security-center/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_insights":{"post":{"operationId":"list_account_insights","summary":"List security insights found for the account's domains (misconfigurations, exposed infrastructure, email security gaps) ","description":"List security insights found for the account's domains (misconfigurations, exposed infrastructure, email security gaps) with class, type, severity, subject and status. Each issue also carries a payload object. Use for \"What security issues does Cloudflare Security Center report for my 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"},"dismissed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to count or list only dismissed insights, false for only active ones; leave empty for both.","title":"Dismissed"},"per_page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many insights 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.","title":"Page"}},"required":["account_id"],"title":"list_account_insightsArguments","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_insights":{"post":{"operationId":"list_zone_insights","summary":"List security insights for one zone with class, type, severity, subject and status. Each issue also carries a payload ob","description":"List security insights for one zone with class, type, severity, subject and status. Each issue also carries a payload object. Use for \"What security insights does Cloudflare have for my 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"},"dismissed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to count or list only dismissed insights, false for only active ones; leave empty for both.","title":"Dismissed"},"per_page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many insights 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.","title":"Page"}},"required":["zone_id"],"title":"list_zone_insightsArguments","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/count_account_insights_by_class":{"post":{"operationId":"count_account_insights_by_class","summary":"Count the account's security insights by issue class, for example how many domains lack DMARC. Use for \"How many Securit","description":"Count the account's security insights by issue class, for example how many domains lack DMARC. Use for \"How many Security Center insights per class does my account 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"},"dismissed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to count or list only dismissed insights, false for only active ones; leave empty for both.","title":"Dismissed"}},"required":["account_id"],"title":"count_account_insights_by_classArguments","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/count_account_insights_by_severity":{"post":{"operationId":"count_account_insights_by_severity","summary":"Count the account's security insights by severity (Low, Moderate, Critical). Use for \"How many critical Security Center ","description":"Count the account's security insights by severity (Low, Moderate, Critical). Use for \"How many critical Security Center insights are open on my 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"},"dismissed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to count or list only dismissed insights, false for only active ones; leave empty for both.","title":"Dismissed"}},"required":["account_id"],"title":"count_account_insights_by_severityArguments","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/count_account_insights_by_type":{"post":{"operationId":"count_account_insights_by_type","summary":"Count the account's security insights by issue type, for example insecure configuration or exposed infrastructure. Use f","description":"Count the account's security insights by issue type, for example insecure configuration or exposed infrastructure. Use for \"Which types of Security Center insights are most common on my 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"},"dismissed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to count or list only dismissed insights, false for only active ones; leave empty for both.","title":"Dismissed"}},"required":["account_id"],"title":"count_account_insights_by_typeArguments","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/count_zone_insights_by_severity":{"post":{"operationId":"count_zone_insights_by_severity","summary":"Count one zone's security insights by severity (Low, Moderate, Critical). Use for \"How severe are the Security Center in","description":"Count one zone's security insights by severity (Low, Moderate, Critical). Use for \"How severe are the Security Center insights on my 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"},"dismissed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to count or list only dismissed insights, false for only active ones; leave empty for both.","title":"Dismissed"}},"required":["zone_id"],"title":"count_zone_insights_by_severityArguments","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_recent_scans":{"post":{"operationId":"get_recent_scans","summary":"Show recent Security Center scans of the account (id, start time, status) and the scan quota used and available. Use for","description":"Show recent Security Center scans of the account (id, start time, status) and the scan quota used and available. Use for \"When did Security Center last scan my account and how much scan quota is left\".","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_recent_scansArguments","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_state":{"post":{"operationId":"get_account_state","summary":"Show whether Security Center scans are enabled for the account and whether a dormant account was recently reactivated. U","description":"Show whether Security Center scans are enabled for the account and whether a dormant account was recently reactivated. Use for \"Are Security Center scans enabled on my 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_account_stateArguments","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_security_txt":{"post":{"operationId":"get_security_txt","summary":"Get the zone's security.txt settings: enabled flag, contacts, policy links, canonical URLs, expiry and preferred languag","description":"Get the zone's security.txt settings: enabled flag, contacts, policy links, canonical URLs, expiry and preferred languages. Use for \"What security.txt does my zone publish\".","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_security_txtArguments","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}}}}