# Deployment API

The Deployment area publishes 107 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 | • | — |
| targetId | body | string | • | — |
| metric | body | string | • | — |
| comparator | body | string | • | — |
| threshold | body | number | • | — |
| enabled | body | boolean | — | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| state | string | • | — |
| metric | string | • | — |
| enabled | boolean | • | — |
| targetId | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| threshold | number | • | — |
| updatedAt | string | • | — |
| comparator | string | • | — |
| targetKind | string | • | — |
| environmentId | string | • | — |
| lastEvaluatedAt | string | • | — |
| lastStateChangeAt | string | • | — |

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

Delete an alert rule

MCP tool: `deployment_alert_delete`

**Parameters**

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

**Response**

| 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 | — | — |
| threshold | body | number | — | — |
| enabled | body | boolean | — | — |
| id | path | string | • | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| state | string | • | — |
| metric | string | • | — |
| enabled | boolean | • | — |
| targetId | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| threshold | number | • | — |
| updatedAt | string | • | — |
| comparator | string | • | — |
| targetKind | string | • | — |
| environmentId | string | • | — |
| lastEvaluatedAt | string | • | — |
| lastStateChangeAt | string | • | — |

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

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| sql | string | • | — |
| rows | array | • | — |
| 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 | • | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| status | string | • | — |
| builtAt | string | • | — |
| imageRef | string | • | — |
| commitSha | string | • | — |
| createdAt | string | • | — |
| serviceId | string | • | — |
| startedAt | string | • | — |
| finishedAt | string | • | — |
| cloudBuildId | string | • | — |
| lastErrorMessage | string | • | — |

### `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 | • | — |
| label | body | string | — | — |

**Response**

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

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

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

**Response**

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

### `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 | • | — |
| serviceId | body | string | • | — |
| environmentId | body | string | • | — |

**Response**

| 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 | • | — |

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

### `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 | — | — |
| pgVersion | body | string | — | — |

**Response**

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

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

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

**Response**

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

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

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

**Response**

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

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

### `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 | • | — |
| tail | query | integer | — | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| lines | array | • | — |

### `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 | • | — |
| tier | body | string | • | — |

**Response**

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

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

**Response**

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

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

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| failed | array | • | — |
| patched | number | • | — |
| scanned | number | • | — |
| skippedNoDrift | number | • | — |
| restartRequired | array | • | — |
| 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 | • | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| status | string | • | — |
| builtAt | string | • | — |
| imageRef | string | • | — |
| commitSha | string | • | — |
| createdAt | string | • | — |
| serviceId | string | • | — |
| startedAt | string | • | — |
| updatedAt | string | • | — |
| deployedAt | string | • | — |
| finishedAt | string | • | — |
| cloudBuildId | string | • | — |
| configSnapshot | object | • | — |
| lastErrorMessage | string | • | — |
| rolledBackFromDeploymentId | string | • | — |

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

### `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 | • | — |
| pathPrefix | body | string | • | — |
| serviceId | body | string | • | — |
| isDefault | body | boolean | — | — |
| priority | body | integer | — | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| domainId | string | • | — |
| priority | integer | • | — |
| createdAt | string | • | — |
| isDefault | boolean | • | — |
| serviceId | string | • | — |
| 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 | • | — |
| routeId | path | string | • | — |

### `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 | • | — |
| routeId | path | string | • | — |
| pathPrefix | body | string | — | — |
| serviceId | body | string | — | — |
| priority | body | integer | — | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| domainId | string | • | — |
| priority | integer | • | — |
| createdAt | string | • | — |
| isDefault | boolean | • | — |
| serviceId | string | • | — |
| 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 | • | — |

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

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| kind | string | • | — |
| hostname | string | • | — |
| createdAt | string | • | — |
| tlsStatus | string | • | — |
| updatedAt | string | • | — |
| lastProbeAt | string | • | — |
| redirectWww | boolean | • | — |
| wwwTlsStatus | string | • | — |
| environmentId | string | • | — |
| routingStatus | string | • | — |
| lastProbeError | string | • | — |
| dnsInstructions | object | • | — |
| routingRecordType | string | • | — |
| verificationToken | string | • | — |
| verificationStatus | string | • | — |
| lastVerificationError | object | • | — |
| lastVerificationCheckAt | string | • | — |
| tlsCertificateExpiresAt | string | • | — |

