Builds
Follow GitHub image builds, inspect builder output and trigger deployments.
Follow GitHub image builds, inspect builder output and trigger deployments.
These are action names. In default compact mode, call the indicated group tool with {"action":"<action-name>","params":{...}}; the arguments below go inside params. In ?mode=all, call the action name directly with those arguments. browse_github and read_docs are direct tools in both modes. Expand each schema for nested fields, enum values and validation constraints. Successful results are JSON in both text content and structuredContent; failures use isError and structuredContent.error.
list_builds
List the builds of a GitHub-sourced app, newest first
Group: apps · Behavior: Read
Compact tool: apps · Action: list_builds
MCP annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false
Permissions and REST equivalents
apps.builds.list
GET /projects/{projectId}/apps/{appId}/builds
apps:read
Arguments
projectId
string
Yes
Project id
appId
string
Yes
App id
limit
integer
No
Items per page, 1 to 200 (default 50)
cursor
string
No
nextCursor from the previous page; omit for the first page
Result
builds(array<object>): See the complete response schema below.nextCursor(string or null): Pass as cursor to fetch the next page; null on the last page
get_build
Get one build: its status, pipeline step, source commit and error
Group: apps · Behavior: Read
Compact tool: apps · Action: get_build
MCP annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false
Permissions and REST equivalents
apps.builds.get
GET /projects/{projectId}/apps/{appId}/builds/{buildId}
apps:read
Arguments
projectId
string
Yes
Project id
appId
string
Yes
App id
buildId
string
Yes
Build id
Result
id(string): Build idappId(string): See the complete response schema below.status("pending" / "running" / "succeeded" / "failed" / "cancelled"): running until the image is built and the app deployedstep("vcs_import" / "image_build" / "app_deploy" / "completed"): Pipeline step in progress, or completedimageBuildStatus(string or null): The image builder's own status (Created, Running, Completed, Failed, Canceled, TimedOut) once that step startedsource(object or null): What was built; the commit is filled in once the build startserror(object or null): See the complete response schema below.createdAt(string): ISO 8601 timestamp (UTC)startedAt(string or null): See the complete response schema below.finishedAt(string or null): See the complete response schema below.pollAfterSec(integer or null): Seconds to wait before reading the build again; null once it has finished
get_build_logs
Read the image builder's log for a build. The whole log once the build has finished, a snapshot of what has been written so far while it runs (empty until the builder starts writing).
Group: apps · Behavior: Read
Compact tool: apps · Action: get_build_logs
MCP annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false
Permissions and REST equivalents
apps.builds.logs
GET /projects/{projectId}/apps/{appId}/builds/{buildId}/logs
monitoring:read
Arguments
projectId
string
Yes
Project id
appId
string
Yes
App id
buildId
string
Yes
Build id
Result
id(string): Build idstatus("pending" / "running" / "succeeded" / "failed" / "cancelled"): See the complete response schema below.imageBuildStatus(string or null): See the complete response schema below.lines(array<string>): Builder output, oldest firstcomplete(boolean): The image build has finished, so the log is finaltruncated(boolean): Older lines were dropped to keep the last 2000
trigger_build
Rebuild a GitHub-sourced app and redeploy it when the build succeeds. From its branch head or one commit; a build still running is cancelled first. Poll get_build to follow it.
Group: apps · Behavior: Write
Compact tool: apps_write · Action: trigger_build
MCP annotations: readOnlyHint: false · destructiveHint: true · idempotentHint: false · openWorldHint: true
Permissions and REST equivalents
apps.builds.create
POST /projects/{projectId}/apps/{appId}/builds
apps:write, compute:spend
Arguments
commitSha
string
No
Commit to build instead of the branch head
projectId
string
Yes
Project id
appId
string
Yes
App id
Result
build(object): See the complete response schema below.cancelledBuilds(integer): Builds that were still running and were cancelled
Operation-specific errors: 409 app_source_unsupported, 403 serverless_disabled, 503 github_not_configured, 404 github_installation_not_found, 404 github_repo_not_found, 502 upstream_github, 404 github_commit_not_found.
Was this helpful?
