{"openapi":"3.1.0","info":{"title":"Render Datastores (BYOK) API","version":"0.1.0","description":"Render Datastores (BYOK) lets an AI assistant read your own Render Datastores data through the Render Datastores API with a key you supply (API key). Read-only: 7 tools (get_postgres, get_postgres_recovery, list_postgres_users, list_postgres_table_sizes, list_postgres_table_scans, list_key_value_stores, get_key_value_store). The BYOK key travels with each request, is used for that one call only...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-render-datastores.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-render-datastores/docs"},"termsOfService":"https://connectorbay.com/byok-render-datastores/terms"},"servers":[{"url":"https://byok-render-datastores.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-render-datastores/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/get_postgres":{"post":{"operationId":"get_postgres","summary":"Get one Render Postgres database: plan, region, status, role, disk size, high availability flag, database name, user, re","description":"Get one Render Postgres database: plan, region, status, role, disk size, high availability flag, database name, user, read replicas and dates. Connection strings are not requested. Use for \"How big is my Render Postgres database and what plan is it on\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"postgres_id":{"description":"Id of the Render Postgres database, as shown by the Render connector's list_postgres_databases (for example 'dpg-abc123').","maxLength":64,"title":"Postgres Id","type":"string"}},"required":["postgres_id"],"title":"get_postgresArguments","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_postgres_recovery":{"post":{"operationId":"get_postgres_recovery","summary":"Get the point-in-time recovery status of a Render Postgres database and the earliest time it can be restored to. Use for","description":"Get the point-in-time recovery status of a Render Postgres database and the earliest time it can be restored to. Use for \"How far back can I restore my Render Postgres database\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"postgres_id":{"description":"Id of the Render Postgres database, as shown by the Render connector's list_postgres_databases (for example 'dpg-abc123').","maxLength":64,"title":"Postgres Id","type":"string"}},"required":["postgres_id"],"title":"get_postgres_recoveryArguments","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_postgres_users":{"post":{"operationId":"list_postgres_users","summary":"List the database users of a Render Postgres database with default flag, creation time and open connection count (passwo","description":"List the database users of a Render Postgres database with default flag, creation time and open connection count (passwords are not requested). Use for \"Which database users does my Render Postgres have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"postgres_id":{"description":"Id of the Render Postgres database, as shown by the Render connector's list_postgres_databases (for example 'dpg-abc123').","maxLength":64,"title":"Postgres Id","type":"string"}},"required":["postgres_id"],"title":"list_postgres_usersArguments","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_postgres_table_sizes":{"post":{"operationId":"list_postgres_table_sizes","summary":"List table and index sizes in bytes of a Render Postgres database, by database, schema and table. Use for \"Which tables ","description":"List table and index sizes in bytes of a Render Postgres database, by database, schema and table. Use for \"Which tables take the most space in my Render Postgres\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"postgres_id":{"description":"Id of the Render Postgres database, as shown by the Render connector's list_postgres_databases (for example 'dpg-abc123').","maxLength":64,"title":"Postgres Id","type":"string"}},"required":["postgres_id"],"title":"list_postgres_table_sizesArguments","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_postgres_table_scans":{"post":{"operationId":"list_postgres_table_scans","summary":"List how many sequential scans each table of a Render Postgres database has had, by database, schema and table. Use for ","description":"List how many sequential scans each table of a Render Postgres database has had, by database, schema and table. Use for \"Which tables are scanned most often in my Render Postgres\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"postgres_id":{"description":"Id of the Render Postgres database, as shown by the Render connector's list_postgres_databases (for example 'dpg-abc123').","maxLength":64,"title":"Postgres Id","type":"string"}},"required":["postgres_id"],"title":"list_postgres_table_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/list_key_value_stores":{"post":{"operationId":"list_key_value_stores","summary":"List Render Key Value (Redis-compatible) stores with plan, region, status, version, eviction policy and dates. Connectio","description":"List Render Key Value (Redis-compatible) stores with plan, region, status, version, eviction policy and dates. Connection strings are not requested. Use for \"Which Key Value stores do I run on Render\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"region":{"anyOf":[{"enum":["frankfurt","oregon","ohio","singapore","virginia"],"type":"string"},{"type":"null"}],"default":null,"description":"Only stores in this region.","title":"Region"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only stores with this name.","title":"Name"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor: the 'cursor' value of the last item of the previous answer; leave empty for the first page.","title":"Cursor"}},"title":"list_key_value_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_key_value_store":{"post":{"operationId":"get_key_value_store","summary":"Get one Render Key Value store: plan, region, status, version, eviction policy, persistence mode and dates. Use for \"Wha","description":"Get one Render Key Value store: plan, region, status, version, eviction policy, persistence mode and dates. Use for \"What eviction policy does my Render Key Value store use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"key_value_id":{"description":"Id of the Render Key Value store, as returned by list_key_value (for example 'red-abc123').","maxLength":64,"title":"Key Value Id","type":"string"}},"required":["key_value_id"],"title":"get_key_value_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}}}}