### `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 | • | — |
| enabled | body | boolean | • | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| kind | string | • | — |
| hostname | string | • | — |
| createdAt | string | • | — |
| tlsStatus | string | • | — |
| updatedAt | string | • | — |
| lastProbeAt | string | • | — |
| redirectWww | boolean | • | — |
| wwwTlsStatus | string | • | — |
| environmentId | string | • | — |
| routingStatus | string | • | — |
| lastProbeError | string | • | — |
| dnsInstructions | object | • | — |
| routingRecordType | string | • | — |
| verificationToken | string | • | — |
| verificationStatus | string | • | — |
| lastVerificationError | object | • | — |
| lastVerificationCheckAt | string | • | — |
| tlsCertificateExpiresAt | string | • | — |

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

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| kind | string | • | — |
| hostname | string | • | — |
| createdAt | string | • | — |
| tlsStatus | string | • | — |
| updatedAt | string | • | — |
| lastProbeAt | string | • | — |
| redirectWww | boolean | • | — |
| wwwTlsStatus | string | • | — |
| environmentId | string | • | — |
| routingStatus | string | • | — |
| lastProbeError | string | • | — |
| dnsInstructions | object | • | — |
| routingRecordType | string | • | — |
| verificationToken | string | • | — |
| verificationStatus | string | • | — |
| lastVerificationError | object | • | — |
| lastVerificationCheckAt | string | • | — |
| tlsCertificateExpiresAt | string | • | — |

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

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

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| type | string | • | — |
| status | string | • | — |
| prBranch | string | • | — |
| prNumber | integer | • | — |
| createdAt | string | • | — |
| expiresAt | string | • | — |
| updatedAt | string | • | — |
| isProduction | boolean | • | — |
| lastErrorMessage | string | • | — |
| baseEnvironmentId | string | • | — |

### `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 | • | — |
| limit | query | integer | — | — |

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

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

List configuration-change audit events for an environment, newest first

MCP tool: `deployment_audit_list`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| environmentId | path | string | • | — |
| entityType | query | string | — | — |
| action | query | string | — | — |
| actorId | query | string | — | — |
| serviceId | query | string | — | — |
| limit | query | integer | — | — |

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

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| edges | array | • | — |
| nodes | array | • | — |
| services | array | • | — |
| environmentId | string | • | — |

### `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 | • | — |
| nodeId | path | string | • | — |
| x | body | number | — | — |
| y | body | number | — | — |
| width | body | number | — | — |
| height | body | number | — | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| x | number | • | — |
| y | number | • | — |
| id | string | • | — |
| width | number | • | — |
| height | number | • | — |
| nodeId | string | • | — |
| nodeKind | string | • | — |
| 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 | • | — |

### `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 | • | — |
| hostname | body | string | • | — |
| defaultServiceId | body | string | • | — |
| pathPrefix | body | string | — | — |
| redirectWww | body | boolean | — | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| kind | string | • | — |
| routes | array | • | — |
| hostname | string | • | — |
| createdAt | string | • | — |
| tlsStatus | string | • | — |
| updatedAt | string | • | — |
| lastProbeAt | string | • | — |
| redirectWww | boolean | • | — |
| wwwTlsStatus | string | • | — |
| environmentId | string | • | — |
| routingStatus | string | • | — |
| lastProbeError | string | • | — |
| dnsInstructions | object | • | — |
| routingRecordType | string | • | — |
| verificationToken | string | • | — |
| verificationStatus | string | • | — |
| lastVerificationError | object | • | — |
| lastVerificationCheckAt | string | • | — |
| tlsCertificateExpiresAt | string | • | — |

### `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 | • | — |
| type | query | string | — | — |
| since | query | string | — | — |
| until | query | string | — | — |
| limit | query | integer | — | — |

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

### `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 | • | — |
| name | body | string | • | — |
| slug | body | string | — | — |
| engine | body | string | • | — |
| version | body | string | — | — |
| storageGiB | body | integer | — | — |
| databaseName | body | string | — | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| engine | string | • | — |
| status | string | • | — |
| version | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| storageGiB | number | • | — |
| backupPolicy | object | • | — |
| databaseName | string | • | — |
| lastBackupAt | string | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | • | — |

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

List services within an environment

MCP tool: `deployment_service_list`

**Parameters**

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

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

Create a service inside an environment

