{"openapi":"3.1.0","info":{"title":"mabl (BYOK) API","version":"0.1.0","description":"mabl (BYOK) lets an AI assistant read your own mabl data through the mabl API with a key you supply (mabl API key (a Viewer key is enough)). Read-only: 10 tools (list_applications, get_application, list_environments, list_test_runs, get_test_run, get_plan_run, list_deployment_events, list_issues, get_test_metadata, list_link_agents). 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-mabl.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-mabl/docs"},"termsOfService":"https://connectorbay.com/byok-mabl/terms"},"servers":[{"url":"https://byok-mabl.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-mabl/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_applications":{"post":{"operationId":"list_applications","summary":"List the applications in a mabl workspace with name, description and creation and update times. Use for \"Which applicati","description":"List the applications in a mabl workspace with name, description and creation and update times. Use for \"Which applications are set up in my mabl workspace\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"mabl workspace ID.","maxLength":60,"title":"Workspace Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Page size.","title":"Limit"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response.","title":"Cursor"}},"required":["workspace_id"],"title":"list_applicationsArguments","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_application":{"post":{"operationId":"get_application","summary":"Get one mabl application by id. Use for \"Show mabl application app-1\".","description":"Get one mabl application by id. Use for \"Show mabl application app-1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"application_id":{"description":"Application ID.","maxLength":80,"title":"Application Id","type":"string"}},"required":["application_id"],"title":"get_applicationArguments","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 in a mabl workspace with name, description, page load wait and Link Agent usage (environment varia","description":"List the environments in a mabl workspace with name, description, page load wait and Link Agent usage (environment variables are not returned). Use for \"Which environments does my mabl workspace have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"mabl workspace ID.","maxLength":60,"title":"Workspace Id","type":"string"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Page size.","title":"Limit"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response.","title":"Cursor"}},"required":["workspace_id"],"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/list_test_runs":{"post":{"operationId":"list_test_runs","summary":"List test run summaries over a time range with outcome, status, browser, environment, branch and duration, plus run coun","description":"List test run summaries over a time range with outcome, status, browser, environment, branch and duration, plus run counts. Use for \"Which mabl tests failed in the last day\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"mabl workspace ID.","maxLength":60,"title":"Workspace Id","type":"string"},"application_id":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only runs for this application ID.","title":"Application Id"},"environment_id":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only runs in this environment ID.","title":"Environment Id"},"test_id":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only runs of this test ID.","title":"Test Id"},"plan_id":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only runs from this plan ID.","title":"Plan Id"},"earliest_run_start_time":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Earliest run start time, epoch milliseconds.","title":"Earliest Run Start Time"},"latest_run_start_time":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Latest run start time, epoch milliseconds (defaults to now).","title":"Latest Run Start Time"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Maximum runs to return.","title":"Limit"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response.","title":"Cursor"}},"required":["workspace_id"],"title":"list_test_runsArguments","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_test_run":{"post":{"operationId":"get_test_run","summary":"Get one test run summary: outcome, status, browser, environment, trigger, duration and failure summary. Use for \"What ha","description":"Get one test run summary: outcome, status, browser, environment, trigger, duration and failure summary. Use for \"What happened in mabl test run tr-1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"test_run_id":{"description":"Test run ID.","maxLength":80,"title":"Test Run Id","type":"string"}},"required":["test_run_id"],"title":"get_test_runArguments","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_plan_run":{"post":{"operationId":"get_plan_run","summary":"Get one plan run summary: plan name, success flag, labels, application and environment. Use for \"What happened in mabl p","description":"Get one plan run summary: plan name, success flag, labels, application and environment. Use for \"What happened in mabl plan run pr-1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"plan_run_id":{"description":"Plan run ID.","maxLength":80,"title":"Plan Run Id","type":"string"}},"required":["plan_run_id"],"title":"get_plan_runArguments","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_deployment_events":{"post":{"operationId":"list_deployment_events","summary":"List deployment events with application, environment, branch, revision and event time. Use for \"Which deployments did ma","description":"List deployment events with application, environment, branch, revision and event time. Use for \"Which deployments did mabl run tests for recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only events in this workspace ID.","title":"Workspace Id"},"environment_id":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only events for this environment ID.","title":"Environment Id"},"start_time":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Start of the range, epoch milliseconds.","title":"Start Time"},"end_time":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"End of the range, epoch milliseconds.","title":"End Time"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Page size.","title":"Limit"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response.","title":"Cursor"},"include_test_executions":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"Include run results (slower). Leave false for a quick list.","title":"Include Test Executions"}},"title":"list_deployment_eventsArguments","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_issues":{"post":{"operationId":"list_issues","summary":"List issues linked to mabl tests and runs in a workspace, with open status and tracker link. Use for \"Which mabl issues ","description":"List issues linked to mabl tests and runs in a workspace, with open status and tracker link. Use for \"Which mabl issues are open\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"mabl workspace ID.","maxLength":60,"title":"Workspace Id","type":"string"},"open":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Only open (true) or closed (false) issues.","title":"Open"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Page size.","title":"Limit"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response.","title":"Cursor"}},"required":["workspace_id"],"title":"list_issuesArguments","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_test_metadata":{"post":{"operationId":"get_test_metadata","summary":"Get one test's metadata: name, type, enabled flag, labels, data tables and times. Use for \"Show details of mabl test t-1","description":"Get one test's metadata: name, type, enabled flag, labels, data tables and times. Use for \"Show details of mabl test t-1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"test_id":{"description":"Test ID.","maxLength":80,"title":"Test Id","type":"string"}},"required":["test_id"],"title":"get_test_metadataArguments","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_link_agents":{"post":{"operationId":"list_link_agents","summary":"List mabl Link Agents in a workspace with label, host name, version, connection state and last heartbeat. Use for \"Are m","description":"List mabl Link Agents in a workspace with label, host name, version, connection state and last heartbeat. Use for \"Are my mabl Link Agents connected\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace_id":{"description":"mabl workspace ID.","maxLength":60,"title":"Workspace Id","type":"string"},"label":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only agents with this label.","title":"Label"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Page size.","title":"Limit"},"cursor":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Pagination cursor from a previous response.","title":"Cursor"}},"required":["workspace_id"],"title":"list_link_agentsArguments","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}}}}