# Deployment API

The Deployment area publishes 109 REST endpoints. Paths are relative to `https://api.lessly.com`; see [Authentication](/reference/openapi#authentication) for the required header.

### `POST` `/deployment/alerts`

Create a threshold alert rule for a service or managed service

MCP tool: `deployment_alert_create`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| targetKind | body | string one of: service, managed-service | • | — |
| targetId | body | string (uuid) | • | — |
| metric | body | string one of: cpu, memory, net_in, net_out, disk | • | — |
| comparator | body | string one of: gt, lt | • | — |
| threshold | body | number | • | — |
| enabled | body | boolean | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| state | string one of: ok, firing | • | — |
| metric | string one of: cpu, memory, net_in, net_out, disk | • | — |
| enabled | boolean | • | — |
| targetId | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| threshold | number | • | — |
| updatedAt | string | • | — |
| comparator | string one of: gt, lt | • | — |
| targetKind | string one of: service, managed-service | • | — |
| environmentId | string | • | — |
| lastEvaluatedAt | string | null | • | — |
| lastStateChangeAt | string | null | • | — |

### `DELETE` `/deployment/alerts/:id`

Delete an alert rule

MCP tool: `deployment_alert_delete`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| deleted | boolean | • | — |

### `PATCH` `/deployment/alerts/:id`

Update an alert rule (threshold, comparator, enabled)

MCP tool: `deployment_alert_update`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| comparator | body | string one of: gt, lt | — | — |
| threshold | body | number | — | — |
| enabled | body | boolean | — | — |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| state | string one of: ok, firing | • | — |
| metric | string one of: cpu, memory, net_in, net_out, disk | • | — |
| enabled | boolean | • | — |
| targetId | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| threshold | number | • | — |
| updatedAt | string | • | — |
| comparator | string one of: gt, lt | • | — |
| targetKind | string one of: service, managed-service | • | — |
| environmentId | string | • | — |
| lastEvaluatedAt | string | null | • | — |
| lastStateChangeAt | string | null | • | — |

### `POST` `/deployment/analytics/query`

Ask a natural-language question about THIS product's deployment data (deployments, deploy events, environments, services, domains, managed services) and get a computed answer. Returns the generated SQL, the result rows, and a natural-language answer. Read-only; scoped to the current product.

MCP tool: `deployment_analytics_query`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| q | body | string | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| sql | string | • | — |
| rows | object[] | • | — |
| answer | string | • | — |
| truncated | boolean | • | — |
| explanation | string | • | — |

### `GET` `/deployment/builds/:id`

Get a single build by deployment id

MCP tool: `deployment_build_get`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| status | string one of: Initializing, Building, Deploying, Active, Replaced, Crashed, Completed, Failed, Removed | • | — |
| builtAt | string | null | • | — |
| imageRef | string | null | • | — |
| commitSha | string | null | • | — |
| createdAt | string | • | — |
| serviceId | string (uuid) | • | — |
| startedAt | string | null | • | — |
| finishedAt | string | null | • | — |
| cloudBuildId | string | null | • | — |
| lastErrorMessage | string | null | • | — |

### `POST` `/deployment/cloud-sql/databases`

Create a logical database (with its own role) on the managed Postgres instance.

MCP tool: `deployment_cloud_sql_database_create`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| instanceId | body | string (uuid) | • | — |
| label | body | string | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| dbName | string | • | — |
| status | string | • | — |
| roleName | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| instanceId | string | • | — |
| lastErrorMessage | string | null | • | — |

### `DELETE` `/deployment/cloud-sql/databases/:databaseId`

Delete a logical managed Postgres database (detaches from all services first).

MCP tool: `deployment_cloud_sql_database_delete`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| databaseId | path | string (uuid) | • | — |

### `GET` `/deployment/cloud-sql/databases/:databaseId`

Get a logical managed Postgres database by id.

MCP tool: `deployment_cloud_sql_database_get`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| databaseId | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| dbName | string | • | — |
| status | string | • | — |
| roleName | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| instanceId | string | • | — |
| lastErrorMessage | string | null | • | — |

### `POST` `/deployment/cloud-sql/databases/attach`

Attach a managed Postgres database to a service in an environment; injects DATABASE_URL (and PG* vars) as a secret.

MCP tool: `deployment_cloud_sql_database_attach`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| databaseId | body | string (uuid) | • | — |
| serviceId | body | string (uuid) | • | — |
| environmentId | body | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| status | string | • | — |
| serviceId | string | • | — |
| databaseId | string | • | — |
| environmentId | string | • | — |

### `POST` `/deployment/cloud-sql/databases/detach`

Detach a managed Postgres database from a service; removes the injected connection secrets. Does not delete the database.

MCP tool: `deployment_cloud_sql_database_detach`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| attachmentId | body | string (uuid) | • | — |

### `GET` `/deployment/cloud-sql/instances`

List the product's managed Postgres (Cloud SQL) instance(s).

MCP tool: `deployment_cloud_sql_instance_list`

**Parameters**

No parameters.

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| tier | string | • | — |
| label | string | • | — |
| region | string | • | — |
| status | string | • | — |
| createdAt | string | • | — |
| pgVersion | string | • | — |
| privateIp | string | null | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| pitrEnabled | boolean | null | • | — |
| backupsEnabled | boolean | null | • | — |
| connectionName | string | null | • | — |
| lastErrorMessage | string | null | • | — |
| backupConfigObservedAt | string | null | • | — |

### `POST` `/deployment/cloud-sql/instances`

Provision the product's managed Postgres instance on Google Cloud SQL — fully managed by Google Cloud, with automated backups and point-in-time recovery, a dedicated instance, and easy resize.

MCP tool: `deployment_cloud_sql_instance_create`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| label | body | string | • | — |
| tier | body | string one of: db-custom-1-3840, db-custom-2-7680, db-custom-4-15360 | — | — |
| pgVersion | body | string one of: 16, 17, 18 | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| tier | string | • | — |
| label | string | • | — |
| region | string | • | — |
| status | string | • | — |
| createdAt | string | • | — |
| pgVersion | string | • | — |
| privateIp | string | null | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| pitrEnabled | boolean | null | • | — |
| backupsEnabled | boolean | null | • | — |
| connectionName | string | null | • | — |
| lastErrorMessage | string | null | • | — |
| backupConfigObservedAt | string | null | • | — |

### `DELETE` `/deployment/cloud-sql/instances/:instanceId`

Delete the managed Postgres (Cloud SQL) instance (must have no databases).

MCP tool: `deployment_cloud_sql_instance_delete`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| instanceId | path | string (uuid) | • | — |

### `GET` `/deployment/cloud-sql/instances/:instanceId`

Get the product's managed Postgres (Cloud SQL) instance and its status.

MCP tool: `deployment_cloud_sql_instance_get`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| instanceId | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| tier | string | • | — |
| label | string | • | — |
| region | string | • | — |
| status | string | • | — |
| createdAt | string | • | — |
| pgVersion | string | • | — |
| privateIp | string | null | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| pitrEnabled | boolean | null | • | — |
| backupsEnabled | boolean | null | • | — |
| connectionName | string | null | • | — |
| lastErrorMessage | string | null | • | — |
| backupConfigObservedAt | string | null | • | — |

### `GET` `/deployment/cloud-sql/instances/:instanceId/backups`

List backup runs for the managed Postgres (Cloud SQL) instance.

MCP tool: `deployment_cloud_sql_instance_backup_list`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| instanceId | path | string (uuid) | • | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| type | string | • | — |
| error | string | null | • | — |
| status | string | • | — |
| endTime | string | null | • | — |
| startTime | string | null | • | — |
| description | string | null | • | — |

### `POST` `/deployment/cloud-sql/instances/:instanceId/backups`

Take an on-demand backup of the managed Postgres (Cloud SQL) instance.

MCP tool: `deployment_cloud_sql_instance_backup`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| instanceId | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| tier | string | • | — |
| label | string | • | — |
| region | string | • | — |
| status | string | • | — |
| createdAt | string | • | — |
| pgVersion | string | • | — |
| privateIp | string | null | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| pitrEnabled | boolean | null | • | — |
| backupsEnabled | boolean | null | • | — |
| connectionName | string | null | • | — |
| lastErrorMessage | string | null | • | — |
| backupConfigObservedAt | string | null | • | — |

### `GET` `/deployment/cloud-sql/instances/:instanceId/databases`

List the logical managed Postgres databases on an instance.

MCP tool: `deployment_cloud_sql_database_list`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| instanceId | path | string (uuid) | • | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| dbName | string | • | — |
| status | string | • | — |
| roleName | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| instanceId | string | • | — |
| lastErrorMessage | string | null | • | — |

### `GET` `/deployment/cloud-sql/instances/:instanceId/logs`

Snapshot the last N Postgres log lines for a managed Postgres (Cloud SQL) instance.

MCP tool: `deployment_cloud_sql_logs`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| instanceId | path | string (uuid) | • | — |
| tail | query | integer | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| lines | string[] | • | — |

### `PATCH` `/deployment/cloud-sql/instances/:instanceId/resize`

Resize the managed Postgres (Cloud SQL) instance to a different tier (CPU/RAM).

MCP tool: `deployment_cloud_sql_instance_resize`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| instanceId | path | string (uuid) | • | — |
| tier | body | string one of: db-custom-1-3840, db-custom-2-7680, db-custom-4-15360 | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| tier | string | • | — |
| label | string | • | — |
| region | string | • | — |
| status | string | • | — |
| createdAt | string | • | — |
| pgVersion | string | • | — |
| privateIp | string | null | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| pitrEnabled | boolean | null | • | — |
| backupsEnabled | boolean | null | • | — |
| connectionName | string | null | • | — |
| lastErrorMessage | string | null | • | — |
| backupConfigObservedAt | string | null | • | — |

### `POST` `/deployment/cloud-sql/instances/:instanceId/restore`

Restore the managed Postgres (Cloud SQL) instance IN-PLACE from a backup run (destructive — overwrites current data).

MCP tool: `deployment_cloud_sql_instance_restore`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| backupRunId | body | string | • | — |
| instanceId | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| tier | string | • | — |
| label | string | • | — |
| region | string | • | — |
| status | string | • | — |
| createdAt | string | • | — |
| pgVersion | string | • | — |
| privateIp | string | null | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| pitrEnabled | boolean | null | • | — |
| backupsEnabled | boolean | null | • | — |
| connectionName | string | null | • | — |
| lastErrorMessage | string | null | • | — |
| backupConfigObservedAt | string | null | • | — |

### `POST` `/deployment/cloud-sql/instances/backfill-log-flags`

Apply this product's managed Postgres (Cloud SQL) log flags to existing instance(s), idempotently (safe to re-run; zero downtime). Optionally target one instanceId.

MCP tool: `deployment_cloud_sql_backfill_log_flags`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| instanceId | body | string (uuid) | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| failed | object[] | • | — |
| patched | number | • | — |
| scanned | number | • | — |
| skippedNoDrift | number | • | — |
| restartRequired | object[] | • | — |
| skippedNotReady | number | • | — |
| skippedRestartRequired | number | • | — |

### `GET` `/deployment/deployments/:id`

Get a single deployment by id

MCP tool: `deployment_deployment_get`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| status | string one of: Initializing, Building, Deploying, Active, Replaced, Crashed, Completed, Failed, Removed, Sleeping, Stopped, WakeFailed | • | — |
| builtAt | string | null | • | — |
| imageRef | string | null | • | — |
| commitSha | string | null | • | — |
| createdAt | string | • | — |
| serviceId | string (uuid) | • | — |
| startedAt | string | null | • | — |
| updatedAt | string | • | — |
| deployedAt | string | null | • | — |
| finishedAt | string | null | • | — |
| cloudBuildId | string | null | • | — |
| configSnapshot | object | • | — |
| lastErrorMessage | string | null | • | — |
| rolledBackFromDeploymentId | string (uuid) | null | • | — |

### `GET` `/deployment/domains/:domainId/routes`

List path-routes for a domain

MCP tool: `deployment_domain_routes_list`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| domainId | path | string (uuid) | • | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| domainId | string (uuid) | • | — |
| priority | integer | • | — |
| createdAt | string | • | — |
| isDefault | boolean | • | — |
| serviceId | string (uuid) | • | — |
| updatedAt | string | • | — |
| pathPrefix | string | • | — |

### `POST` `/deployment/domains/:domainId/routes`

Add a path-route to a custom domain

MCP tool: `deployment_domain_routes_add`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| domainId | path | string (uuid) | • | — |
| pathPrefix | body | string | • | — |
| serviceId | body | string (uuid) | • | — |
| isDefault | body | boolean | — | — |
| priority | body | integer | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| domainId | string (uuid) | • | — |
| priority | integer | • | — |
| createdAt | string | • | — |
| isDefault | boolean | • | — |
| serviceId | string (uuid) | • | — |
| updatedAt | string | • | — |
| pathPrefix | string | • | — |

### `DELETE` `/deployment/domains/:domainId/routes/:routeId`

Remove a path-route (default route cannot be removed)

MCP tool: `deployment_domain_routes_remove`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| domainId | path | string (uuid) | • | — |
| routeId | path | string (uuid) | • | — |

### `PATCH` `/deployment/domains/:domainId/routes/:routeId`

Update a path-route

MCP tool: `deployment_domain_routes_update`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| domainId | path | string (uuid) | • | — |
| routeId | path | string (uuid) | • | — |
| pathPrefix | body | string | — | — |
| serviceId | body | string (uuid) | — | — |
| priority | body | integer | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| domainId | string (uuid) | • | — |
| priority | integer | • | — |
| createdAt | string | • | — |
| isDefault | boolean | • | — |
| serviceId | string (uuid) | • | — |
| updatedAt | string | • | — |
| pathPrefix | string | • | — |

### `DELETE` `/deployment/domains/:id`

Remove a custom domain (auto-domains are removed via service.delete)

MCP tool: `deployment_domain_remove`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

### `GET` `/deployment/domains/:id`

Get a domain by id (includes DNS instructions for custom domains awaiting verification)

MCP tool: `deployment_domain_get`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| kind | string one of: auto, custom | • | — |
| hostname | string | • | — |
| createdAt | string | • | — |
| tlsStatus | string one of: none, pending, issuing, active, failed | • | — |
| updatedAt | string | • | — |
| lastProbeAt | string | null | • | — |
| redirectWww | boolean | • | — |
| wwwTlsStatus | string one of: none, pending, issuing, active, failed | • | — |
| environmentId | string (uuid) | • | — |
| routingStatus | string one of: provisioning, propagating, active, failed | • | — |
| lastProbeError | string | null | • | — |
| dnsInstructions | object | null | • | — |
| routingRecordType | string one of: A, CNAME | • | — |
| verificationToken | string | null | • | — |
| verificationStatus | string one of: pending_dns, verified, dns_failed | • | — |
| lastVerificationError | object | null | • | — |
| lastVerificationCheckAt | string | null | • | — |
| tlsCertificateExpiresAt | string | null | • | — |

### `PATCH` `/deployment/domains/:id/redirect-www`

Toggle the www→apex 301 redirect for an apex custom domain

MCP tool: `deployment_domain_redirect_www`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |
| enabled | body | boolean | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| kind | string one of: auto, custom | • | — |
| hostname | string | • | — |
| createdAt | string | • | — |
| tlsStatus | string one of: none, pending, issuing, active, failed | • | — |
| updatedAt | string | • | — |
| lastProbeAt | string | null | • | — |
| redirectWww | boolean | • | — |
| wwwTlsStatus | string one of: none, pending, issuing, active, failed | • | — |
| environmentId | string (uuid) | • | — |
| routingStatus | string one of: provisioning, propagating, active, failed | • | — |
| lastProbeError | string | null | • | — |
| dnsInstructions | object | null | • | — |
| routingRecordType | string one of: A, CNAME | • | — |
| verificationToken | string | null | • | — |
| verificationStatus | string one of: pending_dns, verified, dns_failed | • | — |
| lastVerificationError | object | null | • | — |
| lastVerificationCheckAt | string | null | • | — |
| tlsCertificateExpiresAt | string | null | • | — |

### `POST` `/deployment/domains/:id/verify`

Force an out-of-band DNS verification check for a custom domain

MCP tool: `deployment_domain_verify`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| kind | string one of: auto, custom | • | — |
| hostname | string | • | — |
| createdAt | string | • | — |
| tlsStatus | string one of: none, pending, issuing, active, failed | • | — |
| updatedAt | string | • | — |
| lastProbeAt | string | null | • | — |
| redirectWww | boolean | • | — |
| wwwTlsStatus | string one of: none, pending, issuing, active, failed | • | — |
| environmentId | string (uuid) | • | — |
| routingStatus | string one of: provisioning, propagating, active, failed | • | — |
| lastProbeError | string | null | • | — |
| dnsInstructions | object | null | • | — |
| routingRecordType | string one of: A, CNAME | • | — |
| verificationToken | string | null | • | — |
| verificationStatus | string one of: pending_dns, verified, dns_failed | • | — |
| lastVerificationError | object | null | • | — |
| lastVerificationCheckAt | string | null | • | — |
| tlsCertificateExpiresAt | string | null | • | — |

### `GET` `/deployment/environments`

List environments for the current product. Optionally filter by type (persistent or pr-preview).

MCP tool: `deployment_environment_list`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| type | query | string one of: persistent, pr-preview | — | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| name | string | • | — |
| slug | string | • | — |
| type | string one of: persistent, pr-preview | • | — |
| status | string one of: provisioning, ready, provisioning_failed, deprovisioning, deprovisioning_failed | • | — |
| prBranch | string | null | • | — |
| prNumber | integer | null | • | — |
| createdAt | string | • | — |
| expiresAt | string | null | • | — |
| updatedAt | string | • | — |
| isProduction | boolean | • | — |
| lastErrorMessage | string | null | • | — |
| baseEnvironmentId | string (uuid) | null | • | — |

### `POST` `/deployment/environments`

Create a new environment

MCP tool: `deployment_environment_create`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| name | body | string | • | — |
| slug | body | string | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| name | string | • | — |
| slug | string | • | — |
| type | string one of: persistent, pr-preview | • | — |
| status | string one of: provisioning, ready, provisioning_failed, deprovisioning, deprovisioning_failed | • | — |
| prBranch | string | null | • | — |
| prNumber | integer | null | • | — |
| createdAt | string | • | — |
| expiresAt | string | null | • | — |
| updatedAt | string | • | — |
| isProduction | boolean | • | — |
| lastErrorMessage | string | null | • | — |
| baseEnvironmentId | string (uuid) | null | • | — |

### `GET` `/deployment/environments/:environmentId/alert-events`

List recent alert firing/resolved events in an environment

MCP tool: `deployment_alert_events_list`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| environmentId | path | string (uuid) | • | — |
| limit | query | integer | — | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| type | string one of: firing, resolved | • | — |
| value | number | • | — |
| metric | string one of: cpu, memory, net_in, net_out, disk | • | — |
| ruleId | string | • | — |
| targetId | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| threshold | number | • | — |
| targetKind | string one of: service, managed-service | • | — |

### `GET` `/deployment/environments/:environmentId/alerts`

List alert rules in an environment

MCP tool: `deployment_alert_list`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| environmentId | path | string (uuid) | • | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| state | string one of: ok, firing | • | — |
| metric | string one of: cpu, memory, net_in, net_out, disk | • | — |
| enabled | boolean | • | — |
| targetId | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| threshold | number | • | — |
| updatedAt | string | • | — |
| comparator | string one of: gt, lt | • | — |
| targetKind | string one of: service, managed-service | • | — |
| environmentId | string | • | — |
| lastEvaluatedAt | string | null | • | — |
| lastStateChangeAt | string | null | • | — |

### `GET` `/deployment/environments/:environmentId/canvas`

Get canvas state (nodes + services) for an environment

MCP tool: `deployment_canvas_get`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| environmentId | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| edges | object[] | • | — |
| nodes | object[] | • | — |
| services | object[] | • | — |
| environmentId | string (uuid) | • | — |

### `PUT` `/deployment/environments/:environmentId/canvas/nodes/:nodeId`

Update position/size of a canvas node

MCP tool: `deployment_canvas_move_node`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| environmentId | path | string (uuid) | • | — |
| nodeId | path | string (uuid) | • | — |
| x | body | number | — | — |
| y | body | number | — | — |
| width | body | number | — | — |
| height | body | number | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| x | number | • | — |
| y | number | • | — |
| id | string (uuid) | • | — |
| width | number | null | • | — |
| height | number | null | • | — |
| nodeId | string (uuid) | • | — |
| nodeKind | string one of: service, volume, managed-service, cloud-sql | • | — |
| createdAt | string | • | — |
| updatedAt | string | • | — |

### `GET` `/deployment/environments/:environmentId/domains`

List domains for an environment (auto + custom)

MCP tool: `deployment_domain_list`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| environmentId | path | string (uuid) | • | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| kind | string one of: auto, custom | • | — |
| hostname | string | • | — |
| createdAt | string | • | — |
| tlsStatus | string one of: none, pending, issuing, active, failed | • | — |
| updatedAt | string | • | — |
| lastProbeAt | string | null | • | — |
| redirectWww | boolean | • | — |
| wwwTlsStatus | string one of: none, pending, issuing, active, failed | • | — |
| environmentId | string (uuid) | • | — |
| routingStatus | string one of: provisioning, propagating, active, failed | • | — |
| lastProbeError | string | null | • | — |
| dnsInstructions | object | null | • | — |
| routingRecordType | string one of: A, CNAME | • | — |
| verificationToken | string | null | • | — |
| verificationStatus | string one of: pending_dns, verified, dns_failed | • | — |
| lastVerificationError | object | null | • | — |
| lastVerificationCheckAt | string | null | • | — |
| tlsCertificateExpiresAt | string | null | • | — |

### `POST` `/deployment/environments/:environmentId/domains`

Register a custom domain for an environment; returns CNAME+TXT DNS instructions

MCP tool: `deployment_domain_add`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| environmentId | path | string (uuid) | • | — |
| hostname | body | string | • | — |
| defaultServiceId | body | string (uuid) | • | — |
| pathPrefix | body | string | — | — |
| redirectWww | body | boolean | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| kind | string one of: auto, custom | • | — |
| routes | object[] | • | — |
| hostname | string | • | — |
| createdAt | string | • | — |
| tlsStatus | string one of: none, pending, issuing, active, failed | • | — |
| updatedAt | string | • | — |
| lastProbeAt | string | null | • | — |
| redirectWww | boolean | • | — |
| wwwTlsStatus | string one of: none, pending, issuing, active, failed | • | — |
| environmentId | string (uuid) | • | — |
| routingStatus | string one of: provisioning, propagating, active, failed | • | — |
| lastProbeError | string | null | • | — |
| dnsInstructions | object | null | • | — |
| routingRecordType | string one of: A, CNAME | • | — |
| verificationToken | string | null | • | — |
| verificationStatus | string one of: pending_dns, verified, dns_failed | • | — |
| lastVerificationError | object | null | • | — |
| lastVerificationCheckAt | string | null | • | — |
| tlsCertificateExpiresAt | string | null | • | — |

### `GET` `/deployment/environments/:environmentId/events`

List deploy events for an environment, newest first

MCP tool: `deployment_events_list_by_environment`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| environmentId | path | string (uuid) | • | — |
| type | query | string one of: deployment.queued, deployment.build.started, deployment.build.succeeded, deployment.build.failed, deployment.deploying, deployment.variable.ignored, deployment.healthcheck.passed, deployment.healthcheck.failed, deployment.healthy, deployment.failed, deployment.replaced, deployment.sourcemaps.uploaded, deployment.sourcemaps.upload-failed, deployment.requeue-failed, deployment.release.started, deployment.release.log, deployment.release.succeeded, deployment.release.failed, replica.restarted, service.scaled, service.restarted, service.restart-failed, domain.verified, domain.tls.issued, domain.tls.failed, domain.www-tls.issued, domain.www-tls.failed, domain.routing.active, domain.routing.failed, domain.removed, domain.governance.mirror-failed, service.slept, service.woke, service.wake_failed, service.sleep-enabled, service.sleep-disabled, service.sleep-enable-failed, cloud-sql.instance.stopped, cloud-sql.instance.started, cloud-sql.instance.stop-failed, cloud-sql.instance.start-failed, suspension.workload-stopped, suspension.workload-restored, managed-service.restarted, managed-service.port-leak-healed | — | — |
| since | query | string (date-time) | — | — |
| until | query | string (date-time) | — | — |
| limit | query | integer | — | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| type | string one of: deployment.queued, deployment.build.started, deployment.build.succeeded, deployment.build.failed, deployment.deploying, deployment.variable.ignored, deployment.healthcheck.passed, deployment.healthcheck.failed, deployment.healthy, deployment.failed, deployment.replaced, deployment.sourcemaps.uploaded, deployment.sourcemaps.upload-failed, deployment.requeue-failed, deployment.release.started, deployment.release.log, deployment.release.succeeded, deployment.release.failed, replica.restarted, service.scaled, service.restarted, service.restart-failed, domain.verified, domain.tls.issued, domain.tls.failed, domain.www-tls.issued, domain.www-tls.failed, domain.routing.active, domain.routing.failed, domain.removed, domain.governance.mirror-failed, service.slept, service.woke, service.wake_failed, service.sleep-enabled, service.sleep-disabled, service.sleep-enable-failed, cloud-sql.instance.stopped, cloud-sql.instance.started, cloud-sql.instance.stop-failed, cloud-sql.instance.start-failed, suspension.workload-stopped, suspension.workload-restored, managed-service.restarted, managed-service.port-leak-healed | • | — |
| payload | object | • | — |
| domainId | string | null | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| serviceId | string | null | • | — |
| deploymentId | string | null | • | — |
| environmentId | string | null | • | — |

### `GET` `/deployment/environments/:environmentId/managed-services`

List managed services in an environment

MCP tool: `deployment_managed_service_list`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| environmentId | path | string (uuid) | • | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| engine | string one of: postgres, redis, mysql, mongodb | • | — |
| status | string | • | — |
| version | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| storageGiB | number | • | — |
| backupPolicy | object | • | — |
| databaseName | string | null | • | — |
| lastBackupAt | string | null | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | null | • | — |

### `POST` `/deployment/environments/:environmentId/managed-services`

Provision a managed service (e.g. Postgres, Redis) inside an environment

MCP tool: `deployment_managed_service_provision`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| environmentId | path | string (uuid) | • | — |
| name | body | string | • | — |
| slug | body | string | — | — |
| engine | body | string one of: postgres, redis, mysql, mongodb | • | — |
| version | body | string | — | — |
| storageGiB | body | integer | — | — |
| databaseName | body | string | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| engine | string one of: postgres, redis, mysql, mongodb | • | — |
| status | string | • | — |
| version | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| storageGiB | number | • | — |
| backupPolicy | object | • | — |
| databaseName | string | null | • | — |
| lastBackupAt | string | null | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | null | • | — |

### `GET` `/deployment/environments/:environmentId/services`

List services within an environment

MCP tool: `deployment_service_list`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| environmentId | path | string (uuid) | • | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| mode | string | — | — |
| name | string | • | — |
| slug | string | • | — |
| probes | object | • | — |
| source | object | • | — |
| command | string | null | — | — |
| lastRun | object | null | — | — |
| tracing | string | — | — |
| replicas | integer | • | — |
| schedule | string | null | — | — |
| createdAt | string | • | — |
| dependsOn | string[] | • | — |
| nextRunAt | string | null | — | — |
| resources | object | — | — |
| updatedAt | string | • | — |
| autoDeploy | boolean | — | — |
| sleepState | string one of: awake, sleeping, waking, stopped, wake_failed | • | — |
| idleMinutes | integer | • | — |
| scaleToZero | boolean | • | — |
| containerPort | integer | • | — |
| environmentId | string (uuid) | • | — |
| jobTimeoutSec | integer | — | — |
| jobConcurrency | string | — | — |
| buildMachineType | string | null | — | — |
| scheduleSuspended | boolean | — | — |
| suspendedByBilling | boolean | — | — |
| lastReplicasRunning | integer | • | — |
| scaleToZeroEligibility | object | — | — |

### `POST` `/deployment/environments/:environmentId/services`

Create a service inside an environment. mode:'persistent' (the default) is a container kept running; mode:'scheduled' is a job that runs a command and exits. A scheduled service takes schedule (a five-field UTC cron expression — minute hour day-of-month month day-of-week — or null for a job that only ever runs on demand), command (the shell command one run executes), jobTimeoutSec, and jobConcurrency ('forbid' | 'allow' | 'replace'), and accepts no containerPort, replicas or scaleToZero. mode is immutable after create.

MCP tool: `deployment_service_create`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| environmentId | path | string (uuid) | • | — |
| name | body | string | • | — |
| slug | body | string | — | — |
| source | body | object | • | — |
| containerPort | body | integer | — | — |
| replicas | body | integer | — | — |
| probes | body | object | — | — |
| resources | body | object | — | — |
| tracing | body | string one of: off, node, python | — | OTel SDK to inject into this service's pods: 'off' (none), 'node' or 'python'. Read when a deploy builds the workload — takes effect on the next deploy, running pods are untouched. |
| canvas | body | object | — | — |
| mode | body | string one of: persistent, scheduled | — | 'persistent' (a long-running Deployment behind a Service — the default) or 'scheduled' (a k8s CronJob: no port, no replicas, no route). Immutable after create. |
| schedule | body | string | null | — | Five-field UTC cron expression (minute hour day-of-month month day-of-week), or null for a scheduled service with no schedule yet. |
| command | body | string | null | — | Shell command a scheduled run executes (`/bin/sh -c <command>`). Scheduled services only; omit it to run the image entrypoint. `null` clears a command that was set and returns the run to the image entrypoint. |
| jobTimeoutSec | body | integer | — | Wall-clock budget for one run, in seconds (60..86400). Becomes the Job activeDeadlineSeconds — an overrunning run is killed, not left going. |
| jobConcurrency | body | string one of: forbid, allow, replace | — | What happens when a run is still going at the next tick: 'forbid' (skip the tick), 'allow' (run in parallel) or 'replace' (kill the running one). |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| mode | string | — | — |
| name | string | • | — |
| slug | string | • | — |
| probes | object | • | — |
| source | object | • | — |
| command | string | null | — | — |
| lastRun | object | null | — | — |
| tracing | string | — | — |
| replicas | integer | • | — |
| schedule | string | null | — | — |
| createdAt | string | • | — |
| dependsOn | string[] | • | — |
| nextRunAt | string | null | — | — |
| resources | object | — | — |
| updatedAt | string | • | — |
| autoDeploy | boolean | — | — |
| sleepState | string one of: awake, sleeping, waking, stopped, wake_failed | • | — |
| idleMinutes | integer | • | — |
| scaleToZero | boolean | • | — |
| containerPort | integer | • | — |
| environmentId | string (uuid) | • | — |
| jobTimeoutSec | integer | — | — |
| jobConcurrency | string | — | — |
| buildMachineType | string | null | — | — |
| scheduleSuspended | boolean | — | — |
| suspendedByBilling | boolean | — | — |
| lastReplicasRunning | integer | • | — |
| scaleToZeroEligibility | object | — | — |

### `GET` `/deployment/environments/:environmentId/variables`

List environment-scope (shared) variables

MCP tool: `deployment_variable_list_env`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| environmentId | path | string (uuid) | • | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| key | string | • | — |
| scope | string one of: service, environment, product | • | — |
| value | string | null | • | — |
| isSecret | boolean | • | — |
| createdAt | string | • | — |
| serviceId | string (uuid) | null | • | — |
| updatedAt | string | • | — |
| environmentId | string (uuid) | null | • | — |

### `DELETE` `/deployment/environments/:environmentId/variables/:key`

Delete an environment-scope variable by key

MCP tool: `deployment_variable_unset_env`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| environmentId | path | string (uuid) | • | — |
| key | path | string | • | — |

### `PUT` `/deployment/environments/:environmentId/variables/:key`

Create or update an environment-scope shared variable

MCP tool: `deployment_variable_set_env`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| environmentId | path | string (uuid) | • | — |
| key | path | string | • | — |
| value | body | string | • | — |
| isSecret | body | boolean | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| key | string | • | — |
| scope | string one of: service, environment, product | • | — |
| value | string | null | • | — |
| isSecret | boolean | • | — |
| createdAt | string | • | — |
| serviceId | string (uuid) | null | • | — |
| updatedAt | string | • | — |
| environmentId | string (uuid) | null | • | — |

### `GET` `/deployment/environments/:environmentId/volumes`

List volumes in environment

MCP tool: `deployment_volume_list`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| environmentId | path | string (uuid) | • | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| name | string | • | — |
| slug | string | • | — |
| sizeGb | integer | • | — |
| status | string one of: provisioning, ready, detached, failed | • | — |
| createdAt | string | • | — |
| mountPath | string | • | — |
| updatedAt | string | • | — |
| environmentId | string (uuid) | • | — |
| lastErrorMessage | string | null | • | — |
| attachedServiceId | string (uuid) | null | • | — |

### `POST` `/deployment/environments/:environmentId/volumes`

Create a volume

MCP tool: `deployment_volume_create`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| environmentId | path | string (uuid) | • | — |
| name | body | string | • | — |
| slug | body | string | — | — |
| sizeGb | body | integer | • | — |
| mountPath | body | string | • | — |
| attachedServiceId | body | string (uuid) | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| name | string | • | — |
| slug | string | • | — |
| sizeGb | integer | • | — |
| status | string one of: provisioning, ready, detached, failed | • | — |
| createdAt | string | • | — |
| mountPath | string | • | — |
| updatedAt | string | • | — |
| environmentId | string (uuid) | • | — |
| lastErrorMessage | string | null | • | — |
| attachedServiceId | string (uuid) | null | • | — |

### `DELETE` `/deployment/environments/:id`

Delete an environment (production cannot be deleted)

MCP tool: `deployment_environment_delete`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

### `GET` `/deployment/environments/:id`

Get a single environment by id

MCP tool: `deployment_environment_get`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| name | string | • | — |
| slug | string | • | — |
| type | string one of: persistent, pr-preview | • | — |
| status | string one of: provisioning, ready, provisioning_failed, deprovisioning, deprovisioning_failed | • | — |
| prBranch | string | null | • | — |
| prNumber | integer | null | • | — |
| createdAt | string | • | — |
| expiresAt | string | null | • | — |
| updatedAt | string | • | — |
| isProduction | boolean | • | — |
| lastErrorMessage | string | null | • | — |
| baseEnvironmentId | string (uuid) | null | • | — |

### `PATCH` `/deployment/environments/:id`

Update an environment (name is the only updatable field)

MCP tool: `deployment_environment_update`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| name | body | string | — | — |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| name | string | • | — |
| slug | string | • | — |
| type | string one of: persistent, pr-preview | • | — |
| status | string one of: provisioning, ready, provisioning_failed, deprovisioning, deprovisioning_failed | • | — |
| prBranch | string | null | • | — |
| prNumber | integer | null | • | — |
| createdAt | string | • | — |
| expiresAt | string | null | • | — |
| updatedAt | string | • | — |
| isProduction | boolean | • | — |
| lastErrorMessage | string | null | • | — |
| baseEnvironmentId | string (uuid) | null | • | — |

### `POST` `/deployment/environments/:id/reconcile`

Re-emit the provision or deprovision workflow for an environment, with optional force-finalizer-strip on deprovision

MCP tool: `deployment_environment_reconcile`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |
| force | body | boolean | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| name | string | • | — |
| slug | string | • | — |
| type | string one of: persistent, pr-preview | • | — |
| status | string one of: provisioning, ready, provisioning_failed, deprovisioning, deprovisioning_failed | • | — |
| prBranch | string | null | • | — |
| prNumber | integer | null | • | — |
| createdAt | string | • | — |
| expiresAt | string | null | • | — |
| updatedAt | string | • | — |
| isProduction | boolean | • | — |
| lastErrorMessage | string | null | • | — |
| baseEnvironmentId | string (uuid) | null | • | — |

### `POST` `/deployment/environments/fork`

Fork an environment: deep-clone services, variables (not secrets), domains, and volumes from a base environment

MCP tool: `deployment_environment_fork`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| baseEnvironmentId | body | string (uuid) | • | — |
| name | body | string | • | — |
| slug | body | string | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| name | string | • | — |
| slug | string | • | — |
| type | string one of: persistent, pr-preview | • | — |
| status | string one of: provisioning, ready, provisioning_failed, deprovisioning, deprovisioning_failed | • | — |
| prBranch | string | null | • | — |
| prNumber | integer | null | • | — |
| createdAt | string | • | — |
| expiresAt | string | null | • | — |
| updatedAt | string | • | — |
| isProduction | boolean | • | — |
| lastErrorMessage | string | null | • | — |
| baseEnvironmentId | string (uuid) | null | • | — |

### `GET` `/deployment/governance/domains`

List Governance-approved base domains the product may add subdomains of

MCP tool: `deployment_domain_allowed_list`

**Parameters**

No parameters.

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| domains | object[] | • | — |

### `GET` `/deployment/managed-service-types`

List available managed service engines and versions

MCP tool: `deployment_managed_service_types`

**Parameters**

No parameters.

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| engines | object[] | • | — |

### `DELETE` `/deployment/managed-services/:id`

Delete a managed service (soft-delete, triggers deprovisioning)

MCP tool: `deployment_managed_service_delete`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| engine | string one of: postgres, redis, mysql, mongodb | • | — |
| status | string | • | — |
| version | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| storageGiB | number | • | — |
| backupPolicy | object | • | — |
| databaseName | string | null | • | — |
| lastBackupAt | string | null | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | null | • | — |

### `GET` `/deployment/managed-services/:id`

Get a managed service by id

MCP tool: `deployment_managed_service_get`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| engine | string one of: postgres, redis, mysql, mongodb | • | — |
| status | string | • | — |
| version | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| storageGiB | number | • | — |
| backupPolicy | object | • | — |
| databaseName | string | null | • | — |
| lastBackupAt | string | null | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | null | • | — |

### `POST` `/deployment/managed-services/:id/backup`

Create a backup snapshot of a managed service

MCP tool: `deployment_managed_service_backup`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| engine | string one of: postgres, redis, mysql, mongodb | • | — |
| status | string | • | — |
| version | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| storageGiB | number | • | — |
| backupPolicy | object | • | — |
| databaseName | string | null | • | — |
| lastBackupAt | string | null | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | null | • | — |

### `GET` `/deployment/managed-services/:id/backups`

List backup snapshots for a managed service

MCP tool: `deployment_managed_service_backup_list`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| name | string | • | — |
| pvcName | string | • | — |
| createdAt | string | • | — |
| readyToUse | boolean | • | — |
| restoreSize | string | null | • | — |

### `GET` `/deployment/managed-services/:id/connect-info`

Get connection info and variable reference syntax for a managed service

MCP tool: `deployment_managed_service_connect_info`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| slug | string | • | — |
| vars | object[] | • | — |
| engine | string one of: postgres, redis, mysql, mongodb | • | — |

### `GET` `/deployment/managed-services/:id/logs`

Get pod logs for a managed service

MCP tool: `deployment_managed_service_logs`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |
| tail | query | integer | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| lines | string[] | • | — |

### `POST` `/deployment/managed-services/:id/reconcile`

Retry provisioning of a managed service that failed

MCP tool: `deployment_managed_service_reconcile`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| engine | string one of: postgres, redis, mysql, mongodb | • | — |
| status | string | • | — |
| version | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| storageGiB | number | • | — |
| backupPolicy | object | • | — |
| databaseName | string | null | • | — |
| lastBackupAt | string | null | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | null | • | — |

### `POST` `/deployment/managed-services/:id/resize`

Increase storage size of a managed service (cannot shrink)

MCP tool: `deployment_managed_service_resize`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |
| storageGiB | body | integer | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| engine | string one of: postgres, redis, mysql, mongodb | • | — |
| status | string | • | — |
| version | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| storageGiB | number | • | — |
| backupPolicy | object | • | — |
| databaseName | string | null | • | — |
| lastBackupAt | string | null | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | null | • | — |

### `POST` `/deployment/managed-services/:id/restore`

Restore a managed service from a backup snapshot

MCP tool: `deployment_managed_service_restore`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |
| snapshotName | body | string | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| engine | string one of: postgres, redis, mysql, mongodb | • | — |
| status | string | • | — |
| version | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| storageGiB | number | • | — |
| backupPolicy | object | • | — |
| databaseName | string | null | • | — |
| lastBackupAt | string | null | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | null | • | — |

### `POST` `/deployment/managed-services/:id/start`

Start a stopped managed service

MCP tool: `deployment_managed_service_start`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| engine | string one of: postgres, redis, mysql, mongodb | • | — |
| status | string | • | — |
| version | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| storageGiB | number | • | — |
| backupPolicy | object | • | — |
| databaseName | string | null | • | — |
| lastBackupAt | string | null | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | null | • | — |

### `POST` `/deployment/managed-services/:id/stop`

Stop a running managed service

MCP tool: `deployment_managed_service_stop`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| engine | string one of: postgres, redis, mysql, mongodb | • | — |
| status | string | • | — |
| version | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| storageGiB | number | • | — |
| backupPolicy | object | • | — |
| databaseName | string | null | • | — |
| lastBackupAt | string | null | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | null | • | — |

### `GET` `/deployment/metrics`

Get metric time series for a service or managed service over a fixed window (15m/1h/6h/24h/7d). Services return resource metrics (cpu, memory, net_in, net_out) plus HTTP metrics (rps, p50, p95, p99, error_rate); managed services return cpu, memory, net_in, net_out, disk.

MCP tool: `deployment_metrics_get`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| targetKind | query | string one of: service, managed-service | • | — |
| targetId | query | string (uuid) | • | — |
| window | query | string one of: 15m, 1h, 6h, 24h, 7d | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| series | object[] | • | — |
| window | string one of: 15m, 1h, 6h, 24h, 7d | • | — |
| capacity | object | • | — |
| targetId | string | • | — |
| targetKind | string one of: service, managed-service | • | — |
| stepSeconds | number | • | — |

### `GET` `/deployment/preview-environments`

List all preview environments

MCP tool: `deployment_preview_environment_list`

**Parameters**

No parameters.

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| name | string | • | — |
| slug | string | • | — |
| type | string one of: persistent, pr-preview | • | — |
| status | string one of: provisioning, ready, provisioning_failed, deprovisioning, deprovisioning_failed | • | — |
| prBranch | string | null | • | — |
| prNumber | integer | null | • | — |
| createdAt | string | • | — |
| expiresAt | string | null | • | — |
| updatedAt | string | • | — |
| isProduction | boolean | • | — |
| lastErrorMessage | string | null | • | — |
| baseEnvironmentId | string (uuid) | null | • | — |

### `POST` `/deployment/preview-environments`

Create a preview environment from an open PR

MCP tool: `deployment_preview_environment_create`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| baseEnvironmentId | body | string (uuid) | • | — |
| prNumber | body | integer | • | — |
| prBranch | body | string | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| name | string | • | — |
| slug | string | • | — |
| type | string one of: persistent, pr-preview | • | — |
| status | string one of: provisioning, ready, provisioning_failed, deprovisioning, deprovisioning_failed | • | — |
| prBranch | string | null | • | — |
| prNumber | integer | null | • | — |
| createdAt | string | • | — |
| expiresAt | string | null | • | — |
| updatedAt | string | • | — |
| isProduction | boolean | • | — |
| lastErrorMessage | string | null | • | — |
| baseEnvironmentId | string (uuid) | null | • | — |

### `DELETE` `/deployment/preview-environments/:id`

Delete a preview environment immediately

MCP tool: `deployment_preview_environment_delete`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

### `GET` `/deployment/preview-policies/:baseEnvironmentId`

Get preview policy for a base environment (returns defaults if none configured)

MCP tool: `deployment_preview_policy_get`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| baseEnvironmentId | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| enabled | boolean | • | — |
| ttlHours | number | • | — |
| createdAt | string | • | — |
| updatedAt | string | • | — |
| maxPreviews | number | • | — |
| baseEnvironmentId | string (uuid) | • | — |

### `PUT` `/deployment/preview-policies/:baseEnvironmentId`

Configure preview policy for a base environment (enabled, maxPreviews, ttlHours)

MCP tool: `deployment_preview_policy_set`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| baseEnvironmentId | path | string (uuid) | • | — |
| enabled | body | boolean | — | — |
| maxPreviews | body | integer | — | — |
| ttlHours | body | integer | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| enabled | boolean | • | — |
| ttlHours | number | • | — |
| createdAt | string | • | — |
| updatedAt | string | • | — |
| maxPreviews | number | • | — |
| baseEnvironmentId | string (uuid) | • | — |

### `GET` `/deployment/product/suspension`

Get the product's billing-suspension state (stage, reason, grace deadline) and whether enforcement is active

MCP tool: `deployment_suspension_get`

**Parameters**

No parameters.

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| stage | string | null one of: warned, production_grace, stopped, cleared | • | — |
| reason | string | null | • | — |
| changedAt | string | null | • | — |
| graceDeadline | string | null | • | — |
| enforcementEnabled | boolean | • | — |

### `GET` `/deployment/product/variables`

List product-scope (global) variables

MCP tool: `deployment_variable_list_product`

**Parameters**

No parameters.

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| key | string | • | — |
| scope | string one of: service, environment, product | • | — |
| value | string | null | • | — |
| isSecret | boolean | • | — |
| createdAt | string | • | — |
| serviceId | string (uuid) | null | • | — |
| updatedAt | string | • | — |
| environmentId | string (uuid) | null | • | — |

### `DELETE` `/deployment/product/variables/:key`

Delete a product-scope variable by key

MCP tool: `deployment_variable_unset_product`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| key | path | string | • | — |

### `PUT` `/deployment/product/variables/:key`

Create or update a product-scope global variable

MCP tool: `deployment_variable_set_product`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| key | path | string | • | — |
| value | body | string | • | — |
| isSecret | body | boolean | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| key | string | • | — |
| scope | string one of: service, environment, product | • | — |
| value | string | null | • | — |
| isSecret | boolean | • | — |
| createdAt | string | • | — |
| serviceId | string (uuid) | null | • | — |
| updatedAt | string | • | — |
| environmentId | string (uuid) | null | • | — |

### `DELETE` `/deployment/services/:id`

Delete a service

MCP tool: `deployment_service_delete`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

### `GET` `/deployment/services/:id`

Get a single service by id. A scheduled service (mode:'scheduled') also reports nextRunAt and lastRun — when it fires next and how its most recent run ended.

MCP tool: `deployment_service_get`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| mode | string | — | — |
| name | string | • | — |
| slug | string | • | — |
| probes | object | • | — |
| source | object | • | — |
| command | string | null | — | — |
| lastRun | object | null | — | — |
| tracing | string | — | — |
| replicas | integer | • | — |
| schedule | string | null | — | — |
| createdAt | string | • | — |
| dependsOn | string[] | • | — |
| nextRunAt | string | null | — | — |
| resources | object | — | — |
| updatedAt | string | • | — |
| autoDeploy | boolean | — | — |
| sleepState | string one of: awake, sleeping, waking, stopped, wake_failed | • | — |
| idleMinutes | integer | • | — |
| scaleToZero | boolean | • | — |
| containerPort | integer | • | — |
| environmentId | string (uuid) | • | — |
| jobTimeoutSec | integer | — | — |
| jobConcurrency | string | — | — |
| buildMachineType | string | null | — | — |
| scheduleSuspended | boolean | — | — |
| suspendedByBilling | boolean | — | — |
| lastReplicasRunning | integer | • | — |
| scaleToZeroEligibility | object | — | — |

### `PATCH` `/deployment/services/:id`

Update service fields. mode is immutable. On a scheduled service (mode:'scheduled') you may change schedule (five-field UTC cron, or null to leave it on demand only), command, jobTimeoutSec, jobConcurrency ('forbid' | 'allow' | 'replace'), and scheduleSuspended, which pauses or resumes the schedule without losing it.

MCP tool: `deployment_service_update`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| name | body | string | — | — |
| source | body | object | — | — |
| containerPort | body | integer | — | — |
| replicas | body | integer | — | — |
| probes | body | object | — | — |
| resources | body | object | — | — |
| scaleToZero | body | boolean | — | — |
| idleMinutes | body | integer | — | — |
| buildMachineType | body | string | null one of: E2_MEDIUM, E2_HIGHCPU_8 | — | — |
| tracing | body | string one of: off, node, python | — | OTel SDK to inject into this service's pods: 'off' (none), 'node' or 'python'. Read when a deploy builds the workload — takes effect on the next deploy, running pods are untouched. |
| autoDeploy | body | boolean | — | Whether a push to this service's repo+branch queues a deploy. Default true. Turning it off suppresses push-triggered deploys only — manual and API-triggered deploys still work. Applies to git and static sources alike; the UI toggle is currently git-only, so a static service is switched through this field. |
| schedule | body | string | null | — | Five-field UTC cron expression (minute hour day-of-month month day-of-week), or null for a scheduled service with no schedule yet. |
| scheduleSuspended | body | boolean | — | Pause or resume a scheduled service without losing its schedule. |
| command | body | string | null | — | Shell command a scheduled run executes (`/bin/sh -c <command>`). Scheduled services only; omit it to run the image entrypoint. `null` clears a command that was set and returns the run to the image entrypoint. |
| jobTimeoutSec | body | integer | — | Wall-clock budget for one run, in seconds (60..86400). Becomes the Job activeDeadlineSeconds — an overrunning run is killed, not left going. |
| jobConcurrency | body | string one of: forbid, allow, replace | — | What happens when a run is still going at the next tick: 'forbid' (skip the tick), 'allow' (run in parallel) or 'replace' (kill the running one). |
| mode | body | string | — | — |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| mode | string | — | — |
| name | string | • | — |
| slug | string | • | — |
| probes | object | • | — |
| source | object | • | — |
| command | string | null | — | — |
| lastRun | object | null | — | — |
| tracing | string | — | — |
| replicas | integer | • | — |
| schedule | string | null | — | — |
| createdAt | string | • | — |
| dependsOn | string[] | • | — |
| nextRunAt | string | null | — | — |
| resources | object | — | — |
| updatedAt | string | • | — |
| autoDeploy | boolean | — | — |
| sleepState | string one of: awake, sleeping, waking, stopped, wake_failed | • | — |
| idleMinutes | integer | • | — |
| scaleToZero | boolean | • | — |
| containerPort | integer | • | — |
| environmentId | string (uuid) | • | — |
| jobTimeoutSec | integer | — | — |
| jobConcurrency | string | — | — |
| buildMachineType | string | null | — | — |
| scheduleSuspended | boolean | — | — |
| suspendedByBilling | boolean | — | — |
| lastReplicasRunning | integer | • | — |
| scaleToZeroEligibility | object | — | — |

### `POST` `/deployment/services/:id/restart`

Trigger a rolling restart of a service without changing the deployed image

MCP tool: `deployment_service_restart`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

### `POST` `/deployment/services/:id/scale`

Scale a service to N replicas without redeploy (min 0 = stop)

MCP tool: `deployment_service_scale`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |
| replicas | body | integer | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| mode | string | — | — |
| name | string | • | — |
| slug | string | • | — |
| probes | object | • | — |
| source | object | • | — |
| command | string | null | — | — |
| lastRun | object | null | — | — |
| tracing | string | — | — |
| replicas | integer | • | — |
| schedule | string | null | — | — |
| createdAt | string | • | — |
| dependsOn | string[] | • | — |
| nextRunAt | string | null | — | — |
| resources | object | — | — |
| updatedAt | string | • | — |
| autoDeploy | boolean | — | — |
| sleepState | string one of: awake, sleeping, waking, stopped, wake_failed | • | — |
| idleMinutes | integer | • | — |
| scaleToZero | boolean | • | — |
| containerPort | integer | • | — |
| environmentId | string (uuid) | • | — |
| jobTimeoutSec | integer | — | — |
| jobConcurrency | string | — | — |
| buildMachineType | string | null | — | — |
| scheduleSuspended | boolean | — | — |
| suspendedByBilling | boolean | — | — |
| lastReplicasRunning | integer | • | — |
| scaleToZeroEligibility | object | — | — |

### `POST` `/deployment/services/:id/wake`

Wake a sleeping (scale-to-zero) service

MCP tool: `deployment_service_wake`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

### `GET` `/deployment/services/:serviceId/builds`

List builds for a service, newest first

MCP tool: `deployment_build_list`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| serviceId | path | string (uuid) | • | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| status | string one of: Initializing, Building, Deploying, Active, Replaced, Crashed, Completed, Failed, Removed | • | — |
| builtAt | string | null | • | — |
| imageRef | string | null | • | — |
| commitSha | string | null | • | — |
| createdAt | string | • | — |
| serviceId | string (uuid) | • | — |
| startedAt | string | null | • | — |
| finishedAt | string | null | • | — |
| cloudBuildId | string | null | • | — |
| lastErrorMessage | string | null | • | — |

### `POST` `/deployment/services/:serviceId/cancel`

Cancel a non-terminal deployment, releasing the in-progress lock so the service can deploy again

MCP tool: `deployment_deployment_cancel`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| serviceId | path | string (uuid) | • | — |
| deploymentId | body | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| status | string one of: Initializing, Building, Deploying, Active, Replaced, Crashed, Completed, Failed, Removed, Sleeping, Stopped, WakeFailed | • | — |
| builtAt | string | null | • | — |
| imageRef | string | null | • | — |
| commitSha | string | null | • | — |
| createdAt | string | • | — |
| serviceId | string (uuid) | • | — |
| startedAt | string | null | • | — |
| updatedAt | string | • | — |
| deployedAt | string | null | • | — |
| finishedAt | string | null | • | — |
| cloudBuildId | string | null | • | — |
| configSnapshot | object | • | — |
| lastErrorMessage | string | null | • | — |
| rolledBackFromDeploymentId | string (uuid) | null | • | — |

### `GET` `/deployment/services/:serviceId/deployments`

List deployments for a service (newest first)

MCP tool: `deployment_deployment_list`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| serviceId | path | string (uuid) | • | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| status | string one of: Initializing, Building, Deploying, Active, Replaced, Crashed, Completed, Failed, Removed, Sleeping, Stopped, WakeFailed | • | — |
| builtAt | string | null | • | — |
| imageRef | string | null | • | — |
| commitSha | string | null | • | — |
| createdAt | string | • | — |
| serviceId | string (uuid) | • | — |
| startedAt | string | null | • | — |
| updatedAt | string | • | — |
| deployedAt | string | null | • | — |
| finishedAt | string | null | • | — |
| cloudBuildId | string | null | • | — |
| configSnapshot | object | • | — |
| lastErrorMessage | string | null | • | — |
| rolledBackFromDeploymentId | string (uuid) | null | • | — |

### `GET` `/deployment/services/:serviceId/deployments/:deploymentId/build-logs`

Snapshot build logs for a deployment (Cloud Logging proxy)

MCP tool: `deployment_build_logs`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| serviceId | path | string (uuid) | • | — |
| deploymentId | path | string (uuid) | • | — |
| tail | query | integer | — | — |
| since | query | string (date-time) | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| lines | object[] | • | — |
| cursor | string | null | • | — |
| complete | boolean | • | — |

### `GET` `/deployment/services/:serviceId/domains`

List domains routed to a service (backward-compat)

MCP tool: `deployment_domain_list_by_service`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| serviceId | path | string (uuid) | • | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| kind | string one of: auto, custom | • | — |
| hostname | string | • | — |
| createdAt | string | • | — |
| tlsStatus | string one of: none, pending, issuing, active, failed | • | — |
| updatedAt | string | • | — |
| lastProbeAt | string | null | • | — |
| redirectWww | boolean | • | — |
| wwwTlsStatus | string one of: none, pending, issuing, active, failed | • | — |
| environmentId | string (uuid) | • | — |
| routingStatus | string one of: provisioning, propagating, active, failed | • | — |
| lastProbeError | string | null | • | — |
| dnsInstructions | object | null | • | — |
| routingRecordType | string one of: A, CNAME | • | — |
| verificationToken | string | null | • | — |
| verificationStatus | string one of: pending_dns, verified, dns_failed | • | — |
| lastVerificationError | object | null | • | — |
| lastVerificationCheckAt | string | null | • | — |
| tlsCertificateExpiresAt | string | null | • | — |

### `GET` `/deployment/services/:serviceId/events`

List deploy events for a service, newest first

MCP tool: `deployment_events_list_by_service`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| serviceId | path | string (uuid) | • | — |
| type | query | string one of: deployment.queued, deployment.build.started, deployment.build.succeeded, deployment.build.failed, deployment.deploying, deployment.variable.ignored, deployment.healthcheck.passed, deployment.healthcheck.failed, deployment.healthy, deployment.failed, deployment.replaced, deployment.sourcemaps.uploaded, deployment.sourcemaps.upload-failed, deployment.requeue-failed, deployment.release.started, deployment.release.log, deployment.release.succeeded, deployment.release.failed, replica.restarted, service.scaled, service.restarted, service.restart-failed, domain.verified, domain.tls.issued, domain.tls.failed, domain.www-tls.issued, domain.www-tls.failed, domain.routing.active, domain.routing.failed, domain.removed, domain.governance.mirror-failed, service.slept, service.woke, service.wake_failed, service.sleep-enabled, service.sleep-disabled, service.sleep-enable-failed, cloud-sql.instance.stopped, cloud-sql.instance.started, cloud-sql.instance.stop-failed, cloud-sql.instance.start-failed, suspension.workload-stopped, suspension.workload-restored, managed-service.restarted, managed-service.port-leak-healed | — | — |
| since | query | string (date-time) | — | — |
| until | query | string (date-time) | — | — |
| limit | query | integer | — | — |
| deploymentId | query | string (uuid) | — | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| type | string one of: deployment.queued, deployment.build.started, deployment.build.succeeded, deployment.build.failed, deployment.deploying, deployment.variable.ignored, deployment.healthcheck.passed, deployment.healthcheck.failed, deployment.healthy, deployment.failed, deployment.replaced, deployment.sourcemaps.uploaded, deployment.sourcemaps.upload-failed, deployment.requeue-failed, deployment.release.started, deployment.release.log, deployment.release.succeeded, deployment.release.failed, replica.restarted, service.scaled, service.restarted, service.restart-failed, domain.verified, domain.tls.issued, domain.tls.failed, domain.www-tls.issued, domain.www-tls.failed, domain.routing.active, domain.routing.failed, domain.removed, domain.governance.mirror-failed, service.slept, service.woke, service.wake_failed, service.sleep-enabled, service.sleep-disabled, service.sleep-enable-failed, cloud-sql.instance.stopped, cloud-sql.instance.started, cloud-sql.instance.stop-failed, cloud-sql.instance.start-failed, suspension.workload-stopped, suspension.workload-restored, managed-service.restarted, managed-service.port-leak-healed | • | — |
| payload | object | • | — |
| domainId | string | null | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| serviceId | string | null | • | — |
| deploymentId | string | null | • | — |
| environmentId | string | null | • | — |

### `POST` `/deployment/services/:serviceId/exec`

Run a command against a service. mode:"exec" (default) execs non-interactively into the first running pod (debugging); mode:"job" runs a one-off Job of the service's current image with its env (migrations). Returns stdout/stderr + exit code as text. command is run via /bin/sh -c.

MCP tool: `deployment_service_exec`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| command | body | string | • | — |
| mode | body | string one of: exec, job | — | — |
| timeoutSec | body | integer | — | — |
| serviceId | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| mode | string one of: exec, job | • | — |
| output | string | • | — |
| stderr | string | • | — |
| stdout | string | • | — |
| target | object | • | — |
| exitCode | integer | • | — |
| timedOut | boolean | • | — |
| truncated | boolean | • | — |

### `GET` `/deployment/services/:serviceId/logs`

Snapshot the last N runtime log lines for a service

MCP tool: `deployment_service_logs`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| serviceId | path | string (uuid) | • | — |
| tail | query | integer | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| lines | string[] | • | — |
| sleepState | string one of: awake, sleeping, waking, stopped, wake_failed | — | — |

### `POST` `/deployment/services/:serviceId/redeploy`

Roll out a new deployment for a service from its current source and variables (runs asynchronously; poll the deployment for status)

MCP tool: `deployment_service_redeploy`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| serviceId | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| status | string one of: Initializing, Building, Deploying, Active, Replaced, Crashed, Completed, Failed, Removed, Sleeping, Stopped, WakeFailed | • | — |
| builtAt | string | null | • | — |
| imageRef | string | null | • | — |
| commitSha | string | null | • | — |
| createdAt | string | • | — |
| serviceId | string (uuid) | • | — |
| startedAt | string | null | • | — |
| updatedAt | string | • | — |
| deployedAt | string | null | • | — |
| finishedAt | string | null | • | — |
| cloudBuildId | string | null | • | — |
| configSnapshot | object | • | — |
| lastErrorMessage | string | null | • | — |
| rolledBackFromDeploymentId | string (uuid) | null | • | — |

### `POST` `/deployment/services/:serviceId/rollback`

Roll back a service to a previous deployment by re-deploying its imageRef

MCP tool: `deployment_service_rollback`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| serviceId | path | string (uuid) | • | — |
| deploymentId | body | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| status | string one of: Initializing, Building, Deploying, Active, Replaced, Crashed, Completed, Failed, Removed, Sleeping, Stopped, WakeFailed | • | — |
| builtAt | string | null | • | — |
| imageRef | string | null | • | — |
| commitSha | string | null | • | — |
| createdAt | string | • | — |
| serviceId | string (uuid) | • | — |
| startedAt | string | null | • | — |
| updatedAt | string | • | — |
| deployedAt | string | null | • | — |
| finishedAt | string | null | • | — |
| cloudBuildId | string | null | • | — |
| configSnapshot | object | • | — |
| lastErrorMessage | string | null | • | — |
| rolledBackFromDeploymentId | string (uuid) | null | • | — |

### `GET` `/deployment/services/:serviceId/runs`

List the runs of a scheduled service (job), newest first. Returns a page of runs plus nextCursor; pass that back as cursor for the next page. A run with status "Skipped" is a tick that never fired — concurrency held it back — and has no logs or exit code.

MCP tool: `deployment_job_runs_list`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| serviceId | path | string (uuid) | • | — |
| limit | query | integer | — | — |
| cursor | query | string | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| items | object[] | • | — |
| nextCursor | string | null | • | — |

### `POST` `/deployment/services/:serviceId/runs`

Run a scheduled service (job) now, regardless of its schedule or concurrency; returns the run

MCP tool: `deployment_job_run`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| serviceId | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| status | string one of: Running, Succeeded, Failed, TimedOut, Skipped | • | — |
| trigger | string one of: schedule, manual | • | — |
| exitCode | integer | null | • | — |
| createdAt | string | • | — |
| serviceId | string (uuid) | • | — |
| startedAt | string | null | • | — |
| finishedAt | string | null | • | — |
| k8sJobName | string | • | — |
| imageDigest | string | null | • | — |
| triggeredBy | string | null | • | — |
| deploymentId | string (uuid) | null | • | — |
| environmentId | string (uuid) | • | — |
| failureReason | string | null | • | — |

### `GET` `/deployment/services/:serviceId/runs/:runId/logs`

Read the output of one job run: the stored tail (up to 256 KiB) once the run has finished, or a live tail while it is still running. `live` says which one you got — a caller that polls should stop once it turns false.

MCP tool: `deployment_job_run_logs`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| serviceId | path | string (uuid) | • | — |
| runId | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| live | boolean | • | — |
| logs | string | • | — |
| status | string one of: Running, Succeeded, Failed, TimedOut, Skipped | • | — |

### `GET` `/deployment/services/:serviceId/ssh-command`

Get the ssh command string to connect to a service

MCP tool: `deployment_ssh_command`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| serviceId | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| host | string | • | — |
| command | string | • | — |
| username | string | • | — |

### `GET` `/deployment/services/:serviceId/variables`

List variables for a service (secret values are returned as null)

MCP tool: `deployment_variable_list`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| serviceId | path | string (uuid) | • | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| key | string | • | — |
| scope | string one of: service, environment, product | • | — |
| value | string | null | • | — |
| isSecret | boolean | • | — |
| createdAt | string | • | — |
| serviceId | string (uuid) | null | • | — |
| updatedAt | string | • | — |
| environmentId | string (uuid) | null | • | — |

### `DELETE` `/deployment/services/:serviceId/variables/:key`

Delete a variable from a service by key

MCP tool: `deployment_variable_unset`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| serviceId | path | string (uuid) | • | — |
| key | path | string | • | — |

### `PUT` `/deployment/services/:serviceId/variables/:key`

Create or update a variable on a service. Pass `isSecret: true` to encrypt the value via KMS — this transition is irreversible (a row that is already secret cannot be downgraded to plain).

MCP tool: `deployment_variable_set`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| serviceId | path | string (uuid) | • | — |
| key | path | string | • | — |
| value | body | string | • | — |
| isSecret | body | boolean | — | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| key | string | • | — |
| scope | string one of: service, environment, product | • | — |
| value | string | null | • | — |
| isSecret | boolean | • | — |
| createdAt | string | • | — |
| serviceId | string (uuid) | null | • | — |
| updatedAt | string | • | — |
| environmentId | string (uuid) | null | • | — |

### `GET` `/deployment/ssh-keys`

List SSH public keys registered in the current workspace

MCP tool: `deployment_ssh_key_list`

**Parameters**

No parameters.

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| algo | string | • | — |
| name | string | • | — |
| scope | string one of: workspace, personal | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| lastUsedAt | string | null | • | — |
| ownerIdentityId | string | • | — |
| fingerprintSha256 | string | • | — |

### `POST` `/deployment/ssh-keys`

Register an SSH public key for the current workspace

MCP tool: `deployment_ssh_key_register`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| name | body | string | • | Human label for the key, e.g. "my-laptop" |
| publicKey | body | string | • | OpenSSH public key line (ssh-ed25519 / ssh-rsa ...) |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| algo | string | • | — |
| name | string | • | — |
| scope | string one of: workspace, personal | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| lastUsedAt | string | null | • | — |
| ownerIdentityId | string | • | — |
| fingerprintSha256 | string | • | — |

### `DELETE` `/deployment/ssh-keys/:id`

Delete a registered SSH public key

MCP tool: `deployment_ssh_key_delete`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| deleted | boolean | • | — |

### `GET` `/deployment/vcs/branches`

List branches for a repository on a GitHub connection

MCP tool: `deployment_vcs_branch_list`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| connectorId | query | string (uuid) | • | — |
| repoFullName | query | string | • | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| name | string | • | — |
| commitSha | string | • | — |

### `GET` `/deployment/vcs/connections`

List the GitHub connections available to the current product

MCP tool: `deployment_vcs_connection_list`

**Parameters**

No parameters.

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| status | string | • | — |
| connectorId | string | • | — |
| accountLogin | string | • | — |
| installationId | string | • | — |

### `GET` `/deployment/vcs/repos`

List repositories accessible to a GitHub connection (optionally filtered by search)

MCP tool: `deployment_vcs_repo_list`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| connectorId | query | string (uuid) | • | — |
| page | query | integer | — | — |
| search | query | string | — | — |

**Response**

Returns `object[]`.

| Item field | Type | Always | Description |
| --- | --- | --- | --- |
| private | boolean | • | — |
| fullName | string | • | — |
| defaultBranch | string | • | — |

### `DELETE` `/deployment/volumes/:id`

Permanently delete a detached volume

MCP tool: `deployment_volume_delete`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

### `GET` `/deployment/volumes/:id`

Get a volume

MCP tool: `deployment_volume_get`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| name | string | • | — |
| slug | string | • | — |
| sizeGb | integer | • | — |
| status | string one of: provisioning, ready, detached, failed | • | — |
| createdAt | string | • | — |
| mountPath | string | • | — |
| updatedAt | string | • | — |
| environmentId | string (uuid) | • | — |
| lastErrorMessage | string | null | • | — |
| attachedServiceId | string (uuid) | null | • | — |

### `POST` `/deployment/volumes/:id/detach`

Detach a volume from its service (data preserved)

MCP tool: `deployment_volume_detach`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| name | string | • | — |
| slug | string | • | — |
| sizeGb | integer | • | — |
| status | string one of: provisioning, ready, detached, failed | • | — |
| createdAt | string | • | — |
| mountPath | string | • | — |
| updatedAt | string | • | — |
| environmentId | string (uuid) | • | — |
| lastErrorMessage | string | null | • | — |
| attachedServiceId | string (uuid) | null | • | — |

### `POST` `/deployment/volumes/:id/resize`

Increase a volume size

MCP tool: `deployment_volume_resize`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| id | path | string (uuid) | • | — |
| sizeGb | body | integer | • | — |

**Response**

Returns `object`.

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string (uuid) | • | — |
| name | string | • | — |
| slug | string | • | — |
| sizeGb | integer | • | — |
| status | string one of: provisioning, ready, detached, failed | • | — |
| createdAt | string | • | — |
| mountPath | string | • | — |
| updatedAt | string | • | — |
| environmentId | string (uuid) | • | — |
| lastErrorMessage | string | null | • | — |
| attachedServiceId | string (uuid) | null | • | — |
