{"openapi":"3.1.0","info":{"title":"Netlify Site Config (BYOK) API","version":"0.1.0","description":"Netlify Site Config (BYOK) lets an AI assistant read your own Netlify Site Config data through the Netlify Site Config API with a key you supply (personal access token). Read-only: 7 tools (list_site_functions, list_deployed_branches, list_split_tests, get_split_test, list_snippets, list_account_env_keys, get_account_build_status). The BYOK key travels with each request, is used for that one call...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-netlify-site-config.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-netlify-site-config/docs"},"termsOfService":"https://connectorbay.com/byok-netlify-site-config/terms"},"servers":[{"url":"https://byok-netlify-site-config.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-netlify-site-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_site_functions":{"post":{"operationId":"list_site_functions","summary":"List the functions deployed on a Netlify site, per deploy: branch, provider, log type, function list and creation time. ","description":"List the functions deployed on a Netlify site, per deploy: branch, provider, log type, function list and creation time. Use for \"Which Netlify functions does my site have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site_id":{"description":"Site ID, as returned by the Netlify connector's list_sites.","maxLength":64,"title":"Site Id","type":"string"},"filter":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only functions matching this text.","title":"Filter"}},"required":["site_id"],"title":"list_site_functionsArguments","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_deployed_branches":{"post":{"operationId":"list_deployed_branches","summary":"List the branches deployed for a Netlify site with branch name, slug, URL and deploy id. Use for \"Which branches of my N","description":"List the branches deployed for a Netlify site with branch name, slug, URL and deploy id. Use for \"Which branches of my Netlify site are deployed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site_id":{"description":"Site ID, as returned by the Netlify connector's list_sites.","maxLength":64,"title":"Site Id","type":"string"}},"required":["site_id"],"title":"list_deployed_branchesArguments","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_split_tests":{"post":{"operationId":"list_split_tests","summary":"List the branch split tests (traffic splits) of a Netlify site with path, branches, percentages and active flag. Use for","description":"List the branch split tests (traffic splits) of a Netlify site with path, branches, percentages and active flag. Use for \"Is a traffic split running on my Netlify site\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site_id":{"description":"Site ID, as returned by the Netlify connector's list_sites.","maxLength":64,"title":"Site Id","type":"string"}},"required":["site_id"],"title":"list_split_testsArguments","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_split_test":{"post":{"operationId":"get_split_test","summary":"Get one branch split test of a Netlify site. Use for \"How is traffic split in test 5f2a1b3c\".","description":"Get one branch split test of a Netlify site. Use for \"How is traffic split in test 5f2a1b3c\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site_id":{"description":"Site ID, as returned by the Netlify connector's list_sites.","maxLength":64,"title":"Site Id","type":"string"},"split_test_id":{"description":"Traffic split (branch split test) id, as returned by list_split_tests.","maxLength":64,"title":"Split Test Id","type":"string"}},"required":["site_id","split_test_id"],"title":"get_split_testArguments","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_snippets":{"post":{"operationId":"list_snippets","summary":"List the script snippets injected on a Netlify site with id, title and positions (HTML code is not returned). Use for \"W","description":"List the script snippets injected on a Netlify site with id, title and positions (HTML code is not returned). Use for \"Which snippets are injected into my Netlify site\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"site_id":{"description":"Site ID, as returned by the Netlify connector's list_sites.","maxLength":64,"title":"Site Id","type":"string"}},"required":["site_id"],"title":"list_snippetsArguments","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_account_env_keys":{"post":{"operationId":"list_account_env_keys","summary":"List the environment variable names of a team with scopes, secret flag, update time and who updated them. Values are nev","description":"List the environment variable names of a team with scopes, secret flag, update time and who updated them. Values are never returned. Use for \"Which environment variables are defined for my Netlify team\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Netlify account (team) ID, as returned by the Netlify connector's list_accounts.","maxLength":64,"title":"Account Id","type":"string"},"site_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only variables available to this site.","title":"Site Id"},"context_name":{"anyOf":[{"enum":["all","dev","dev-server","branch-deploy","deploy-preview","production"],"type":"string"},{"type":"null"}],"default":null,"description":"Only variables for this deploy context.","title":"Context Name"},"scope":{"anyOf":[{"enum":["builds","functions","runtime","post-processing"],"type":"string"},{"type":"null"}],"default":null,"description":"Only variables with this scope.","title":"Scope"}},"required":["account_id"],"title":"list_account_env_keysArguments","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_account_build_status":{"post":{"operationId":"get_account_build_status","summary":"Get the team's build status: active and pending builds, enqueued builds, build count and minutes used. Use for \"Are my N","description":"Get the team's build status: active and pending builds, enqueued builds, build count and minutes used. Use for \"Are my Netlify builds queued\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Netlify account (team) ID, as returned by the Netlify connector's list_accounts.","maxLength":64,"title":"Account Id","type":"string"}},"required":["account_id"],"title":"get_account_build_statusArguments","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}}}}