{"openapi":"3.1.0","info":{"title":"Buildkite (BYOK) API","version":"0.1.0","description":"Buildkite (BYOK) lets an AI assistant read your own Buildkite data through the Buildkite API with a key you supply (API access token (with read_user, read_organizations, read_pipelines and read_builds scopes)). Read-only: 9 tools (get_current_user, get_access_token_info, list_organizations, get_organization, list_pipelines, get_pipeline, list_pipeline_builds, list_organization_builds, get_build)....\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-buildkite.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-buildkite/docs"},"termsOfService":"https://connectorbay.com/byok-buildkite/terms"},"servers":[{"url":"https://byok-buildkite.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-buildkite/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_current_user":{"post":{"operationId":"get_current_user","summary":"Show the Buildkite user the token belongs to: name, email and account creation date. Needs the read_user scope. Use for ","description":"Show the Buildkite user the token belongs to: name, email and account creation date. Needs the read_user scope. Use for \"Which Buildkite user is my token connected to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_current_userArguments","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_access_token_info":{"post":{"operationId":"get_access_token_info","summary":"Show metadata of the Buildkite access token in use: description, scopes, creation and expiry time. The token secret is n","description":"Show metadata of the Buildkite access token in use: description, scopes, creation and expiry time. The token secret is not returned. Use for \"Which scopes does my Buildkite token have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_access_token_infoArguments","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_organizations":{"post":{"operationId":"list_organizations","summary":"List the Buildkite organizations the token can access with name, slug and creation date. Needs the read_organizations sc","description":"List the Buildkite organizations the token can access with name, slug and creation date. Needs the read_organizations scope. Use for \"Which Buildkite organizations do I belong to\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results to return (1 to 100; Buildkite's default is 30). If fewer come back than asked for, there is no next page.","title":"Per Page"},"page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_organizationsArguments","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_organization":{"post":{"operationId":"get_organization","summary":"Get one Buildkite organization by slug: name, slug, web URL and creation date. Use for \"Show my Buildkite organization\".","description":"Get one Buildkite organization by slug: name, slug, web URL and creation date. Use for \"Show my Buildkite organization\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_slug":{"description":"Buildkite organization slug, the part of the Buildkite URL after buildkite.com/, for example 'my-great-org'.","maxLength":100,"title":"Org Slug","type":"string"}},"required":["org_slug"],"title":"get_organizationArguments","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_pipelines":{"post":{"operationId":"list_pipelines","summary":"List the pipelines of a Buildkite organization with repository, default branch, visibility and counts of running and sch","description":"List the pipelines of a Buildkite organization with repository, default branch, visibility and counts of running and scheduled builds and jobs. Needs the read_pipelines scope. Use for \"Which Buildkite pipelines have builds running now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_slug":{"description":"Buildkite organization slug, the part of the Buildkite URL after buildkite.com/, for example 'my-great-org'.","maxLength":100,"title":"Org Slug","type":"string"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only pipelines whose name contains this text (case insensitive).","title":"Name"},"repository":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only pipelines whose repository URL contains this text (case insensitive).","title":"Repository"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results to return (1 to 100; Buildkite's default is 30). If fewer come back than asked for, there is no next page.","title":"Per Page"},"page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["org_slug"],"title":"list_pipelinesArguments","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_pipeline":{"post":{"operationId":"get_pipeline","summary":"Get one Buildkite pipeline by slug: repository, default branch, visibility, cluster and running or scheduled build and j","description":"Get one Buildkite pipeline by slug: repository, default branch, visibility, cluster and running or scheduled build and job counts. Use for \"Show details of my Buildkite pipeline\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_slug":{"description":"Buildkite organization slug, the part of the Buildkite URL after buildkite.com/, for example 'my-great-org'.","maxLength":100,"title":"Org Slug","type":"string"},"pipeline_slug":{"description":"Pipeline slug, for example 'my-pipeline', as returned by list_pipelines.","maxLength":100,"title":"Pipeline Slug","type":"string"}},"required":["org_slug","pipeline_slug"],"title":"get_pipelineArguments","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_pipeline_builds":{"post":{"operationId":"list_pipeline_builds","summary":"List builds of one Buildkite pipeline, newest first, with state, branch, commit, message, creator and timestamps. Needs ","description":"List builds of one Buildkite pipeline, newest first, with state, branch, commit, message, creator and timestamps. Needs the read_builds scope. Use for \"Did the latest builds of my Buildkite pipeline pass\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_slug":{"description":"Buildkite organization slug, the part of the Buildkite URL after buildkite.com/, for example 'my-great-org'.","maxLength":100,"title":"Org Slug","type":"string"},"pipeline_slug":{"description":"Pipeline slug, for example 'my-pipeline', as returned by list_pipelines.","maxLength":100,"title":"Pipeline Slug","type":"string"},"branch":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only builds on this branch (a wildcard such as '*dev*' also works).","title":"Branch"},"state":{"anyOf":[{"enum":["creating","scheduled","running","passed","failing","failed","blocked","canceling","canceled","skipped","not_run","finished"],"type":"string"},{"type":"null"}],"default":null,"description":"Only builds in this state; 'finished' means passed, failed, blocked or canceled.","title":"State"},"created_from":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only builds created on or after this ISO 8601 time.","title":"Created From"},"created_to":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only builds created before this ISO 8601 time.","title":"Created To"},"commit":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only builds of this full commit SHA.","title":"Commit"},"exclude_jobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) leaves out each build's job list, which makes answers much smaller.","title":"Exclude Jobs"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results to return (1 to 100; Buildkite's default is 30). If fewer come back than asked for, there is no next page.","title":"Per Page"},"page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["org_slug","pipeline_slug"],"title":"list_pipeline_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_organization_builds":{"post":{"operationId":"list_organization_builds","summary":"List builds across all pipelines of a Buildkite organization, newest first, with pipeline, state, branch, commit and tim","description":"List builds across all pipelines of a Buildkite organization, newest first, with pipeline, state, branch, commit and timestamps. Use for \"Which builds failed in my Buildkite organization today\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_slug":{"description":"Buildkite organization slug, the part of the Buildkite URL after buildkite.com/, for example 'my-great-org'.","maxLength":100,"title":"Org Slug","type":"string"},"branch":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only builds on this branch (a wildcard such as '*dev*' also works).","title":"Branch"},"state":{"anyOf":[{"enum":["creating","scheduled","running","passed","failing","failed","blocked","canceling","canceled","skipped","not_run","finished"],"type":"string"},{"type":"null"}],"default":null,"description":"Only builds in this state; 'finished' means passed, failed, blocked or canceled.","title":"State"},"created_from":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only builds created on or after this ISO 8601 time.","title":"Created From"},"created_to":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only builds created before this ISO 8601 time.","title":"Created To"},"commit":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only builds of this full commit SHA.","title":"Commit"},"exclude_jobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) leaves out each build's job list, which makes answers much smaller.","title":"Exclude Jobs"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results to return (1 to 100; Buildkite's default is 30). If fewer come back than asked for, there is no next page.","title":"Per Page"},"page":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["org_slug"],"title":"list_organization_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/get_build":{"post":{"operationId":"get_build","summary":"Get one Buildkite build by number: state, branch, commit, message, creator, timestamps and (when exclude_jobs is false) ","description":"Get one Buildkite build by number: state, branch, commit, message, creator, timestamps and (when exclude_jobs is false) its jobs. Use for \"Show Buildkite build 27 of my pipeline\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"org_slug":{"description":"Buildkite organization slug, the part of the Buildkite URL after buildkite.com/, for example 'my-great-org'.","maxLength":100,"title":"Org Slug","type":"string"},"pipeline_slug":{"description":"Pipeline slug, for example 'my-pipeline', as returned by list_pipelines.","maxLength":100,"title":"Pipeline Slug","type":"string"},"build_number":{"description":"Build number within the pipeline, for example 27 (not the build UUID).","title":"Build Number","type":"integer"},"exclude_jobs":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True (default) leaves out the job list; false includes every job with its state and command.","title":"Exclude Jobs"}},"required":["org_slug","pipeline_slug","build_number"],"title":"get_buildArguments","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}}}}