{"openapi":"3.1.0","info":{"title":"Cloudflare Databases (BYOK) API","version":"0.1.0","description":"Cloudflare Databases (BYOK) lets an AI assistant read your own Cloudflare Databases data through the Cloudflare Databases API with a key you supply (Cloudflare API token with D1 and Hyperdrive read permission). Read-only: 5 tools (list_d1_databases, get_d1_database, get_d1_time_travel_bookmark, list_hyperdrive_configs, get_hyperdrive_config). The BYOK key travels with each request, is used for...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-cloudflare-databases.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-cloudflare-databases/docs"},"termsOfService":"https://connectorbay.com/byok-cloudflare-databases/terms"},"servers":[{"url":"https://byok-cloudflare-databases.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-cloudflare-databases/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_d1_databases":{"post":{"operationId":"list_d1_databases","summary":"List the D1 databases of an account with UUID, name, creation date, version and jurisdiction. Does not run queries. Use ","description":"List the D1 databases of an account with UUID, name, creation date, version and jurisdiction. Does not run queries. Use for \"Which D1 databases do I have in Cloudflare\".","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":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only databases whose name contains this text.","title":"Name"},"per_page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1000,"description":"How many results per page (1 to 10000).","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: name, size in bytes, number of tables, jurisdiction, version and read replication mode. Use for \"Ho","description":"Get one D1 database: name, size in bytes, number of tables, jurisdiction, version and read replication mode. Use for \"How big is my D1 database and how many tables does it 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"},"database_id":{"description":"D1 database UUID, as returned by 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/get_d1_time_travel_bookmark":{"post":{"operationId":"get_d1_time_travel_bookmark","summary":"Get the Time Travel bookmark of a D1 database at a given time (default: now). A bookmark identifies a restore point. Use","description":"Get the Time Travel bookmark of a D1 database at a given time (default: now). A bookmark identifies a restore point. Use for \"What is the D1 Time Travel bookmark of my database right now\".","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 UUID, as returned by list_d1_databases.","maxLength":64,"title":"Database Id","type":"string"},"timestamp":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"ISO 8601 time to look up, for example 2026-10-01T12:00:00Z; empty means now.","title":"Timestamp"}},"required":["account_id","database_id"],"title":"get_d1_time_travel_bookmarkArguments","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 with name, origin host, port, database, scheme, caching settings and connection limit. Or","description":"List Hyperdrive configurations with name, origin host, port, database, scheme, caching settings and connection limit. Origin passwords are never returned. Use for \"Which Hyperdrive connection configs exist and what database do they point at\".","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":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_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/get_hyperdrive_config":{"post":{"operationId":"get_hyperdrive_config","summary":"Get one Hyperdrive configuration: origin host, port, database, scheme, caching and mTLS settings. Use for \"How is Hyperd","description":"Get one Hyperdrive configuration: origin host, port, database, scheme, caching and mTLS settings. Use for \"How is Hyperdrive config pg-main cached\".","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"},"hyperdrive_id":{"description":"Hyperdrive configuration id, as returned by list_hyperdrive_configs.","maxLength":64,"title":"Hyperdrive Id","type":"string"}},"required":["account_id","hyperdrive_id"],"title":"get_hyperdrive_configArguments","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}}}}