{"openapi":"3.1.0","info":{"title":"Sauce Labs (BYOK) API","version":"0.1.0","description":"Sauce Labs (BYOK) lets an AI assistant read your own Sauce Labs data through the Sauce Labs API with a key you supply (Sauce Labs username). Read-only: 11 tools (get_platform_status, list_supported_platforms, list_real_devices, get_real_device, get_real_device_status, list_real_device_jobs, get_real_device_job, list_builds, list_virtual_jobs, get_virtual_job, get_org_concurrency). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-saucelabs.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-saucelabs/docs"},"termsOfService":"https://connectorbay.com/byok-saucelabs/terms"},"servers":[{"url":"https://byok-saucelabs.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-saucelabs/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_platform_status":{"post":{"operationId":"get_platform_status","summary":"Show whether the Sauce Labs platform is operational, with the current wait time and a status message. Use for \"Is Sauce ","description":"Show whether the Sauce Labs platform is operational, with the current wait time and a status message. Use for \"Is Sauce Labs up right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_platform_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_supported_platforms":{"post":{"operationId":"list_supported_platforms","summary":"List the operating system, browser and simulator or emulator combinations Sauce Labs supports for a framework. Use for \"","description":"List the operating system, browser and simulator or emulator combinations Sauce Labs supports for a framework. Use for \"Which iOS simulators does Sauce Labs support for Appium\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"automation_api":{"description":"Framework: all, appium or webdriver.","enum":["all","appium","webdriver"],"title":"Automation Api","type":"string"}},"required":["automation_api"],"title":"list_supported_platformsArguments","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_real_devices":{"post":{"operationId":"list_real_devices","summary":"List the real devices in the data center with OS, version, manufacturer, model, screen size and memory. Uses the US West","description":"List the real devices in the data center with OS, version, manufacturer, model, screen size and memory. Uses the US West data center (api.us-west-1.saucelabs.com); accounts in other regions are not supported. Use for \"Which Android real devices does Sauce Labs offer\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_real_devicesArguments","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_real_device":{"post":{"operationId":"get_real_device","summary":"Get the full descriptor of one real device by id: OS, CPU, resolution, memory and which test features it supports. Uses ","description":"Get the full descriptor of one real device by id: OS, CPU, resolution, memory and which test features it supports. Uses the US West data center (api.us-west-1.saucelabs.com); accounts in other regions are not supported. Use for \"Describe the Sauce Labs device iPad_Pro_11_14_2018_real\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"device_id":{"description":"Device id from list_real_devices, for example 'iPad_Pro_11_14_2018_real'.","maxLength":200,"title":"Device Id","type":"string"}},"required":["device_id"],"title":"get_real_deviceArguments","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_real_device_status":{"post":{"operationId":"get_real_device_status","summary":"List the real devices with their current state (available, in use, cleaning, maintenance, offline) and whether they are ","description":"List the real devices with their current state (available, in use, cleaning, maintenance, offline) and whether they are private. Use for \"Which Sauce Labs real devices are free right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_real_device_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_real_device_jobs":{"post":{"operationId":"list_real_device_jobs","summary":"List jobs running or recently run on real devices, newest first, with device, OS, status and timing; page with offset an","description":"List jobs running or recently run on real devices, newest first, with device, OS, status and timing; page with offset and limit. Use for \"What tests ran on Sauce Labs real devices recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Maximum number of jobs to return.","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":1,"description":"Index to start from (default 1).","title":"Offset"},"type":{"anyOf":[{"const":"LIVE","type":"string"},{"type":"null"}],"default":null,"description":"Set to LIVE to show manual tests only.","title":"Type"}},"title":"list_real_device_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_real_device_job":{"post":{"operationId":"get_real_device_job","summary":"Get one real-device job: status, device, OS, app name and version, tags, timing and whether it passed. Use for \"How did ","description":"Get one real-device job: status, device, OS, app name and version, tags, timing and whether it passed. Use for \"How did Sauce Labs real device job 293d84fb2f634ff29a750c3f8eaee592 end\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"job_id":{"description":"Real device job id from list_real_device_jobs.","maxLength":200,"title":"Job Id","type":"string"}},"required":["job_id"],"title":"get_real_device_jobArguments","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_builds":{"post":{"operationId":"list_builds","summary":"List test builds for real devices (rdc) or emulators and simulators (vdc) with status, job counts and timing; filter by ","description":"List test builds for real devices (rdc) or emulators and simulators (vdc) with status, job counts and timing; filter by status or name. Uses the US West data center (api.us-west-1.saucelabs.com); accounts in other regions are not supported. Use for \"Which Sauce Labs emulator builds failed this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"build_source":{"description":"rdc for real device builds or vdc for emulator and simulator builds.","enum":["rdc","vdc"],"title":"Build Source","type":"string"},"status":{"anyOf":[{"enum":["running","error","failed","complete","success"],"type":"string"},{"type":"null"}],"default":null,"description":"Only builds with this status.","title":"Status"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only builds with this exact name.","title":"Name"},"start":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only builds whose earliest job ran on or after this Unix timestamp.","title":"Start"},"end":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only builds whose latest job ran on or before this Unix timestamp.","title":"End"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Maximum number of builds to return.","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Index to start from.","title":"Offset"},"sort":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort direction: asc or desc.","title":"Sort"}},"required":["build_source"],"title":"list_buildsArguments","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_virtual_jobs":{"post":{"operationId":"list_virtual_jobs","summary":"List recent jobs of a user on virtual devices, browsers, emulators and simulators, with status and timing. Use for \"What","description":"List recent jobs of a user on virtual devices, browsers, emulators and simulators, with status and timing. Use for \"What did jsmith run on Sauce Labs virtual devices last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"username":{"description":"Sauce Labs username whose jobs to read, for example 'jsmith'.","maxLength":200,"title":"Username","type":"string"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"Maximum number of jobs to return.","title":"Limit"},"skip":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Skip this many jobs from the start.","title":"Skip"},"from_time":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only jobs that ran on or after this Unix timestamp.","title":"From Time"},"to_time":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only jobs that ran on or before this Unix timestamp.","title":"To Time"}},"required":["username"],"title":"list_virtual_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_virtual_job":{"post":{"operationId":"get_virtual_job","summary":"Get one virtual-device job: name, status, OS, browser, build, tags, pass result and timing. Use for \"How did Sauce Labs ","description":"Get one virtual-device job: name, status, OS, browser, build, tags, pass result and timing. Use for \"How did Sauce Labs job eed5eb4999d840f89f67f8b6d60a2da3 end\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"username":{"description":"Sauce Labs username whose jobs to read, for example 'jsmith'.","maxLength":200,"title":"Username","type":"string"},"job_id":{"description":"Job id from list_virtual_jobs.","maxLength":200,"title":"Job Id","type":"string"}},"required":["username","job_id"],"title":"get_virtual_jobArguments","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_org_concurrency":{"post":{"operationId":"get_org_concurrency","summary":"Show concurrency usage of an organization (maximum, minimum, team share and limits) per resource type over a period. Use","description":"Show concurrency usage of an organization (maximum, minimum, team share and limits) per resource type over a period. Use for \"How close did we get to our Sauce Labs concurrency limit this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_id":{"description":"Sauce Labs organization id.","maxLength":200,"title":"Org Id","type":"string"},"source":{"anyOf":[{"enum":["rdc","vdc"],"type":"string"},{"type":"null"}],"default":null,"description":"Test cloud: rdc for real devices or vdc for virtual devices (default vdc).","title":"Source"},"granularity":{"anyOf":[{"enum":["hourly","daily","weekly","monthly"],"type":"string"},{"type":"null"}],"default":null,"description":"Grouping: hourly, daily, weekly or monthly (default daily).","title":"Granularity"},"resource_type":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only this resource type, for example total_virtual_machine or total_real_device.","title":"Resource Type"},"start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Period start in UTC, format YYYY-MM-DDTHH:mm:ssZ.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Period end in UTC, format YYYY-MM-DDTHH:mm:ssZ.","title":"End Date"}},"required":["org_id"],"title":"get_org_concurrencyArguments","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}}}}