{"openapi":"3.1.0","info":{"title":"Neon Project Admin (BYOK) API","version":"0.1.0","description":"Neon Project Admin (BYOK) lets an AI assistant read your own Neon Project Admin data through the Neon Project Admin API with a key you supply (API key). Read-only: 9 tools (list_snapshots, get_backup_schedule, list_jwks_providers, list_project_vpc_endpoints, list_preload_libraries, list_api_keys, list_organization_api_keys, list_branch_roles, list_masking_rules). The BYOK key travels with each...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-neon-project-admin.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-neon-project-admin/docs"},"termsOfService":"https://connectorbay.com/byok-neon-project-admin/terms"},"servers":[{"url":"https://byok-neon-project-admin.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-neon-project-admin/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_snapshots":{"post":{"operationId":"list_snapshots","summary":"List the snapshots (point-in-time backups) of a project with name, source branch, timestamp, expiry, whether it was manu","description":"List the snapshots (point-in-time backups) of a project with name, source branch, timestamp, expiry, whether it was manual and sizes in bytes. Use for \"What snapshots does my Neon project have and when do they expire\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Neon project id, for example 'cool-leaf-12345678', as returned by the project list.","maxLength":100,"title":"Project Id","type":"string"}},"required":["project_id"],"title":"list_snapshotsArguments","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_backup_schedule":{"post":{"operationId":"get_backup_schedule","summary":"Show the automatic snapshot schedule of a branch: frequency, hour, day, month and retention in seconds for each rule. Us","description":"Show the automatic snapshot schedule of a branch: frequency, hour, day, month and retention in seconds for each rule. Use for \"How often does my Neon branch take automatic snapshots\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Neon project id, for example 'cool-leaf-12345678', as returned by the project list.","maxLength":100,"title":"Project Id","type":"string"},"branch_id":{"description":"Neon branch id, for example 'br-aged-sun-12345678', as returned by the branch list.","maxLength":100,"title":"Branch Id","type":"string"}},"required":["project_id","branch_id"],"title":"get_backup_scheduleArguments","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_jwks_providers":{"post":{"operationId":"list_jwks_providers","summary":"List the JWKS URLs a project trusts for verifying JWT authentication (Data API), with provider name, audience, role name","description":"List the JWKS URLs a project trusts for verifying JWT authentication (Data API), with provider name, audience, role names and dates. Use for \"Which JWT providers does my Neon project trust\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Neon project id, for example 'cool-leaf-12345678', as returned by the project list.","maxLength":100,"title":"Project Id","type":"string"}},"required":["project_id"],"title":"list_jwks_providersArguments","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_project_vpc_endpoints":{"post":{"operationId":"list_project_vpc_endpoints","summary":"List the VPC endpoints restricting access to a project, with endpoint id and label. Use for \"Which VPC endpoints are all","description":"List the VPC endpoints restricting access to a project, with endpoint id and label. Use for \"Which VPC endpoints are allowed to reach my Neon project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Neon project id, for example 'cool-leaf-12345678', as returned by the project list.","maxLength":100,"title":"Project Id","type":"string"}},"required":["project_id"],"title":"list_project_vpc_endpointsArguments","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_preload_libraries":{"post":{"operationId":"list_preload_libraries","summary":"List the Postgres shared_preload_libraries a project can enable, with description, version, and default and experimental","description":"List the Postgres shared_preload_libraries a project can enable, with description, version, and default and experimental flags. Use for \"Which preload libraries can I enable in my Neon project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Neon project id, for example 'cool-leaf-12345678', as returned by the project list.","maxLength":100,"title":"Project Id","type":"string"}},"required":["project_id"],"title":"list_preload_librariesArguments","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_api_keys":{"post":{"operationId":"list_api_keys","summary":"List the API keys of the key owner's personal account: id, name, creation time and last use. Key values and IP addresses","description":"List the API keys of the key owner's personal account: id, name, creation time and last use. Key values and IP addresses are not returned or picked. Use for \"Which Neon API keys do I have and when were they last used\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_api_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/list_organization_api_keys":{"post":{"operationId":"list_organization_api_keys","summary":"List the API keys of an organization: id, name, creation time, last use and the project a key is limited to (if any). Us","description":"List the API keys of an organization: id, name, creation time, last use and the project a key is limited to (if any). Use for \"Which API keys does my Neon organization have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_id":{"description":"Neon organization id, for example 'org-cool-leaf-12345678', as returned by the organization list.","maxLength":100,"title":"Org Id","type":"string"}},"required":["org_id"],"title":"list_organization_api_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/list_branch_roles":{"post":{"operationId":"list_branch_roles","summary":"List the Postgres roles of a branch with name, protected flag, authentication method and dates. Passwords are not picked","description":"List the Postgres roles of a branch with name, protected flag, authentication method and dates. Passwords are not picked. Use for \"Which database roles exist on my Neon branch\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Neon project id, for example 'cool-leaf-12345678', as returned by the project list.","maxLength":100,"title":"Project Id","type":"string"},"branch_id":{"description":"Neon branch id, for example 'br-aged-sun-12345678', as returned by the branch list.","maxLength":100,"title":"Branch Id","type":"string"}},"required":["project_id","branch_id"],"title":"list_branch_rolesArguments","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_masking_rules":{"post":{"operationId":"list_masking_rules","summary":"List the data masking rules of an anonymized branch: database, schema, table, column and masking function. Masking value","description":"List the data masking rules of an anonymized branch: database, schema, table, column and masking function. Masking values are not picked. Use for \"Which columns are masked on my Neon branch\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Neon project id, for example 'cool-leaf-12345678', as returned by the project list.","maxLength":100,"title":"Project Id","type":"string"},"branch_id":{"description":"Neon branch id, for example 'br-aged-sun-12345678', as returned by the branch list.","maxLength":100,"title":"Branch Id","type":"string"}},"required":["project_id","branch_id"],"title":"list_masking_rulesArguments","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}}}}