{"openapi":"3.1.0","info":{"title":"Bitbucket Commit Checks (BYOK) API","version":"0.1.0","description":"Bitbucket Commit Checks (BYOK) lets an AI assistant read your own Bitbucket Commit Checks data through the Bitbucket Commit Checks API with a key you supply (Atlassian API token with Bitbucket read scopes (repository and pull request)). Read-only: 10 tools (get_commit, list_commit_statuses, list_commit_reports, get_commit_report, list_report_annotations, list_commit_pull_requests, get_diffstat,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-bitbucket-commit-checks.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-bitbucket-commit-checks/docs"},"termsOfService":"https://connectorbay.com/byok-bitbucket-commit-checks/terms"},"servers":[{"url":"https://byok-bitbucket-commit-checks.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-bitbucket-commit-checks/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_commit":{"post":{"operationId":"get_commit","summary":"Get one commit: hash, date, message, author name and parent hashes. Use for \"Show commit 3a8b42f of myteam/my-repo\".","description":"Get one commit: hash, date, message, author name and parent hashes. Use for \"Show commit 3a8b42f of myteam/my-repo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Workspace slug (the first part of repository URLs on bitbucket.org), for example 'myteam'.","maxLength":200,"title":"Workspace","type":"string"},"repo_slug":{"description":"Repository slug, for example 'my-repo'.","maxLength":200,"title":"Repo Slug","type":"string"},"commit":{"description":"Full commit hash (SHA1), for example '3a8b42f1c9d0e7a4b6c5d4e3f2a1b0c9d8e7f6a5'.","maxLength":64,"title":"Commit","type":"string"}},"required":["workspace","repo_slug","commit"],"title":"get_commitArguments","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_commit_statuses":{"post":{"operationId":"list_commit_statuses","summary":"List the build statuses reported on a commit by CI systems: name, state (SUCCESSFUL, FAILED, INPROGRESS, STOPPED), branc","description":"List the build statuses reported on a commit by CI systems: name, state (SUCCESSFUL, FAILED, INPROGRESS, STOPPED), branch, link and times. Use for \"Did the CI builds for commit 3a8b42f pass\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Workspace slug (the first part of repository URLs on bitbucket.org), for example 'myteam'.","maxLength":200,"title":"Workspace","type":"string"},"repo_slug":{"description":"Repository slug, for example 'my-repo'.","maxLength":200,"title":"Repo Slug","type":"string"},"commit":{"description":"Full commit hash (SHA1), for example '3a8b42f1c9d0e7a4b6c5d4e3f2a1b0c9d8e7f6a5'.","maxLength":64,"title":"Commit","type":"string"},"refname":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only statuses created without a branch or for this branch name.","title":"Refname"},"q":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Bitbucket query filter, for example 'state=\"FAILED\"' (see the Bitbucket filtering docs); leave out for no filter.","title":"Q"},"pagelen":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results per page (1 to 100, default 25).","title":"Pagelen"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. The answer's next field holds the link to the following page when there is one.","title":"Page"}},"required":["workspace","repo_slug","commit"],"title":"list_commit_statusesArguments","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_commit_reports":{"post":{"operationId":"list_commit_reports","summary":"List Code Insights reports attached to a commit (test, coverage, security, bug reports): title, type, result, reporter a","description":"List Code Insights reports attached to a commit (test, coverage, security, bug reports): title, type, result, reporter and link. Use for \"Which code insight reports exist for commit 3a8b42f\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Workspace slug (the first part of repository URLs on bitbucket.org), for example 'myteam'.","maxLength":200,"title":"Workspace","type":"string"},"repo_slug":{"description":"Repository slug, for example 'my-repo'.","maxLength":200,"title":"Repo Slug","type":"string"},"commit":{"description":"Full commit hash (SHA1), for example '3a8b42f1c9d0e7a4b6c5d4e3f2a1b0c9d8e7f6a5'.","maxLength":64,"title":"Commit","type":"string"},"pagelen":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results per page (1 to 100, default 25).","title":"Pagelen"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. The answer's next field holds the link to the following page when there is one.","title":"Page"}},"required":["workspace","repo_slug","commit"],"title":"list_commit_reportsArguments","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_commit_report":{"post":{"operationId":"get_commit_report","summary":"Get one Code Insights report of a commit by its uuid or external id, including its data points. Use for \"Show report tes","description":"Get one Code Insights report of a commit by its uuid or external id, including its data points. Use for \"Show report tests-1 of commit 3a8b42f\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Workspace slug (the first part of repository URLs on bitbucket.org), for example 'myteam'.","maxLength":200,"title":"Workspace","type":"string"},"repo_slug":{"description":"Repository slug, for example 'my-repo'.","maxLength":200,"title":"Repo Slug","type":"string"},"commit":{"description":"Full commit hash (SHA1), for example '3a8b42f1c9d0e7a4b6c5d4e3f2a1b0c9d8e7f6a5'.","maxLength":64,"title":"Commit","type":"string"},"report_id":{"description":"Report uuid (with braces) or the external id the reporter gave it.","maxLength":200,"title":"Report Id","type":"string"}},"required":["workspace","repo_slug","commit","report_id"],"title":"get_commit_reportArguments","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_report_annotations":{"post":{"operationId":"list_report_annotations","summary":"List the annotations of a Code Insights report (findings tied to a file and line): type, severity, result, path, line an","description":"List the annotations of a Code Insights report (findings tied to a file and line): type, severity, result, path, line and summary. Use for \"What findings does report tests-1 have on commit 3a8b42f\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Workspace slug (the first part of repository URLs on bitbucket.org), for example 'myteam'.","maxLength":200,"title":"Workspace","type":"string"},"repo_slug":{"description":"Repository slug, for example 'my-repo'.","maxLength":200,"title":"Repo Slug","type":"string"},"commit":{"description":"Full commit hash (SHA1), for example '3a8b42f1c9d0e7a4b6c5d4e3f2a1b0c9d8e7f6a5'.","maxLength":64,"title":"Commit","type":"string"},"report_id":{"description":"Report uuid (with braces) or the external id of the report.","maxLength":200,"title":"Report Id","type":"string"},"pagelen":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results per page (1 to 100, default 25).","title":"Pagelen"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. The answer's next field holds the link to the following page when there is one.","title":"Page"}},"required":["workspace","repo_slug","commit","report_id"],"title":"list_report_annotationsArguments","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_commit_pull_requests":{"post":{"operationId":"list_commit_pull_requests","summary":"List the pull requests that contain a commit: id, title, state, author, branches and comment and task counts. Use for \"W","description":"List the pull requests that contain a commit: id, title, state, author, branches and comment and task counts. Use for \"Which pull request shipped commit 3a8b42f\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Workspace slug (the first part of repository URLs on bitbucket.org), for example 'myteam'.","maxLength":200,"title":"Workspace","type":"string"},"repo_slug":{"description":"Repository slug, for example 'my-repo'.","maxLength":200,"title":"Repo Slug","type":"string"},"commit":{"description":"Full commit hash (SHA1), for example '3a8b42f1c9d0e7a4b6c5d4e3f2a1b0c9d8e7f6a5'.","maxLength":64,"title":"Commit","type":"string"},"pagelen":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results per page (1 to 50, default 30).","title":"Pagelen"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. The answer's next field holds the link to the following page when there is one.","title":"Page"}},"required":["workspace","repo_slug","commit"],"title":"list_commit_pull_requestsArguments","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_diffstat":{"post":{"operationId":"get_diffstat","summary":"Summarise the files changed between two commits or in one commit: file path, status and lines added and removed (no diff","description":"Summarise the files changed between two commits or in one commit: file path, status and lines added and removed (no diff text). Use for \"Which files changed between 3a8b42f and 9ff1730 in myteam/my-repo\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Workspace slug (the first part of repository URLs on bitbucket.org), for example 'myteam'.","maxLength":200,"title":"Workspace","type":"string"},"repo_slug":{"description":"Repository slug, for example 'my-repo'.","maxLength":200,"title":"Repo Slug","type":"string"},"spec":{"description":"One commit hash, or a range like 'abc123..def456' (double dot).","maxLength":100,"title":"Spec","type":"string"},"ignore_whitespace":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to ignore whitespace-only changes.","title":"Ignore Whitespace"},"renames":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"False to turn off rename detection (on by default).","title":"Renames"},"pagelen":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":500,"description":"How many results per page (1 to 500, default 500).","title":"Pagelen"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. The answer's next field holds the link to the following page when there is one.","title":"Page"}},"required":["workspace","repo_slug","spec"],"title":"get_diffstatArguments","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_merge_base":{"post":{"operationId":"get_merge_base","summary":"Find the common ancestor commit of two commits given as 'a..b' (hash, date, message). Use for \"What is the merge base of","description":"Find the common ancestor commit of two commits given as 'a..b' (hash, date, message). Use for \"What is the merge base of 3a8b42f and 9ff1730\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Workspace slug (the first part of repository URLs on bitbucket.org), for example 'myteam'.","maxLength":200,"title":"Workspace","type":"string"},"repo_slug":{"description":"Repository slug, for example 'my-repo'.","maxLength":200,"title":"Repo Slug","type":"string"},"revspec":{"description":"Two commits in double dot notation, for example '3a8b42f..9ff1730'.","maxLength":100,"title":"Revspec","type":"string"}},"required":["workspace","repo_slug","revspec"],"title":"get_merge_baseArguments","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_pull_request_statuses":{"post":{"operationId":"list_pull_request_statuses","summary":"List the build statuses of a pull request's head commit: name, state, branch, link and times. Use for \"Are the checks on","description":"List the build statuses of a pull request's head commit: name, state, branch, link and times. Use for \"Are the checks on pull request 12 of myteam/my-repo green\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Workspace slug (the first part of repository URLs on bitbucket.org), for example 'myteam'.","maxLength":200,"title":"Workspace","type":"string"},"repo_slug":{"description":"Repository slug, for example 'my-repo'.","maxLength":200,"title":"Repo Slug","type":"string"},"pull_request_id":{"description":"Numeric id of the pull request.","minimum":1,"title":"Pull Request Id","type":"integer"},"q":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Bitbucket query filter, for example 'state=\"FAILED\"' (see the Bitbucket filtering docs); leave out for no filter.","title":"Q"},"pagelen":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results per page (1 to 100, default 25).","title":"Pagelen"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1. The answer's next field holds the link to the following page when there is one.","title":"Page"}},"required":["workspace","repo_slug","pull_request_id"],"title":"list_pull_request_statusesArguments","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_pull_request_merge_checks":{"post":{"operationId":"list_pull_request_merge_checks","summary":"List the merge checks of a pull request (required approvals, builds, tasks ...) with status and whether each is required","description":"List the merge checks of a pull request (required approvals, builds, tasks ...) with status and whether each is required or blocking. Use for \"Can pull request 12 of myteam/my-repo be merged, and what blocks it\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"workspace":{"description":"Workspace slug (the first part of repository URLs on bitbucket.org), for example 'myteam'.","maxLength":200,"title":"Workspace","type":"string"},"repo_slug":{"description":"Repository slug, for example 'my-repo'.","maxLength":200,"title":"Repo Slug","type":"string"},"pull_request_id":{"description":"Numeric id of the pull request.","minimum":1,"title":"Pull Request Id","type":"integer"}},"required":["workspace","repo_slug","pull_request_id"],"title":"list_pull_request_merge_checksArguments","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}}}}