{"openapi":"3.1.0","info":{"title":"Cloudflare Workers Platform (BYOK) API","version":"0.1.0","description":"Cloudflare Workers Platform (BYOK) lets an AI assistant read your own Cloudflare Workers Platform data through the Cloudflare Workers Platform API with a key you supply (Cloudflare API token with Workers, KV, D1, Queues or Vectorize read permission). Read-only: 11 tools (list_kv_namespaces, list_d1_databases, get_d1_database, list_queues, list_hyperdrive_configs, list_vectorize_indexes,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-cloudflare-workers-platform.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-cloudflare-workers-platform/docs"},"termsOfService":"https://connectorbay.com/byok-cloudflare-workers-platform/terms"},"servers":[{"url":"https://byok-cloudflare-workers-platform.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-cloudflare-workers-platform/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_kv_namespaces":{"post":{"operationId":"list_kv_namespaces","summary":"List Workers KV namespaces with id and title. Use for \"Which KV namespaces do I have\".","description":"List Workers KV namespaces with id and title. Use for \"Which KV namespaces 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"},"order":{"anyOf":[{"enum":["id","title"],"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":5,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results per page (5 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_kv_namespacesArguments","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_d1_databases":{"post":{"operationId":"list_d1_databases","summary":"List D1 databases with name, id, version and creation date. Use for \"Which D1 databases are in my account\".","description":"List D1 databases with name, id, version and creation date. Use for \"Which D1 databases are in 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"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only databases whose name contains this text.","title":"Name"},"per_page":{"anyOf":[{"maximum":100,"minimum":5,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results per page (5 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_d1_databasesArguments","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_d1_database":{"post":{"operationId":"get_d1_database","summary":"Get one D1 database: size in bytes, number of tables, jurisdiction and read-replication mode. Use for \"How big is my D1 ","description":"Get one D1 database: size in bytes, number of tables, jurisdiction and read-replication mode. Use for \"How big is my D1 database app-db\".","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"},"database_id":{"description":"D1 database id (UUID, the uuid field of list_d1_databases).","maxLength":64,"title":"Database Id","type":"string"}},"required":["account_id","database_id"],"title":"get_d1_databaseArguments","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_queues":{"post":{"operationId":"list_queues","summary":"List Cloudflare Queues with producer and consumer counts, retention period and delivery settings. Use for \"Which Cloudfl","description":"List Cloudflare Queues with producer and consumer counts, retention period and delivery settings. Use for \"Which Cloudflare Queues exist and are any paused\".","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_queuesArguments","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_hyperdrive_configs":{"post":{"operationId":"list_hyperdrive_configs","summary":"List Hyperdrive configurations (database connection pools) with name, caching settings and connection limit. Origin cred","description":"List Hyperdrive configurations (database connection pools) with name, caching settings and connection limit. Origin credentials are not returned. Use for \"Which Hyperdrive configs do I have and is caching on\".","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"},"per_page":{"anyOf":[{"maximum":100,"minimum":5,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results per page (5 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_hyperdrive_configsArguments","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_vectorize_indexes":{"post":{"operationId":"list_vectorize_indexes","summary":"List Vectorize indexes with dimensions, distance metric and creation date. Use for \"Which Vectorize indexes do I have\".","description":"List Vectorize indexes with dimensions, distance metric and creation date. Use for \"Which Vectorize indexes 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_vectorize_indexesArguments","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_vectorize_index_info":{"post":{"operationId":"get_vectorize_index_info","summary":"Get a Vectorize index's vector count, dimensions and the time up to which writes have been processed. Use for \"How many ","description":"Get a Vectorize index's vector count, dimensions and the time up to which writes have been processed. Use for \"How many vectors are in my docs-embeddings index\".","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"},"index_name":{"description":"Name of the Vectorize index.","maxLength":64,"title":"Index Name","type":"string"}},"required":["account_id","index_name"],"title":"get_vectorize_index_infoArguments","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_workflows":{"post":{"operationId":"list_workflows","summary":"List Cloudflare Workflows with the Worker script and class they run and their cron schedules. Use for \"Which Cloudflare ","description":"List Cloudflare Workflows with the Worker script and class they run and their cron schedules. Use for \"Which Cloudflare Workflows are deployed\".","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"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search by workflow name.","title":"Search"},"per_page":{"anyOf":[{"maximum":100,"minimum":5,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results per page (5 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_workflowsArguments","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_domains":{"post":{"operationId":"list_worker_domains","summary":"List the custom domains attached to Workers with hostname, Worker service, environment and zone. Use for \"Which hostname","description":"List the custom domains attached to Workers with hostname, Worker service, environment and zone. Use for \"Which hostnames point at my Workers\".","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"},"service":{"anyOf":[{"maxLength":63,"type":"string"},{"type":"null"}],"default":null,"description":"Only domains for this Worker service.","title":"Service"},"hostname":{"anyOf":[{"maxLength":253,"type":"string"},{"type":"null"}],"default":null,"description":"Only this exact hostname.","title":"Hostname"},"zone_name":{"anyOf":[{"maxLength":253,"type":"string"},{"type":"null"}],"default":null,"description":"Only domains in this zone.","title":"Zone Name"}},"required":["account_id"],"title":"list_worker_domainsArguments","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_workers_subdomain":{"post":{"operationId":"get_workers_subdomain","summary":"Get the account's workers.dev subdomain. Use for \"What is my workers.dev subdomain\".","description":"Get the account's workers.dev subdomain. Use for \"What is my workers.dev subdomain\".","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_workers_subdomainArguments","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_worker_cron_triggers":{"post":{"operationId":"get_worker_cron_triggers","summary":"Get the cron triggers of one Worker script with their cron expressions. Use for \"When does my Worker my-worker run on a ","description":"Get the cron triggers of one Worker script with their cron expressions. Use for \"When does my Worker my-worker run on a schedule\".","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"},"script_name":{"description":"Name of the Worker script, as returned by the Cloudflare connector's list_worker_scripts.","maxLength":63,"title":"Script Name","type":"string"}},"required":["account_id","script_name"],"title":"get_worker_cron_triggersArguments","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}}}}