MCP tool: `deployment_service_create`

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| environmentId | path | string | • | — |
| name | body | string | • | — |
| slug | body | string | — | — |
| source | body | object | • | — |
| containerPort | body | integer | — | — |
| replicas | body | integer | — | — |
| probes | body | object | — | — |
| resources | body | object | — | — |
| canvas | body | object | — | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| probes | object | • | — |
| source | object | • | — |
| replicas | integer | • | — |
| createdAt | string | • | — |
| dependsOn | array | • | — |
| resources | object | — | — |
| updatedAt | string | • | — |
| sleepState | string | • | — |
| idleMinutes | integer | • | — |
| scaleToZero | boolean | • | — |
| containerPort | integer | • | — |
| environmentId | string | • | — |
| buildMachineType | string | — | — |
| 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 | • | — |

### `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 | • | — |
| 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 | • | — |
| key | path | string | • | — |
| value | body | string | • | — |
| isSecret | body | boolean | — | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| key | string | • | — |
| scope | string | • | — |
| value | string | • | — |
| isSecret | boolean | • | — |
| createdAt | string | • | — |
| serviceId | string | • | — |
| updatedAt | string | • | — |
| environmentId | string | • | — |

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

List volumes in environment

MCP tool: `deployment_volume_list`

**Parameters**

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

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

Create a volume

MCP tool: `deployment_volume_create`

**Parameters**

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

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| sizeGb | integer | • | — |
| status | string | • | — |
| createdAt | string | • | — |
| mountPath | string | • | — |
| updatedAt | string | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | • | — |
| attachedServiceId | string | • | — |

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

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

Get a single environment by id

MCP tool: `deployment_environment_get`

**Parameters**

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

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| type | string | • | — |
| status | string | • | — |
| prBranch | string | • | — |
| prNumber | integer | • | — |
| createdAt | string | • | — |
| expiresAt | string | • | — |
| updatedAt | string | • | — |
| isProduction | boolean | • | — |
| lastErrorMessage | string | • | — |
| baseEnvironmentId | string | • | — |

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

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| type | string | • | — |
| status | string | • | — |
| prBranch | string | • | — |
| prNumber | integer | • | — |
| createdAt | string | • | — |
| expiresAt | string | • | — |
| updatedAt | string | • | — |
| isProduction | boolean | • | — |
| lastErrorMessage | string | • | — |
| baseEnvironmentId | string | • | — |

### `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 | • | — |
| force | body | boolean | — | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| type | string | • | — |
| status | string | • | — |
| prBranch | string | • | — |
| prNumber | integer | • | — |
| createdAt | string | • | — |
| expiresAt | string | • | — |
| updatedAt | string | • | — |
| isProduction | boolean | • | — |
| lastErrorMessage | string | • | — |
| baseEnvironmentId | string | • | — |

### `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 | • | — |
| name | body | string | • | — |
| slug | body | string | — | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| type | string | • | — |
| status | string | • | — |
| prBranch | string | • | — |
| prNumber | integer | • | — |
| createdAt | string | • | — |
| expiresAt | string | • | — |
| updatedAt | string | • | — |
| isProduction | boolean | • | — |
| lastErrorMessage | string | • | — |
| baseEnvironmentId | string | • | — |

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

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| domains | array | • | — |

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

List available managed service engines and versions

MCP tool: `deployment_managed_service_types`

**Parameters**

No parameters.

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| engines | array | • | — |

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

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| engine | string | • | — |
| status | string | • | — |
| version | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| storageGiB | number | • | — |
| backupPolicy | object | • | — |
| databaseName | string | • | — |
| lastBackupAt | string | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | • | — |

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

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| engine | string | • | — |
| status | string | • | — |
| version | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| storageGiB | number | • | — |
| backupPolicy | object | • | — |
| databaseName | string | • | — |
| lastBackupAt | string | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | • | — |

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

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| engine | string | • | — |
| status | string | • | — |
| version | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| storageGiB | number | • | — |
| backupPolicy | object | • | — |
| databaseName | string | • | — |
| lastBackupAt | string | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | • | — |

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

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

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| slug | string | • | — |
| vars | array | • | — |
| engine | string | • | — |

### `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 | • | — |
| tail | query | integer | — | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| lines | array | • | — |

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

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| engine | string | • | — |
| status | string | • | — |
| version | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| storageGiB | number | • | — |
| backupPolicy | object | • | — |
| databaseName | string | • | — |
| lastBackupAt | string | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | • | — |

