{"openapi":"3.1.0","info":{"title":"SaladCloud (BYOK) API","version":"0.1.0","description":"SaladCloud (BYOK) lets an AI assistant read your own SaladCloud data through the SaladCloud API with a key you supply (SaladCloud API key). Read-only: 9 tools (list_container_groups, get_container_group, list_container_group_instances, list_queues, list_queue_jobs, get_quotas, list_gpu_classes, list_inference_endpoints, get_inference_endpoint). 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-salad.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-salad/docs"},"termsOfService":"https://connectorbay.com/byok-salad/terms"},"servers":[{"url":"https://byok-salad.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-salad/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_container_groups":{"post":{"operationId":"list_container_groups","summary":"List the container groups in a project with image, status, replica count, resources and creation time. Environment varia","description":"List the container groups in a project with image, status, replica count, resources and creation time. Environment variables and logging credentials are not returned. Use for \"What container groups are running in my SaladCloud project\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_name":{"description":"SaladCloud organization name (the short name shown in the portal URL).","maxLength":200,"title":"Organization Name","type":"string"},"project_name":{"description":"Project name inside the organization.","maxLength":200,"title":"Project Name","type":"string"}},"required":["organization_name","project_name"],"title":"list_container_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}},"/v1/tools/get_container_group":{"post":{"operationId":"get_container_group","summary":"Get one container group: image, resources (CPU, memory, GPU classes), replicas, state, networking and autoscaler setting","description":"Get one container group: image, resources (CPU, memory, GPU classes), replicas, state, networking and autoscaler settings. Environment variables are not returned. Use for \"What is the state of container group image-worker in project inference\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_name":{"description":"SaladCloud organization name (the short name shown in the portal URL).","maxLength":200,"title":"Organization Name","type":"string"},"project_name":{"description":"Project name inside the organization.","maxLength":200,"title":"Project Name","type":"string"},"container_group_name":{"description":"Container group name within the project.","maxLength":200,"title":"Container Group Name","type":"string"}},"required":["organization_name","project_name","container_group_name"],"title":"get_container_groupArguments","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_container_group_instances":{"post":{"operationId":"list_container_group_instances","summary":"List the running instances of a container group with state, readiness, CPU and memory usage and last update time. Use fo","description":"List the running instances of a container group with state, readiness, CPU and memory usage and last update time. Use for \"How are the instances of container group image-worker doing\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_name":{"description":"SaladCloud organization name (the short name shown in the portal URL).","maxLength":200,"title":"Organization Name","type":"string"},"project_name":{"description":"Project name inside the organization.","maxLength":200,"title":"Project Name","type":"string"},"container_group_name":{"description":"Container group name within the project.","maxLength":200,"title":"Container Group Name","type":"string"}},"required":["organization_name","project_name","container_group_name"],"title":"list_container_group_instancesArguments","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_queues":{"post":{"operationId":"list_queues","summary":"List the job queues of a project with description, current queue length and the container groups serving them. Use for \"","description":"List the job queues of a project with description, current queue length and the container groups serving them. Use for \"How long are my SaladCloud job queues\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_name":{"description":"SaladCloud organization name (the short name shown in the portal URL).","maxLength":200,"title":"Organization Name","type":"string"},"project_name":{"description":"Project name inside the organization.","maxLength":200,"title":"Project Name","type":"string"}},"required":["organization_name","project_name"],"title":"list_queuesArguments","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_queue_jobs":{"post":{"operationId":"list_queue_jobs","summary":"List jobs in a queue with status and timestamps (job input and output payloads are not returned), 1 to 100 per page. Use","description":"List jobs in a queue with status and timestamps (job input and output payloads are not returned), 1 to 100 per page. Use for \"Which jobs in queue render-jobs have failed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_name":{"description":"SaladCloud organization name (the short name shown in the portal URL).","maxLength":200,"title":"Organization Name","type":"string"},"project_name":{"description":"Project name inside the organization.","maxLength":200,"title":"Project Name","type":"string"},"queue_name":{"description":"Job queue name within the project.","maxLength":200,"title":"Queue Name","type":"string"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 100).","title":"Page Size"}},"required":["organization_name","project_name","queue_name"],"title":"list_queue_jobsArguments","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_quotas":{"post":{"operationId":"get_quotas","summary":"Show the organization's container group quotas: replica quota and replicas used, plus per-minute limits for reallocation","description":"Show the organization's container group quotas: replica quota and replicas used, plus per-minute limits for reallocations, recreates and restarts. Use for \"How many container replicas can my SaladCloud organization still run\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_name":{"description":"SaladCloud organization name (the short name shown in the portal URL).","maxLength":200,"title":"Organization Name","type":"string"}},"required":["organization_name"],"title":"get_quotasArguments","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_gpu_classes":{"post":{"operationId":"list_gpu_classes","summary":"List the GPU classes available to the organization with class type (community or secure), CPU and RAM ranges, demand fla","description":"List the GPU classes available to the organization with class type (community or secure), CPU and RAM ranges, demand flag and prices. Use for \"Which GPU classes can I use on SaladCloud and what do they cost\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_name":{"description":"SaladCloud organization name (the short name shown in the portal URL).","maxLength":200,"title":"Organization Name","type":"string"}},"required":["organization_name"],"title":"list_gpu_classesArguments","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_inference_endpoints":{"post":{"operationId":"list_inference_endpoints","summary":"List the managed inference endpoints visible to the organization with name, description and price description, 1 to 100 ","description":"List the managed inference endpoints visible to the organization with name, description and price description, 1 to 100 per page. Use for \"What inference endpoints does SaladCloud offer\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_name":{"description":"SaladCloud organization name (the short name shown in the portal URL).","maxLength":200,"title":"Organization Name","type":"string"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (1 to 100).","title":"Page Size"}},"required":["organization_name"],"title":"list_inference_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/get_inference_endpoint":{"post":{"operationId":"get_inference_endpoint","summary":"Get one inference endpoint with description, price description, README and input and output schemas. Use for \"What input","description":"Get one inference endpoint with description, price description, README and input and output schemas. Use for \"What input does the transcribe inference endpoint on SaladCloud take\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"organization_name":{"description":"SaladCloud organization name (the short name shown in the portal URL).","maxLength":200,"title":"Organization Name","type":"string"},"inference_endpoint_name":{"description":"Inference endpoint name, taken from list_inference_endpoints.","maxLength":200,"title":"Inference Endpoint Name","type":"string"}},"required":["organization_name","inference_endpoint_name"],"title":"get_inference_endpointArguments","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}}}}