> For the complete documentation index, see [llms.txt](https://docs.kinesis.network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.kinesis.network/mcp/tools/builds.md).

# Builds

Follow GitHub builds, inspect output, trigger deployments and roll back to a stored image.

Follow GitHub builds, inspect output, trigger deployments and roll back to a stored image.

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`.

`check_rollback_build` checks whether an earlier image is still stored. `rollback_build` redeploys that image without rebuilding: a running app redeploys, a stopped app uses it on its next start. It requires `apps:write` and permission to edit the app. It is refused during an active build, when no image remains, or before the app has ever deployed. The next build replaces the rollback. Build output is raw and may contain sensitive data.

The [OpenAI profile](/mcp/openai-profile.md) calls individual actions, omits `get_byod_token`, and restricts credential inputs and environment outputs. The input schemas below describe the standard catalog; profile-specific schemas are included where they differ.

## `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

| Operation          | REST                                            | Required scopes |
| ------------------ | ----------------------------------------------- | --------------- |
| `apps.builds.list` | `GET /projects/{projectId}/apps/{appId}/builds` | `apps:read`     |

### Arguments

| Argument    | Type      | Required | Description                                                |
| ----------- | --------- | -------- | ---------------------------------------------------------- |
| `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 |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "Project id"
    },
    "appId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "App id"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "description": "Items per page, 1 to 200 (default 50)"
    },
    "cursor": {
      "type": "string",
      "minLength": 1,
      "maxLength": 512,
      "description": "nextCursor from the previous page; omit for the first page"
    }
  },
  "required": [
    "projectId",
    "appId"
  ],
  "additionalProperties": false
}
```

</details>

### 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

<details>

<summary>Response schema: apps.builds.list</summary>

```json
{
  "type": "object",
  "properties": {
    "builds": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Build id"
          },
          "appId": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "running",
              "succeeded",
              "failed",
              "cancelled"
            ],
            "description": "running until the image is built and the app deployed"
          },
          "step": {
            "type": "string",
            "enum": [
              "vcs_import",
              "image_build",
              "app_deploy",
              "completed"
            ],
            "description": "Pipeline step in progress, or completed"
          },
          "imageBuildStatus": {
            "description": "The image builder's own status (Created, Running, Completed, Failed, Canceled, TimedOut) once that step started",
            "type": [
              "string",
              "null"
            ]
          },
          "source": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "repo": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "branch": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "commitSha": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "commitMessage": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "contextDir": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "dockerfilePath": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "repo",
                  "branch",
                  "commitSha",
                  "commitMessage",
                  "contextDir",
                  "dockerfilePath"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ],
            "description": "What was built; the commit is filled in once the build starts"
          },
          "error": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "step": {
                    "type": "string",
                    "description": "Step the build failed at"
                  },
                  "message": {
                    "type": "string"
                  },
                  "code": {
                    "type": [
                      "string",
                      "null"
                    ]
                  }
                },
                "required": [
                  "step",
                  "message",
                  "code"
                ],
                "additionalProperties": false
              },
              {
                "type": "null"
              }
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp (UTC)"
          },
          "startedAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "description": "ISO 8601 timestamp (UTC)"
              },
              {
                "type": "null"
              }
            ]
          },
          "finishedAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time",
                "description": "ISO 8601 timestamp (UTC)"
              },
              {
                "type": "null"
              }
            ]
          },
          "pollAfterSec": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "description": "Seconds to wait before reading the build again; null once it has finished"
          }
        },
        "required": [
          "id",
          "appId",
          "status",
          "step",
          "imageBuildStatus",
          "source",
          "error",
          "createdAt",
          "startedAt",
          "finishedAt",
          "pollAfterSec"
        ],
        "additionalProperties": false
      }
    },
    "nextCursor": {
      "description": "Pass as cursor to fetch the next page; null on the last page",
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "builds",
    "nextCursor"
  ],
  "additionalProperties": false
}
```

</details>

## `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

| Operation         | REST                                                      | Required scopes |
| ----------------- | --------------------------------------------------------- | --------------- |
| `apps.builds.get` | `GET /projects/{projectId}/apps/{appId}/builds/{buildId}` | `apps:read`     |

### Arguments

| Argument    | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `projectId` | `string` | Yes      | Project id  |
| `appId`     | `string` | Yes      | App id      |
| `buildId`   | `string` | Yes      | Build id    |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "Project id"
    },
    "appId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "App id"
    },
    "buildId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "Build id"
    }
  },
  "required": [
    "projectId",
    "appId",
    "buildId"
  ],
  "additionalProperties": false
}
```

</details>

### Result

* `id` (`string`): Build id
* `appId` (`string`): See the complete response schema below.
* `status` (`"pending" / "running" / "succeeded" / "failed" / "cancelled"`): running until the image is built and the app deployed
* `step` (`"vcs_import" / "image_build" / "app_deploy" / "completed"`): Pipeline step in progress, or completed
* `imageBuildStatus` (`string or null`): The image builder's own status (Created, Running, Completed, Failed, Canceled, TimedOut) once that step started
* `source` (`object or null`): What was built; the commit is filled in once the build starts
* `error` (`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