### `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 | • | — |
| storageGiB | body | integer | • | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| engine | string | • | — |
| status | string | • | — |
| version | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| storageGiB | number | • | — |
| backupPolicy | object | • | — |
| databaseName | string | • | — |
| lastBackupAt | string | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | • | — |

### `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 | • | — |
| snapshotName | body | string | • | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| engine | string | • | — |
| status | string | • | — |
| version | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| storageGiB | number | • | — |
| backupPolicy | object | • | — |
| databaseName | string | • | — |
| lastBackupAt | string | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | • | — |

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

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| engine | string | • | — |
| status | string | • | — |
| version | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| storageGiB | number | • | — |
| backupPolicy | object | • | — |
| databaseName | string | • | — |
| lastBackupAt | string | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | • | — |

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

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| engine | string | • | — |
| status | string | • | — |
| version | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| updatedAt | string | • | — |
| storageGiB | number | • | — |
| backupPolicy | object | • | — |
| databaseName | string | • | — |
| lastBackupAt | string | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | • | — |

### `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 | • | — |
| targetId | query | string | • | — |
| window | query | string | — | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| series | array | • | — |
| window | string | • | — |
| capacity | object | • | — |
| targetId | string | • | — |
| targetKind | string | • | — |
| stepSeconds | number | • | — |

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

List all preview environments

MCP tool: `deployment_preview_environment_list`

**Parameters**

No parameters.

### `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 | • | — |
| prNumber | body | integer | • | — |
| prBranch | body | string | — | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| type | string | • | — |
| status | string | • | — |
| prBranch | string | • | — |
| prNumber | integer | • | — |
| createdAt | string | • | — |
| expiresAt | string | • | — |
| updatedAt | string | • | — |
| isProduction | boolean | • | — |
| lastErrorMessage | string | • | — |
| baseEnvironmentId | string | • | — |

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

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

**Response**

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

### `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 | • | — |
| enabled | body | boolean | — | — |
| maxPreviews | body | integer | — | — |
| ttlHours | body | integer | — | — |

**Response**

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

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

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| stage | string | • | — |
| reason | string | • | — |
| changedAt | string | • | — |
| graceDeadline | string | • | — |
| enforcementEnabled | boolean | • | — |

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

List product-scope (global) variables

MCP tool: `deployment_variable_list_product`

**Parameters**

No parameters.

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

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| key | string | • | — |
| scope | string | • | — |
| value | string | • | — |
| isSecret | boolean | • | — |
| createdAt | string | • | — |
| serviceId | string | • | — |
| updatedAt | string | • | — |
| environmentId | string | • | — |

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

Delete a service

MCP tool: `deployment_service_delete`

**Parameters**

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

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

Get a single service by id

MCP tool: `deployment_service_get`

**Parameters**

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

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| probes | object | • | — |
| source | object | • | — |
| replicas | integer | • | — |
| createdAt | string | • | — |
| dependsOn | array | • | — |
| resources | object | — | — |
| updatedAt | string | • | — |
| sleepState | string | • | — |
| idleMinutes | integer | • | — |
| scaleToZero | boolean | • | — |
| containerPort | integer | • | — |
| environmentId | string | • | — |
| buildMachineType | string | — | — |
| suspendedByBilling | boolean | — | — |
| lastReplicasRunning | integer | • | — |
| scaleToZeroEligibility | object | — | — |

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

Update service fields

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 | — | — |
| id | path | string | • | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| probes | object | • | — |
| source | object | • | — |
| replicas | integer | • | — |
| createdAt | string | • | — |
| dependsOn | array | • | — |
| resources | object | — | — |
| updatedAt | string | • | — |
| sleepState | string | • | — |
| idleMinutes | integer | • | — |
| scaleToZero | boolean | • | — |
| containerPort | integer | • | — |
| environmentId | string | • | — |
| buildMachineType | string | — | — |
| 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 | • | — |

### `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 | • | — |
| replicas | body | integer | • | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| probes | object | • | — |
| source | object | • | — |
| replicas | integer | • | — |
| createdAt | string | • | — |
| dependsOn | array | • | — |
| resources | object | — | — |
| updatedAt | string | • | — |
| sleepState | string | • | — |
| idleMinutes | integer | • | — |
| scaleToZero | boolean | • | — |
| containerPort | integer | • | — |
| environmentId | string | • | — |
| buildMachineType | string | — | — |
| 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 | • | — |

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

