{"openapi":"3.1.0","info":{"title":"Supabase Project Ops (BYOK) API","version":"0.1.0","description":"Supabase Project Ops (BYOK) lets an AI assistant read your own Supabase Project Ops data through the Supabase Project Ops API with a key you supply (personal access token). Read-only: 10 tools (list_organization_projects, get_organization_entitlements, list_available_regions, list_project_addons, get_upgrade_status, list_restore_versions, get_restore_point, get_function, get_branch,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-supabase-project-ops.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-supabase-project-ops/docs"},"termsOfService":"https://connectorbay.com/byok-supabase-project-ops/terms"},"servers":[{"url":"https://byok-supabase-project-ops.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-supabase-project-ops/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_organization_projects":{"post":{"operationId":"list_organization_projects","summary":"List the projects of one organization with ref, name, region, status, creation time and each database's compute size, ty","description":"List the projects of one organization with ref, name, region, status, creation time and each database's compute size, type and disk size. Supports search, sorting and paging. Use for \"Which projects does my Supabase organization have and are they healthy\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"slug":{"description":"Organization slug, as returned by the Supabase connector's list_organizations.","maxLength":64,"title":"Slug","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many projects to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many projects to skip.","title":"Offset"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only projects whose name matches this text.","title":"Search"},"sort":{"anyOf":[{"enum":["name_asc","name_desc","created_asc","created_desc"],"type":"string"},{"type":"null"}],"default":"name_asc","description":"Sort order.","title":"Sort"}},"required":["slug"],"title":"list_organization_projectsArguments","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_organization_entitlements":{"post":{"operationId":"get_organization_entitlements","summary":"List the features the organization's plan entitles it to (for example branching limit, log retention days, read replicas","description":"List the features the organization's plan entitles it to (for example branching limit, log retention days, read replicas) with the allowed value of each. Use for \"Does my Supabase organization plan include read replicas and how many days of log retention\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"slug":{"description":"Organization slug, as returned by the Supabase connector's list_organizations.","maxLength":64,"title":"Slug","type":"string"}},"required":["slug"],"title":"get_organization_entitlementsArguments","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_available_regions":{"post":{"operationId":"list_available_regions","summary":"List regions where a new Supabase project can be created for an organization, with recommended and all choices and their","description":"List regions where a new Supabase project can be created for an organization, with recommended and all choices and their capacity status. Use for \"Which regions can I create a new Supabase project in\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_slug":{"description":"Organization slug the project would belong to.","maxLength":64,"title":"Organization Slug","type":"string"},"continent":{"anyOf":[{"enum":["NA","SA","EU","AF","AS","OC","AN"],"type":"string"},{"type":"null"}],"default":null,"description":"Only regions on this continent: NA, SA, EU, AF, AS, OC or AN.","title":"Continent"},"desired_instance_size":{"anyOf":[{"enum":["nano","micro","small","medium","large","xlarge","2xlarge","4xlarge","8xlarge","12xlarge","16xlarge","24xlarge","48xlarge"],"type":"string"},{"type":"null"}],"default":null,"description":"Only regions offering this compute size.","title":"Desired Instance Size"}},"required":["organization_slug"],"title":"list_available_regionsArguments","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_addons":{"post":{"operationId":"list_project_addons","summary":"List a project's selected billing add-ons (compute size, PITR, custom domain, IPv4, MFA) and the add-ons and variants it","description":"List a project's selected billing add-ons (compute size, PITR, custom domain, IPv4, MFA) and the add-ons and variants it could switch to. Use for \"Which add-ons does my Supabase project use and what compute size is it on\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ref":{"description":"Supabase project reference: the 20-character id in the project URL (for example 'abcdefghijklmnopqrst'), as returned by the project list.","maxLength":40,"title":"Ref","type":"string"}},"required":["ref"],"title":"list_project_addonsArguments","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_upgrade_status":{"post":{"operationId":"get_upgrade_status","summary":"Get the status of the project's latest Postgres major version upgrade: target version, progress step, error and timestam","description":"Get the status of the project's latest Postgres major version upgrade: target version, progress step, error and timestamps. Use for \"Is my Supabase Postgres upgrade finished\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ref":{"description":"Supabase project reference: the 20-character id in the project URL (for example 'abcdefghijklmnopqrst'), as returned by the project list.","maxLength":40,"title":"Ref","type":"string"},"tracking_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Tracking id of a specific upgrade run.","title":"Tracking Id"}},"required":["ref"],"title":"get_upgrade_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}},"/v1/tools/list_restore_versions":{"post":{"operationId":"list_restore_versions","summary":"List the Postgres versions the project could be restored to, with release channel and engine. Use for \"Which Postgres ve","description":"List the Postgres versions the project could be restored to, with release channel and engine. Use for \"Which Postgres versions can my Supabase project be restored onto\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ref":{"description":"Supabase project reference: the 20-character id in the project URL (for example 'abcdefghijklmnopqrst'), as returned by the project list.","maxLength":40,"title":"Ref","type":"string"}},"required":["ref"],"title":"list_restore_versionsArguments","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_restore_point":{"post":{"operationId":"get_restore_point","summary":"Get a named restore point of a project: status and completion time. Use for \"Is my Supabase restore point ready\".","description":"Get a named restore point of a project: status and completion time. Use for \"Is my Supabase restore point ready\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ref":{"description":"Supabase project reference: the 20-character id in the project URL (for example 'abcdefghijklmnopqrst'), as returned by the project list.","maxLength":40,"title":"Ref","type":"string"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Restore point name; the default point is used when empty.","title":"Name"}},"required":["ref"],"title":"get_restore_pointArguments","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_function":{"post":{"operationId":"get_function","summary":"Get one Edge Function by slug: status, version, JWT verification flag, entrypoint and timestamps. Use for \"Is my Supabas","description":"Get one Edge Function by slug: status, version, JWT verification flag, entrypoint and timestamps. Use for \"Is my Supabase edge function hello active and when was it last updated\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ref":{"description":"Supabase project reference: the 20-character id in the project URL (for example 'abcdefghijklmnopqrst'), as returned by the project list.","maxLength":40,"title":"Ref","type":"string"},"function_slug":{"description":"Function slug, as returned by the Supabase connector's list_functions.","maxLength":100,"title":"Function Slug","type":"string"}},"required":["ref","function_slug"],"title":"get_functionArguments","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_branch":{"post":{"operationId":"get_branch","summary":"Get one database branch of a project by name: Git branch, pull request number, status, data flag and preview project sta","description":"Get one database branch of a project by name: Git branch, pull request number, status, data flag and preview project status. Use for \"What is the status of my Supabase branch feature-x\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ref":{"description":"Supabase project reference: the 20-character id in the project URL (for example 'abcdefghijklmnopqrst'), as returned by the project list.","maxLength":40,"title":"Ref","type":"string"},"name":{"description":"Branch name, as returned by the Supabase connector's list_branches.","maxLength":100,"title":"Name","type":"string"}},"required":["ref","name"],"title":"get_branchArguments","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_performance_advisors":{"post":{"operationId":"get_performance_advisors","summary":"List performance findings for a project (for example unindexed foreign keys, unused indexes) with level, title, remediat","description":"List performance findings for a project (for example unindexed foreign keys, unused indexes) with level, title, remediation link and the affected object. Use for \"Does my Supabase project have performance warnings\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"ref":{"description":"Supabase project reference: the 20-character id in the project URL (for example 'abcdefghijklmnopqrst'), as returned by the project list.","maxLength":40,"title":"Ref","type":"string"}},"required":["ref"],"title":"get_performance_advisorsArguments","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}}}}