{"openapi":"3.1.0","info":{"title":"Cloudflare Secrets Store (BYOK) API","version":"0.1.0","description":"Cloudflare Secrets Store (BYOK) lets an AI assistant read your own Cloudflare Secrets Store data through the Cloudflare Secrets Store API with a key you supply (Cloudflare API token with Secrets Store read permission). Read-only: 5 tools (list_stores, get_store, list_secrets, get_secret, get_quota). The BYOK key travels with each request, is used for that one call only and is never stored, logged...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-cloudflare-secrets-store.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-cloudflare-secrets-store/docs"},"termsOfService":"https://connectorbay.com/byok-cloudflare-secrets-store/terms"},"servers":[{"url":"https://byok-cloudflare-secrets-store.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-cloudflare-secrets-store/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_stores":{"post":{"operationId":"list_stores","summary":"List the Secrets Stores of an account with id, name and dates. Use for \"Which Secrets Stores does my Cloudflare account ","description":"List the Secrets Stores of an account with id, name and dates. Use for \"Which Secrets Stores does my Cloudflare 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"},"order":{"anyOf":[{"enum":["name","created","modified"],"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":20,"description":"How many results 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; result_info.total_count says how many exist.","title":"Page"}},"required":["account_id"],"title":"list_storesArguments","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_store":{"post":{"operationId":"get_store","summary":"Get one Secrets Store by id. Use for \"When was my Secrets Store created\".","description":"Get one Secrets Store by id. Use for \"When was my Secrets Store created\".","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"},"store_id":{"description":"Secrets Store id, as returned by list_stores.","maxLength":64,"title":"Store Id","type":"string"}},"required":["account_id","store_id"],"title":"get_storeArguments","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_secrets":{"post":{"operationId":"list_secrets","summary":"List the secrets in a store with name, comment, scopes, status and dates. Secret values are never returned by the API. U","description":"List the secrets in a store with name, comment, scopes, status and dates. Secret values are never returned by the API. Use for \"Which secrets are stored in my Cloudflare Secrets Store and what are they scoped 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"},"store_id":{"description":"Secrets Store id, as returned by list_stores.","maxLength":64,"title":"Store Id","type":"string"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only secrets whose name or comment matches this text.","title":"Search"},"order":{"anyOf":[{"enum":["name","comment","created","modified","status"],"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":20,"description":"How many results 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; result_info.total_count says how many exist.","title":"Page"}},"required":["account_id","store_id"],"title":"list_secretsArguments","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_secret":{"post":{"operationId":"get_secret","summary":"Get the metadata of one secret (name, comment, scopes, status, dates); the value is never returned. Use for \"Is the secr","description":"Get the metadata of one secret (name, comment, scopes, status, dates); the value is never returned. Use for \"Is the secret STRIPE_KEY active and which scopes can use it\".","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"},"store_id":{"description":"Secrets Store id, as returned by list_stores.","maxLength":64,"title":"Store Id","type":"string"},"secret_id":{"description":"Secret id, as returned by list_secrets.","maxLength":64,"title":"Secret Id","type":"string"}},"required":["account_id","store_id","secret_id"],"title":"get_secretArguments","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_quota":{"post":{"operationId":"get_quota","summary":"Show how many secrets the account has used out of its Secrets Store quota. Use for \"How many Secrets Store secrets can I","description":"Show how many secrets the account has used out of its Secrets Store quota. Use for \"How many Secrets Store secrets can I still add\".","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_quotaArguments","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}}}}