{"openapi":"3.1.0","info":{"title":"Zuplo Platform (BYOK) API","version":"0.1.0","description":"Zuplo Platform (BYOK) lets an AI assistant read your own Zuplo Platform data through the Zuplo Platform API with a key you supply (Zuplo account API key). Read-only: 12 tools (list_accounts, list_projects, list_environments, get_environment, list_deployments, get_deployment, get_deployment_status, list_custom_domains, list_tunnels, get_tunnel_services_configuration,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-zuplo-platform.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-zuplo-platform/docs"},"termsOfService":"https://connectorbay.com/byok-zuplo-platform/terms"},"servers":[{"url":"https://byok-zuplo-platform.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-zuplo-platform/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_accounts":{"post":{"operationId":"list_accounts","summary":"List the Zuplo accounts the key can access with their names and labels. Use for \"Which Zuplo accounts can this API key s","description":"List the Zuplo accounts the key can access with their names and labels. Use for \"Which Zuplo accounts can this API key see\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_accountsArguments","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_projects":{"post":{"operationId":"list_projects","summary":"List Zuplo projects, optionally of one account. Use for \"Which Zuplo projects do we have\".","description":"List Zuplo projects, optionally of one account. Use for \"Which Zuplo projects do we have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only projects of this account name.","title":"Account Name"}},"title":"list_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/list_environments":{"post":{"operationId":"list_environments","summary":"List the environments (branch deployments) of one Zuplo project with branch and environment type. Use for \"Which environ","description":"List the environments (branch deployments) of one Zuplo project with branch and environment type. Use for \"Which environments does the orders-gateway Zuplo project have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"description":"Account name that owns the project.","maxLength":100,"title":"Account Name","type":"string"},"project_name":{"description":"Project name.","maxLength":100,"title":"Project Name","type":"string"}},"required":["account_name","project_name"],"title":"list_environmentsArguments","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_environment":{"post":{"operationId":"get_environment","summary":"Get one Zuplo environment by name: project, branch, type and creation time. Use for \"Which branch is Zuplo environment o","description":"Get one Zuplo environment by name: project, branch, type and creation time. Use for \"Which branch is Zuplo environment orders-gateway-main-1a2b3c4 built from\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"environment_name":{"description":"Environment name from list_environments.","maxLength":150,"title":"Environment Name","type":"string"}},"required":["environment_name"],"title":"get_environmentArguments","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_deployments":{"post":{"operationId":"list_deployments","summary":"List the deployments of a Zuplo project with URL, state, branch, environment type and timestamps. Use for \"What are the ","description":"List the deployments of a Zuplo project with URL, state, branch, environment type and timestamps. Use for \"What are the latest Zuplo deployments of orders-gateway and did they succeed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"description":"Zuplo account name (as shown in the portal URL) from list_accounts.","maxLength":100,"title":"Account Name","type":"string"},"project_name":{"description":"Zuplo project name from list_projects.","maxLength":100,"title":"Project Name","type":"string"}},"required":["account_name","project_name"],"title":"list_deploymentsArguments","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_deployment":{"post":{"operationId":"get_deployment","summary":"Get one Zuplo deployment: URL, state, status message, branch and environment type. Use for \"Is Zuplo deployment orders-g","description":"Get one Zuplo deployment: URL, state, status message, branch and environment type. Use for \"Is Zuplo deployment orders-gateway-main-1a2b3c4 live\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"deployment_name":{"description":"Deployment (environment) name from list_deployments or list_environments, for example 'orders-gateway-main-1a2b3c4'.","maxLength":150,"title":"Deployment Name","type":"string"}},"required":["deployment_name"],"title":"get_deploymentArguments","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_deployment_status":{"post":{"operationId":"get_deployment_status","summary":"Get the progress of a Zuplo deployment build by its status id: overall status, URL and per-step state. Use for \"How far ","description":"Get the progress of a Zuplo deployment build by its status id: overall status, URL and per-step state. Use for \"How far along is Zuplo deployment status 7f3c1a\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"description":"Zuplo account name (as shown in the portal URL) from list_accounts.","maxLength":100,"title":"Account Name","type":"string"},"project_name":{"description":"Zuplo project name from list_projects.","maxLength":100,"title":"Project Name","type":"string"},"status_id":{"description":"Deployment status id returned when a deployment was created.","maxLength":100,"title":"Status Id","type":"string"}},"required":["account_name","project_name","status_id"],"title":"get_deployment_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_custom_domains":{"post":{"operationId":"list_custom_domains","summary":"List the custom domains of a Zuplo account with the project, hostname and deployments they serve. Use for \"Which custom ","description":"List the custom domains of a Zuplo account with the project, hostname and deployments they serve. Use for \"Which custom domains point at our Zuplo gateways\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"description":"Zuplo account name (as shown in the portal URL) from list_accounts.","maxLength":100,"title":"Account Name","type":"string"}},"required":["account_name"],"title":"list_custom_domainsArguments","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_tunnels":{"post":{"operationId":"list_tunnels","summary":"List the secure tunnels of a Zuplo account (id and name only; tunnel tokens are never requested). Use for \"Which Zuplo t","description":"List the secure tunnels of a Zuplo account (id and name only; tunnel tokens are never requested). Use for \"Which Zuplo tunnels exist in our account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"description":"Zuplo account name (as shown in the portal URL) from list_accounts.","maxLength":100,"title":"Account Name","type":"string"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return.","title":"Limit"},"offset":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many items to skip (for paging).","title":"Offset"}},"required":["account_name"],"title":"list_tunnelsArguments","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_tunnel_services_configuration":{"post":{"operationId":"get_tunnel_services_configuration","summary":"Get the services a Zuplo tunnel exposes: name, endpoint and configuration version. Use for \"Which internal services does","description":"Get the services a Zuplo tunnel exposes: name, endpoint and configuration version. Use for \"Which internal services does the Zuplo tunnel internal-orders expose\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"description":"Zuplo account name (as shown in the portal URL) from list_accounts.","maxLength":100,"title":"Account Name","type":"string"},"tunnel_id":{"description":"Tunnel id from list_tunnels.","maxLength":100,"title":"Tunnel Id","type":"string"}},"required":["account_name","tunnel_id"],"title":"get_tunnel_services_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/list_client_mtls_ca_certificates":{"post":{"operationId":"list_client_mtls_ca_certificates","summary":"List the client mTLS CA certificates registered for a Zuplo account with name and certificate summary. Use for \"Which cl","description":"List the client mTLS CA certificates registered for a Zuplo account with name and certificate summary. Use for \"Which client mTLS CA certificates are registered in Zuplo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"description":"Zuplo account name (as shown in the portal URL) from list_accounts.","maxLength":100,"title":"Account Name","type":"string"}},"required":["account_name"],"title":"list_client_mtls_ca_certificatesArguments","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_key_buckets":{"post":{"operationId":"list_key_buckets","summary":"List the API key service buckets of a Zuplo account with description, tags and whether keys are retrievable (no keys are","description":"List the API key service buckets of a Zuplo account with description, tags and whether keys are retrievable (no keys are returned). Use for \"Which API key buckets does our Zuplo account have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"description":"Zuplo account name (as shown in the portal URL) from list_accounts.","maxLength":100,"title":"Account Name","type":"string"}},"required":["account_name"],"title":"list_key_bucketsArguments","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}}}}