### `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 | • | — |
| deploymentId | body | string | • | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| status | string | • | — |
| builtAt | string | • | — |
| imageRef | string | • | — |
| commitSha | string | • | — |
| createdAt | string | • | — |
| serviceId | string | • | — |
| startedAt | string | • | — |
| updatedAt | string | • | — |
| deployedAt | string | • | — |
| finishedAt | string | • | — |
| cloudBuildId | string | • | — |
| configSnapshot | object | • | — |
| lastErrorMessage | string | • | — |
| rolledBackFromDeploymentId | string | • | — |

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

### `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 | • | — |
| deploymentId | path | string | • | — |
| tail | query | integer | — | — |
| since | query | string | — | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| lines | array | • | — |
| cursor | string | • | — |
| 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 | • | — |

### `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 | • | — |
| type | query | string | — | — |
| since | query | string | — | — |
| until | query | string | — | — |
| limit | query | integer | — | — |
| deploymentId | query | string | — | — |

### `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 | — | — |
| timeoutSec | body | integer | — | — |
| serviceId | path | string | • | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| mode | string | • | — |
| 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 | • | — |
| tail | query | integer | — | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| lines | array | • | — |
| sleepState | string | — | — |

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

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| status | string | • | — |
| builtAt | string | • | — |
| imageRef | string | • | — |
| commitSha | string | • | — |
| createdAt | string | • | — |
| serviceId | string | • | — |
| startedAt | string | • | — |
| updatedAt | string | • | — |
| deployedAt | string | • | — |
| finishedAt | string | • | — |
| cloudBuildId | string | • | — |
| configSnapshot | object | • | — |
| lastErrorMessage | string | • | — |
| rolledBackFromDeploymentId | string | • | — |

### `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 | • | — |
| deploymentId | body | string | • | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| status | string | • | — |
| builtAt | string | • | — |
| imageRef | string | • | — |
| commitSha | string | • | — |
| createdAt | string | • | — |
| serviceId | string | • | — |
| startedAt | string | • | — |
| updatedAt | string | • | — |
| deployedAt | string | • | — |
| finishedAt | string | • | — |
| cloudBuildId | string | • | — |
| configSnapshot | object | • | — |
| lastErrorMessage | string | • | — |
| rolledBackFromDeploymentId | string | • | — |

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

**Response**

| 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 | • | — |

### `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 | • | — |
| 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 | • | — |
| key | path | string | • | — |
| value | body | string | • | — |
| isSecret | body | boolean | — | — |

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| key | string | • | — |
| scope | string | • | — |
| value | string | • | — |
| isSecret | boolean | • | — |
| createdAt | string | • | — |
| serviceId | string | • | — |
| updatedAt | string | • | — |
| environmentId | string | • | — |

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

List SSH public keys registered in the current workspace

MCP tool: `deployment_ssh_key_list`

**Parameters**

No parameters.

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

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| algo | string | • | — |
| name | string | • | — |
| scope | string | • | — |
| createdAt | string | • | — |
| productId | string | • | — |
| lastUsedAt | string | • | — |
| 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 | • | — |

**Response**

| 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 | • | — |
| repoFullName | query | string | • | — |

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

List the GitHub connections available to the current product

MCP tool: `deployment_vcs_connection_list`

**Parameters**

No parameters.

### `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 | • | — |
| page | query | integer | — | — |
| search | query | string | — | — |

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

Permanently delete a detached volume

MCP tool: `deployment_volume_delete`

**Parameters**

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

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

Get a volume

MCP tool: `deployment_volume_get`

**Parameters**

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

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| sizeGb | integer | • | — |
| status | string | • | — |
| createdAt | string | • | — |
| mountPath | string | • | — |
| updatedAt | string | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | • | — |
| attachedServiceId | string | • | — |

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

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| sizeGb | integer | • | — |
| status | string | • | — |
| createdAt | string | • | — |
| mountPath | string | • | — |
| updatedAt | string | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | • | — |
| attachedServiceId | string | • | — |

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

Increase a volume size

MCP tool: `deployment_volume_resize`

**Parameters**

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

**Response**

| Field | Type | Always | Description |
| --- | --- | --- | --- |
| id | string | • | — |
| name | string | • | — |
| slug | string | • | — |
| sizeGb | integer | • | — |
| status | string | • | — |
| createdAt | string | • | — |
| mountPath | string | • | — |
| updatedAt | string | • | — |
| environmentId | string | • | — |
| lastErrorMessage | string | • | — |
| attachedServiceId | string | • | — |
