{"openapi":"3.1.0","info":{"title":"Turso Admin (BYOK) API","version":"0.1.0","description":"Turso Admin (BYOK) lets an AI assistant read your own Turso Admin data through the Turso Admin API with a key you supply (Platform API token). Read-only: 9 tools (list_plans, list_invoices, get_database_configuration, get_group_configuration, get_database_instance, list_api_tokens, validate_token, list_deleted_databases, list_deleted_groups). The BYOK key travels with each request, is used for...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-turso-admin.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-turso-admin/docs"},"termsOfService":"https://connectorbay.com/byok-turso-admin/terms"},"servers":[{"url":"https://byok-turso-admin.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-turso-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_plans":{"post":{"operationId":"list_plans","summary":"List the Turso plans offered to an organization with price, price timeline and quotas for rows read, rows written, datab","description":"List the Turso plans offered to an organization with price, price timeline and quotas for rows read, rows written, databases, locations, groups and storage. Use for \"What Turso plans can I choose and what are their quotas\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_slug":{"description":"Turso organization slug (for a personal account this is the username), as returned by the Turso connector's list_organizations.","maxLength":100,"title":"Organization Slug","type":"string"}},"required":["organization_slug"],"title":"list_plansArguments","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_invoices":{"post":{"operationId":"list_invoices","summary":"List an organization's Turso invoices with number, amount due, due date, payment time, failure time and PDF link. Can sh","description":"List an organization's Turso invoices with number, amount due, due date, payment time, failure time and PDF link. Can show upcoming or issued only. Use for \"What Turso invoices do I have and are any unpaid\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_slug":{"description":"Turso organization slug (for a personal account this is the username), as returned by the Turso connector's list_organizations.","maxLength":100,"title":"Organization Slug","type":"string"},"type":{"anyOf":[{"enum":["all","upcoming","issued"],"type":"string"},{"type":"null"}],"default":"all","description":"Which invoices: all, upcoming or issued.","title":"Type"}},"required":["organization_slug"],"title":"list_invoicesArguments","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_database_configuration":{"post":{"operationId":"get_database_configuration","summary":"Get a database's settings: size limit, whether reads or writes are blocked, delete protection, attach permission and the","description":"Get a database's settings: size limit, whether reads or writes are blocked, delete protection, attach permission and the IP and AWS VPC allow lists. Use for \"Is delete protection on for my Turso database and which IPs may connect\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_slug":{"description":"Turso organization slug (for a personal account this is the username), as returned by the Turso connector's list_organizations.","maxLength":100,"title":"Organization Slug","type":"string"},"database_name":{"description":"Turso database name, as returned by the Turso connector's list_databases.","maxLength":100,"title":"Database Name","type":"string"}},"required":["organization_slug","database_name"],"title":"get_database_configurationArguments","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_group_configuration":{"post":{"operationId":"get_group_configuration","summary":"Get a group's settings; currently whether delete protection is on. Use for \"Is my Turso group protected from deletion\".","description":"Get a group's settings; currently whether delete protection is on. Use for \"Is my Turso group protected from deletion\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_slug":{"description":"Turso organization slug (for a personal account this is the username), as returned by the Turso connector's list_organizations.","maxLength":100,"title":"Organization Slug","type":"string"},"group_name":{"description":"Turso group name, as returned by the Turso connector's list_groups.","maxLength":100,"title":"Group Name","type":"string"}},"required":["organization_slug","group_name"],"title":"get_group_configurationArguments","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_database_instance":{"post":{"operationId":"get_database_instance","summary":"Get one database instance (a primary or replica in one location): type, region and hostname. Use for \"Where does my Turs","description":"Get one database instance (a primary or replica in one location): type, region and hostname. Use for \"Where does my Turso database instance run\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_slug":{"description":"Turso organization slug (for a personal account this is the username), as returned by the Turso connector's list_organizations.","maxLength":100,"title":"Organization Slug","type":"string"},"database_name":{"description":"Turso database name, as returned by the Turso connector's list_databases.","maxLength":100,"title":"Database Name","type":"string"},"instance_name":{"description":"Instance name, as returned by the Turso connector's list_instances.","maxLength":100,"title":"Instance Name","type":"string"}},"required":["organization_slug","database_name","instance_name"],"title":"get_database_instanceArguments","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_tokens":{"post":{"operationId":"list_api_tokens","summary":"List the Platform API tokens of the account with name, id, organization, group, scopes and creation time. Token values a","description":"List the Platform API tokens of the account with name, id, organization, group, scopes and creation time. Token values are never returned. Use for \"Which Turso API tokens exist and what can they do\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_api_tokensArguments","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/validate_token":{"post":{"operationId":"validate_token","summary":"Check that the Platform API token in use is valid and show when it expires (Unix time). Use for \"When does my Turso API ","description":"Check that the Platform API token in use is valid and show when it expires (Unix time). Use for \"When does my Turso API token expire\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"validate_tokenArguments","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_deleted_databases":{"post":{"operationId":"list_deleted_databases","summary":"List an organization's deleted databases with name, group, regions, deletion time and delete protection flag. Use for \"W","description":"List an organization's deleted databases with name, group, regions, deletion time and delete protection flag. Use for \"Which Turso databases were deleted recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"description":"Turso organization id (UUID), as shown in the Turso dashboard or by the Turso connector's get_organization.","maxLength":100,"title":"Organization Id","type":"string"},"deleted":{"description":"Must be true to list deleted databases.","title":"Deleted","type":"boolean"},"search":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only databases whose name matches this text.","title":"Search"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many items to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor copied from pagination.next of the previous answer; leave empty for the first page.","title":"Cursor"}},"required":["organization_id","deleted"],"title":"list_deleted_databasesArguments","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_deleted_groups":{"post":{"operationId":"list_deleted_groups","summary":"List an organization's deleted groups with name, deletion time and the number of databases deleted with it. Use for \"Whi","description":"List an organization's deleted groups with name, deletion time and the number of databases deleted with it. Use for \"Which Turso groups were deleted recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_id":{"description":"Turso organization id (UUID), as shown in the Turso dashboard or by the Turso connector's get_organization.","maxLength":100,"title":"Organization Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many items to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Paging cursor copied from pagination.next of the previous answer; leave empty for the first page.","title":"Cursor"}},"required":["organization_id"],"title":"list_deleted_groupsArguments","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}}}}