{"openapi":"3.1.0","info":{"title":"Ubicloud (BYOK) API","version":"0.1.0","description":"Ubicloud (BYOK) lets an AI assistant read your own Ubicloud data through the Ubicloud API with a key you supply (personal access token). Read-only: 10 tools (get_project, list_vms, get_vm, list_postgres_databases, list_firewalls, list_private_subnets, list_load_balancers, list_kubernetes_clusters, list_machine_images, list_audit_log). The BYOK key travels with each request, is used for that one...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-ubicloud.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-ubicloud/docs"},"termsOfService":"https://connectorbay.com/byok-ubicloud/terms"},"servers":[{"url":"https://byok-ubicloud.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-ubicloud/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/get_project":{"post":{"operationId":"get_project","summary":"Get a project's id and name. Use for \"What is the name of Ubicloud project pjkkmx0f2vke4h36nk9cm8v8q0\".","description":"Get a project's id and name. Use for \"What is the name of Ubicloud project pjkkmx0f2vke4h36nk9cm8v8q0\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Project id starting with 'pj' followed by 24 characters, shown in the Ubicloud console URL and settings.","maxLength":200,"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_vms":{"post":{"operationId":"list_vms","summary":"List all VMs in a project with state, location, size, storage, boot image and IP addresses. Pages of 10 by default. Use ","description":"List all VMs in a project with state, location, size, storage, boot image and IP addresses. Pages of 10 by default. Use for \"Which Ubicloud VMs are running in my project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Project id starting with 'pj' followed by 24 characters, shown in the Ubicloud console URL and settings.","maxLength":200,"title":"Project Id","type":"string"},"start_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Page cursor: the id of the last item of the previous page.","title":"Start After"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items per page (default 10).","title":"Page Size"},"order_column":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"id","description":"Column to order by (default id).","title":"Order Column"}},"required":["project_id"],"title":"list_vmsArguments","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_vm":{"post":{"operationId":"get_vm","summary":"Get one VM by location and name or id, including private addresses, subnet, GPU and attached firewalls. Use for \"Show th","description":"Get one VM by location and name or id, including private addresses, subnet, GPU and attached firewalls. Use for \"Show the details of Ubicloud VM web-1 in eu-central-h1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Project id starting with 'pj' followed by 24 characters, shown in the Ubicloud console URL and settings.","maxLength":200,"title":"Project Id","type":"string"},"location":{"description":"Location name such as 'eu-central-h1' or 'us-east-a2', as shown in the console and in the location field of listed resources.","maxLength":200,"title":"Location","type":"string"},"vm_reference":{"description":"VM name or id.","maxLength":200,"title":"Vm Reference","type":"string"}},"required":["project_id","location","vm_reference"],"title":"get_vmArguments","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_postgres_databases":{"post":{"operationId":"list_postgres_databases","summary":"List managed PostgreSQL databases with state, location, version, VM size, storage, HA type, replica flag and tags. Optio","description":"List managed PostgreSQL databases with state, location, version, VM size, storage, HA type, replica flag and tags. Optionally filter by tags. Use for \"Which PostgreSQL databases do I have on Ubicloud and what version are they\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Project id starting with 'pj' followed by 24 characters, shown in the Ubicloud console URL and settings.","maxLength":200,"title":"Project Id","type":"string"},"tags":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only databases with these tags, as key:value pairs separated by commas, for example 'environment:production,team:backend'.","title":"Tags"},"start_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Page cursor: the id of the last item of the previous page.","title":"Start After"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items per page (default 10).","title":"Page Size"},"order_column":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"id","description":"Column to order by (default id).","title":"Order Column"}},"required":["project_id"],"title":"list_postgres_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_firewalls":{"post":{"operationId":"list_firewalls","summary":"List firewalls with description, location and their rules (CIDR, port range, protocol). Use for \"What firewall rules are","description":"List firewalls with description, location and their rules (CIDR, port range, protocol). Use for \"What firewall rules are set in my Ubicloud project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Project id starting with 'pj' followed by 24 characters, shown in the Ubicloud console URL and settings.","maxLength":200,"title":"Project Id","type":"string"}},"required":["project_id"],"title":"list_firewallsArguments","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_private_subnets":{"post":{"operationId":"list_private_subnets","summary":"List private subnets with state, location, IPv4 and IPv6 ranges, attached network interfaces and firewalls. Use for \"Whi","description":"List private subnets with state, location, IPv4 and IPv6 ranges, attached network interfaces and firewalls. Use for \"Which private subnets exist in my Ubicloud project and what VMs are in them\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Project id starting with 'pj' followed by 24 characters, shown in the Ubicloud console URL and settings.","maxLength":200,"title":"Project Id","type":"string"},"start_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Page cursor: the id of the last item of the previous page.","title":"Start After"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items per page (default 10).","title":"Page Size"},"order_column":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"id","description":"Column to order by (default id).","title":"Order Column"}},"required":["project_id"],"title":"list_private_subnetsArguments","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_load_balancers":{"post":{"operationId":"list_load_balancers","summary":"List load balancers with hostname, algorithm, ports, health check settings and certificate flag. Use for \"What load bala","description":"List load balancers with hostname, algorithm, ports, health check settings and certificate flag. Use for \"What load balancers do I have on Ubicloud\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Project id starting with 'pj' followed by 24 characters, shown in the Ubicloud console URL and settings.","maxLength":200,"title":"Project Id","type":"string"},"start_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Page cursor: the id of the last item of the previous page.","title":"Start After"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items per page (default 10).","title":"Page Size"},"order_column":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"id","description":"Column to order by (default id).","title":"Order Column"}},"required":["project_id"],"title":"list_load_balancersArguments","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_kubernetes_clusters":{"post":{"operationId":"list_kubernetes_clusters","summary":"List Kubernetes clusters with version, display state, control plane node count, node size and node pools. The kubeconfig","description":"List Kubernetes clusters with version, display state, control plane node count, node size and node pools. The kubeconfig is not returned. Use for \"Which Kubernetes clusters run on Ubicloud and in what state\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Project id starting with 'pj' followed by 24 characters, shown in the Ubicloud console URL and settings.","maxLength":200,"title":"Project Id","type":"string"},"start_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Page cursor: the id of the last item of the previous page.","title":"Start After"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items per page (default 10).","title":"Page Size"},"order_column":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"id","description":"Column to order by (default id).","title":"Order Column"}},"required":["project_id"],"title":"list_kubernetes_clustersArguments","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_machine_images":{"post":{"operationId":"list_machine_images","summary":"List custom machine images with location, architecture, latest version and creation time. Use for \"Which custom machine ","description":"List custom machine images with location, architecture, latest version and creation time. Use for \"Which custom machine images do I have on Ubicloud\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Project id starting with 'pj' followed by 24 characters, shown in the Ubicloud console URL and settings.","maxLength":200,"title":"Project Id","type":"string"},"start_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Page cursor: the id of the last item of the previous page.","title":"Start After"},"page_size":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items per page (default 10).","title":"Page Size"},"order_column":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"id","description":"Column to order by (default id).","title":"Order Column"}},"required":["project_id"],"title":"list_machine_imagesArguments","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_audit_log":{"post":{"operationId":"list_audit_log","summary":"Search the project audit log: when, which action, which account id and which object ids. Returns up to 1000 entries per ","description":"Search the project audit log: when, which action, which account id and which object ids. Returns up to 1000 entries per call and a pagination_key for the next page. Use for \"What changed in my Ubicloud project recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"project_id":{"description":"Project id starting with 'pj' followed by 24 characters, shown in the Ubicloud console URL and settings.","maxLength":200,"title":"Project Id","type":"string"},"action":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only entries with this action type, for example 'vm.create'.","title":"Action"},"object":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only entries for this object id.","title":"Object"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many records to return (1 to 1000).","title":"Limit"},"pagination_key":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Key from the previous answer to fetch the next page.","title":"Pagination Key"}},"required":["project_id"],"title":"list_audit_logArguments","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}}}}