<details>

<summary>Response schema: apps.builds.get</summary>

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Build id"
    },
    "appId": {
      "type": "string"
    },
    "status": {
      "type": "string",
      "enum": [
        "pending",
        "running",
        "succeeded",
        "failed",
        "cancelled"
      ],
      "description": "running until the image is built and the app deployed"
    },
    "step": {
      "type": "string",
      "enum": [
        "vcs_import",
        "image_build",
        "app_deploy",
        "completed"
      ],
      "description": "Pipeline step in progress, or completed"
    },
    "imageBuildStatus": {
      "description": "The image builder's own status (Created, Running, Completed, Failed, Canceled, TimedOut) once that step started",
      "type": [
        "string",
        "null"
      ]
    },
    "source": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "repo": {
              "type": [
                "string",
                "null"
              ]
            },
            "branch": {
              "type": [
                "string",
                "null"
              ]
            },
            "commitSha": {
              "type": [
                "string",
                "null"
              ]
            },
            "commitMessage": {
              "type": [
                "string",
                "null"
              ]
            },
            "contextDir": {
              "type": [
                "string",
                "null"
              ]
            },
            "dockerfilePath": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "repo",
            "branch",
            "commitSha",
            "commitMessage",
            "contextDir",
            "dockerfilePath"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "What was built; the commit is filled in once the build starts"
    },
    "error": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "step": {
              "type": "string",
              "description": "Step the build failed at"
            },
            "message": {
              "type": "string"
            },
            "code": {
              "type": [
                "string",
                "null"
              ]
            }
          },
          "required": [
            "step",
            "message",
            "code"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "ISO 8601 timestamp (UTC)"
    },
    "startedAt": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time",
          "description": "ISO 8601 timestamp (UTC)"
        },
        {
          "type": "null"
        }
      ]
    },
    "finishedAt": {
      "anyOf": [
        {
          "type": "string",
          "format": "date-time",
          "description": "ISO 8601 timestamp (UTC)"
        },
        {
          "type": "null"
        }
      ]
    },
    "pollAfterSec": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "description": "Seconds to wait before reading the build again; null once it has finished"
    }
  },
  "required": [
    "id",
    "appId",
    "status",
    "step",
    "imageBuildStatus",
    "source",
    "error",
    "createdAt",
    "startedAt",
    "finishedAt",
    "pollAfterSec"
  ],
  "additionalProperties": false
}
```

</details>

## `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). It includes whatever the repository's build steps print, sensitive data included.

**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

| Operation          | REST                                                           | Required scopes   |
| ------------------ | -------------------------------------------------------------- | ----------------- |
| `apps.builds.logs` | `GET /projects/{projectId}/apps/{appId}/builds/{buildId}/logs` | `monitoring:read` |

### Arguments

| Argument    | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `projectId` | `string` | Yes      | Project id  |
| `appId`     | `string` | Yes      | App id      |
| `buildId`   | `string` | Yes      | Build id    |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "Project id"
    },
    "appId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "App id"
    },
    "buildId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "Build id"
    }
  },
  "required": [
    "projectId",
    "appId",
    "buildId"
  ],
  "additionalProperties": false
}
```

</details>

### Result

* `id` (`string`): Build id
* `status` (`"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 first
* `complete` (`boolean`): The image build has finished, so the log is final
* `truncated` (`boolean`): Older lines were dropped to keep the last 2000

<details>

<summary>Response schema: apps.builds.logs</summary>

```json
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Build id"
    },
    "status": {
      "type": "string",
      "enum": [
        "pending",
        "running",
        "succeeded",
        "failed",
        "cancelled"
      ]
    },
    "imageBuildStatus": {
      "type": [
        "string",
        "null"
      ]
    },
    "lines": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Builder output, oldest first"
    },
    "complete": {
      "type": "boolean",
      "description": "The image build has finished, so the log is final"
    },
    "truncated": {
      "type": "boolean",
      "description": "Older lines were dropped to keep the last 2000"
    }
  },
  "required": [
    "id",
    "status",
    "imageBuildStatus",
    "lines",
    "complete",
    "truncated"
  ],
  "additionalProperties": false
}
```

