{"openapi":"3.1.0","info":{"title":"Render Config (BYOK) API","version":"0.1.0","description":"Render Config (BYOK) lets an AI assistant read your own Render Config data through the Render Config API with a key you supply (API key). Read-only: 11 tools (list_blueprints, get_blueprint, list_blueprint_syncs, get_project, list_environments, get_environment, list_webhooks, get_webhook, get_owner_notification_settings, list_notification_overrides, list_build_sources). The BYOK key travels with...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-render-config.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-render-config/docs"},"termsOfService":"https://connectorbay.com/byok-render-config/terms"},"servers":[{"url":"https://byok-render-config.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-render-config/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_blueprints":{"post":{"operationId":"list_blueprints","summary":"List Render Blueprints (infrastructure-as-code stacks) with status, auto-sync flag, repository, branch, file path and la","description":"List Render Blueprints (infrastructure-as-code stacks) with status, auto-sync flag, repository, branch, file path and last sync time. Use for \"Which Render Blueprints do I have and are they in sync\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"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_blueprintsArguments","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_blueprint":{"post":{"operationId":"get_blueprint","summary":"Get one Blueprint with status, repository, branch, file path, last sync time and the resources (id, name, type) it manag","description":"Get one Blueprint with status, repository, branch, file path, last sync time and the resources (id, name, type) it manages. Use for \"Which resources does my Render Blueprint manage\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"blueprint_id":{"description":"Id of the Render Blueprint, as returned by list_blueprints (for example 'exs-abc123').","maxLength":64,"title":"Blueprint Id","type":"string"}},"required":["blueprint_id"],"title":"get_blueprintArguments","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_blueprint_syncs":{"post":{"operationId":"list_blueprint_syncs","summary":"List the sync runs of a Blueprint with state, commit id, start time and completion time. Use for \"Did the last sync of m","description":"List the sync runs of a Blueprint with state, commit id, start time and completion time. Use for \"Did the last sync of my Render Blueprint succeed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"blueprint_id":{"description":"Id of the Render Blueprint, as returned by list_blueprints (for example 'exs-abc123').","maxLength":64,"title":"Blueprint Id","type":"string"},"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"}},"required":["blueprint_id"],"title":"list_blueprint_syncsArguments","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_project":{"post":{"operationId":"get_project","summary":"Get one Render project: name, creation and update time and the ids of its environments. Owner contact details are left o","description":"Get one Render project: name, creation and update time and the ids of its environments. Owner contact details are left out. Use for \"Which environments does my Render project have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Id of the Render project, as returned by the Render connector's list_projects (for example 'prj-abc123').","maxLength":64,"title":"Project Id","type":"string"}},"required":["project_id"],"title":"get_projectArguments","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_environments":{"post":{"operationId":"list_environments","summary":"List the environments of a project with protection status, network isolation, IP allow list and the ids of services, dat","description":"List the environments of a project with protection status, network isolation, IP allow list and the ids of services, databases, Redis instances and env groups in each. Use for \"Which services are in each environment of my Render project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Id of the project whose environments to list (for example 'prj-abc123').","maxLength":64,"title":"Project Id","type":"string"},"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"}},"required":["project_id"],"title":"list_environmentsArguments","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_environment":{"post":{"operationId":"get_environment","summary":"Get one environment: project, protection status, network isolation, IP allow list and the ids of its services, databases","description":"Get one environment: project, protection status, network isolation, IP allow list and the ids of its services, databases, Redis instances and env groups. Use for \"Is my Render production environment protected\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"environment_id":{"description":"Id of the Render environment, as returned by list_environments (for example 'evm-abc123').","maxLength":64,"title":"Environment Id","type":"string"}},"required":["environment_id"],"title":"get_environmentArguments","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_webhooks":{"post":{"operationId":"list_webhooks","summary":"List Render webhooks with name, enabled flag and subscribed event types. The destination URL and signing secret are not ","description":"List Render webhooks with name, enabled flag and subscribed event types. The destination URL and signing secret are not returned. Use for \"Which Render webhooks do I have and what events do they send\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"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_webhooksArguments","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_webhook":{"post":{"operationId":"get_webhook","summary":"Get one Render webhook: name, enabled flag and subscribed event types. The destination URL and signing secret are not re","description":"Get one Render webhook: name, enabled flag and subscribed event types. The destination URL and signing secret are not returned. Use for \"What events does my Render webhook send\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"webhook_id":{"description":"Id of the Render webhook, as returned by list_webhooks (for example 'whk-abc123').","maxLength":64,"title":"Webhook Id","type":"string"}},"required":["webhook_id"],"title":"get_webhookArguments","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_owner_notification_settings":{"post":{"operationId":"get_owner_notification_settings","summary":"Get the notification settings of a workspace: whether Slack and email notifications are on, preview notifications and wh","description":"Get the notification settings of a workspace: whether Slack and email notifications are on, preview notifications and which events are sent. Use for \"How are Render notifications configured for my workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"owner_id":{"description":"Id of the workspace (user usr-... or team tea-...), as returned by the Render connector's list_owners.","maxLength":64,"title":"Owner Id","type":"string"}},"required":["owner_id"],"title":"get_owner_notification_settingsArguments","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_notification_overrides":{"post":{"operationId":"list_notification_overrides","summary":"List per-service notification overrides that differ from the workspace defaults. Use for \"Which Render services override","description":"List per-service notification overrides that differ from the workspace defaults. Use for \"Which Render services override the notification settings\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"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_notification_overridesArguments","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_build_sources":{"post":{"operationId":"list_build_sources","summary":"List Render build sources (shared Git or image build definitions) with repository, branch, runtime, region and the servi","description":"List Render build sources (shared Git or image build definitions) with repository, branch, runtime, region and the services that use them. Use for \"Which build sources do I have on Render\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only build sources of this project id.","title":"Project Id"},"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_build_sourcesArguments","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}}}}