</details>

## `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

| Operation            | REST                                             | Required scopes               |
| -------------------- | ------------------------------------------------ | ----------------------------- |
| `apps.builds.create` | `POST /projects/{projectId}/apps/{appId}/builds` | `apps:write`, `compute:spend` |

### Arguments

| Argument    | Type     | Required | Description                                |
| ----------- | -------- | -------- | ------------------------------------------ |
| `commitSha` | `string` | No       | Commit to build instead of the branch head |
| `projectId` | `string` | Yes      | Project id                                 |
| `appId`     | `string` | Yes      | App id                                     |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "commitSha": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{7,40}$",
      "description": "Commit to build instead of the branch head"
    },
    "projectId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "Project id"
    },
    "appId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "App id"
    }
  },
  "required": [
    "projectId",
    "appId"
  ],
  "additionalProperties": false
}
```

</details>

### Result

* `build` (`object`): See the complete response schema below.
* `cancelledBuilds` (`integer`): Builds that were still running and were cancelled

<details>

<summary>Response schema: apps.builds.create</summary>

```json
{
  "type": "object",
  "properties": {
    "build": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Build id"
        },
        "appId": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "enum": [
            "pending",
            "running",
            "succeeded",
            "failed",
            "cancelled"
          ],
          "description": "running until the image is built and the app deployed"
        },
        "step": {
          "type": "string",
          "enum": [
            "vcs_import",
            "image_build",
            "app_deploy",
            "completed"
          ],
          "description": "Pipeline step in progress, or completed"
        },
        "imageBuildStatus": {
          "description": "The image builder's own status (Created, Running, Completed, Failed, Canceled, TimedOut) once that step started",
          "type": [
            "string",
            "null"
          ]
        },
        "source": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "repo": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "branch": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "commitSha": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "commitMessage": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "contextDir": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "dockerfilePath": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "repo",
                "branch",
                "commitSha",
                "commitMessage",
                "contextDir",
                "dockerfilePath"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ],
          "description": "What was built; the commit is filled in once the build starts"
        },
        "error": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "step": {
                  "type": "string",
                  "description": "Step the build failed at"
                },
                "message": {
                  "type": "string"
                },
                "code": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "step",
                "message",
                "code"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "ISO 8601 timestamp (UTC)"
        },
        "startedAt": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "description": "ISO 8601 timestamp (UTC)"
            },
            {
              "type": "null"
            }
          ]
        },
        "finishedAt": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "description": "ISO 8601 timestamp (UTC)"
            },
            {
              "type": "null"
            }
          ]
        },
        "pollAfterSec": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "description": "Seconds to wait before reading the build again; null once it has finished"
        }
      },
      "required": [
        "id",
        "appId",
        "status",
        "step",
        "imageBuildStatus",
        "source",
        "error",
        "createdAt",
        "startedAt",
        "finishedAt",
        "pollAfterSec"
      ],
      "additionalProperties": false
    },
    "cancelledBuilds": {
      "type": "integer",
      "description": "Builds that were still running and were cancelled"
    }
  },
  "required": [
    "build",
    "cancelledBuilds"
  ],
  "additionalProperties": false
}
```

</details>

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`.

## `check_rollback_build`

Whether an earlier build's image can still be redeployed with rollback\_build. False when the build has no image (it failed or was cancelled) or its image is no longer stored.

**Group:** `apps` · **Behavior:** Read

**Compact tool:** `apps` · **Action:** `check_rollback_build`

**MCP annotations:** `readOnlyHint: true` · `destructiveHint: false` · `idempotentHint: true` · `openWorldHint: false`

### Permissions and REST equivalents

| Operation                   | REST                                                               | Required scopes |
| --------------------------- | ------------------------------------------------------------------ | --------------- |
| `apps.builds.rollbackCheck` | `GET /projects/{projectId}/apps/{appId}/builds/{buildId}/rollback` | `apps:read`     |

### Arguments

| Argument    | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `projectId` | `string` | Yes      | Project id  |
| `appId`     | `string` | Yes      | App id      |
| `buildId`   | `string` | Yes      | Build id    |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "Project id"
    },
    "appId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "App id"
    },
    "buildId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "Build id"
    }
  },
  "required": [
    "projectId",
    "appId",
    "buildId"
  ],
  "additionalProperties": false
}
```

</details>

### Result

* `imageAvailable` (`boolean`): The build's image can be redeployed

<details>

<summary>Response schema: apps.builds.rollbackCheck</summary>

```json
{
  "type": "object",
  "properties": {
    "imageAvailable": {
      "type": "boolean",
      "description": "The build's image can be redeployed"
    }
  },
  "required": [
    "imageAvailable"
  ],
  "additionalProperties": false
}
```

</details>

## `rollback_build`

Redeploy an earlier build's image without rebuilding. A running app is redeployed with it; the next build replaces it again.

**Group:** `apps` · **Behavior:** Write

**Compact tool:** `apps_write` · **Action:** `rollback_build`

**MCP annotations:** `readOnlyHint: false` · `destructiveHint: true` · `idempotentHint: true` · `openWorldHint: true`

### Permissions and REST equivalents

| Operation              | REST                                                                | Required scopes |
| ---------------------- | ------------------------------------------------------------------- | --------------- |
| `apps.builds.rollback` | `POST /projects/{projectId}/apps/{appId}/builds/{buildId}/rollback` | `apps:write`    |

### Arguments

| Argument    | Type     | Required | Description |
| ----------- | -------- | -------- | ----------- |
| `projectId` | `string` | Yes      | Project id  |
| `appId`     | `string` | Yes      | App id      |
| `buildId`   | `string` | Yes      | Build id    |

<details>

<summary>Complete input schema</summary>

```json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "projectId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "Project id"
    },
    "appId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "App id"
    },
    "buildId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{24}$",
      "description": "Build id"
    }
  },
  "required": [
    "projectId",
    "appId",
    "buildId"
  ],
  "additionalProperties": false
}
```

</details>

### Result

* `build` (`object`): The build whose image is now deployed
* `redeploying` (`boolean`): The app is running and is being redeployed with the image

<details>

<summary>Response schema: apps.builds.rollback</summary>

```json
{
  "type": "object",
  "properties": {
    "build": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "Build id"
        },
        "appId": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "enum": [
            "pending",
            "running",
            "succeeded",
            "failed",
            "cancelled"
          ],
          "description": "running until the image is built and the app deployed"
        },
        "step": {
          "type": "string",
          "enum": [
            "vcs_import",
            "image_build",
            "app_deploy",
            "completed"
          ],
          "description": "Pipeline step in progress, or completed"
        },
        "imageBuildStatus": {
          "description": "The image builder's own status (Created, Running, Completed, Failed, Canceled, TimedOut) once that step started",
          "type": [
            "string",
            "null"
          ]
        },
        "source": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "repo": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "branch": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "commitSha": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "commitMessage": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "contextDir": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "dockerfilePath": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "repo",
                "branch",
                "commitSha",
                "commitMessage",
                "contextDir",
                "dockerfilePath"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ],
          "description": "What was built; the commit is filled in once the build starts"
        },
        "error": {
          "anyOf": [
            {
              "type": "object",
              "properties": {
                "step": {
                  "type": "string",
                  "description": "Step the build failed at"
                },
                "message": {
                  "type": "string"
                },
                "code": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "step",
                "message",
                "code"
              ],
              "additionalProperties": false
            },
            {
              "type": "null"
            }
          ]
        },
        "createdAt": {
          "type": "string",
          "format": "date-time",
          "description": "ISO 8601 timestamp (UTC)"
        },
        "startedAt": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "description": "ISO 8601 timestamp (UTC)"
            },
            {
              "type": "null"
            }
          ]
        },
        "finishedAt": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "description": "ISO 8601 timestamp (UTC)"
            },
            {
              "type": "null"
            }
          ]
        },
        "pollAfterSec": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "description": "Seconds to wait before reading the build again; null once it has finished"
        }
      },
      "required": [
        "id",
        "appId",
        "status",
        "step",
        "imageBuildStatus",
        "source",
        "error",
        "createdAt",
        "startedAt",
        "finishedAt",
        "pollAfterSec"
      ],
      "additionalProperties": false,
      "description": "The build whose image is now deployed"
    },
    "redeploying": {
      "type": "boolean",
      "description": "The app is running and is being redeployed with the image"
    }
  },
  "required": [
    "build",
    "redeploying"
  ],
  "additionalProperties": false
}
```

</details>

Operation-specific errors: `409 app_source_unsupported`, `409 build_not_deployable`, `409 build_in_progress`.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.kinesis.network/mcp/tools/builds.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
