> For AI agents: the complete documentation index is available at /llms.txt, the full documentation bundle is available at /llms-full.txt.

# AutoMCP Connect JSON RPC reference

> **Availability:** The AutoMCP production service is not yet deployed. This page and its examples describe the committed v1 contract for integration planning; requests to the API URL will not succeed until the runtime is released.

This reference is generated from the committed `automcp.v1` descriptor and public method inventory. It contains only the published public RPC surface. Replace `${BASE64_SECRET_VALUE}` in secret examples with a securely generated value before sending a request. Bytes fields carrying customer JSON use the base64 encoding of a valid JSON document, not a secret placeholder. Server-generated backend keys, browser tokens, voice tickets, and webhook signing secrets are returned as plaintext only in the first successful response; persist that response because an idempotent replay with the same request ID returns no credential plaintext, and reissue or rotate the credential if the response is lost.

## `/automcp.v1.ApprovalService/DecideApproval`

- Request: `automcp.v1.DecideApprovalRequest`
- Response: `automcp.v1.DecideApprovalResponse`
- Authentication: `browserToken` (scopes: `approvals:write`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field                     | Protobuf type                        | Repeated | JSON shape | Oneof |
| ------------------------- | ------------------------------------ | -------- | ---------- | ----- |
| `requestId`               | `message (automcp.v1.UUIDv7)`        | false    | object     |       |
| `workspaceId`             | `message (automcp.v1.UUIDv7)`        | false    | object     |       |
| `appId`                   | `message (automcp.v1.UUIDv7)`        | false    | object     |       |
| `customerUserId`          | `message (automcp.v1.UUIDv7)`        | false    | object     |       |
| `approvalId`              | `message (automcp.v1.UUIDv7)`        | false    | object     |       |
| `expectedResourceVersion` | `uint64`                             | false    | string     |       |
| `decision`                | `enum (automcp.v1.ApprovalDecision)` | false    | string     |       |

#### Response

| Field      | Protobuf type                   | Repeated | JSON shape | Oneof |
| ---------- | ------------------------------- | -------- | ---------- | ----- |
| `approval` | `message (automcp.v1.Approval)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.ApprovalService/DecideApproval" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"approvalId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"decision":"APPROVAL_DECISION_APPROVE","expectedResourceVersion":"1","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.ApprovalService/GetApproval`

- Request: `automcp.v1.GetApprovalRequest`
- Response: `automcp.v1.GetApprovalResponse`
- Authentication: `browserToken` (scopes: `approvals:read`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                 | Repeated | JSON shape | Oneof |
| ---------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `approvalId`     | `message (automcp.v1.UUIDv7)` | false    | object     |       |

#### Response

| Field      | Protobuf type                   | Repeated | JSON shape | Oneof |
| ---------- | ------------------------------- | -------- | ---------- | ----- |
| `approval` | `message (automcp.v1.Approval)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.ApprovalService/GetApproval" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"approvalId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.ApprovalService/ListApprovals`

- Request: `automcp.v1.ListApprovalsRequest`
- Response: `automcp.v1.ListApprovalsResponse`
- Authentication: `browserToken` (scopes: `approvals:read`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                      | Repeated | JSON shape | Oneof |
| ---------------- | ---------------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `state`          | `enum (automcp.v1.ApprovalState)`  | false    | string     |       |
| `page`           | `message (automcp.v1.PageRequest)` | false    | object     |       |

#### Response

| Field       | Protobuf type                   | Repeated | JSON shape | Oneof |
| ----------- | ------------------------------- | -------- | ---------- | ----- |
| `approvals` | `message (automcp.v1.Approval)` | true     | array      |       |
| `page`      | `message (automcp.v1.PageInfo)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.ApprovalService/ListApprovals" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"page":{"cursor":"","pageSize":1},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"state":"APPROVAL_STATE_UNSPECIFIED","workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.CustomerSecretService/CreateSecret`

- Request: `automcp.v1.CreateSecretRequest`
- Response: `automcp.v1.CreateSecretResponse`
- Authentication: `backendKey` (scopes: `secrets:write`)
- Authentication: `browserToken` (scopes: `secrets:write`)
- Payload access: `writeOnlySecret`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                 | Repeated | JSON shape | Oneof |
| ---------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `name`           | `string`                      | false    | value      |       |
| `plaintextValue` | `bytes`                       | false    | string     |       |

#### Response

| Field    | Protobuf type                 | Repeated | JSON shape | Oneof |
| -------- | ----------------------------- | -------- | ---------- | ----- |
| `secret` | `message (automcp.v1.Secret)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.CustomerSecretService/CreateSecret" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"name":"example","plaintextValue":"${BASE64_SECRET_VALUE}","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.CustomerSecretService/DeleteSecret`

- Request: `automcp.v1.DeleteSecretRequest`
- Response: `automcp.v1.DeleteSecretResponse`
- Authentication: `backendKey` (scopes: `secrets:write`)
- Authentication: `browserToken` (scopes: `secrets:write`)
- Payload access: `metadataOnly`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`                   | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `secretId`                | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `uint64`                      | false    | string     |       |

#### Response

| Field    | Protobuf type                 | Repeated | JSON shape | Oneof |
| -------- | ----------------------------- | -------- | ---------- | ----- |
| `secret` | `message (automcp.v1.Secret)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.CustomerSecretService/DeleteSecret" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedResourceVersion":"1","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"secretId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.CustomerSecretService/GetSecret`

- Request: `automcp.v1.GetSecretRequest`
- Response: `automcp.v1.GetSecretResponse`
- Authentication: `backendKey` (scopes: `secrets:read`)
- Authentication: `browserToken` (scopes: `secrets:read`)
- Payload access: `metadataOnly`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                 | Repeated | JSON shape | Oneof |
| ---------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `secretId`       | `message (automcp.v1.UUIDv7)` | false    | object     |       |

#### Response

| Field    | Protobuf type                 | Repeated | JSON shape | Oneof |
| -------- | ----------------------------- | -------- | ---------- | ----- |
| `secret` | `message (automcp.v1.Secret)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.CustomerSecretService/GetSecret" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"secretId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.CustomerSecretService/ListSecrets`

- Request: `automcp.v1.ListSecretsRequest`
- Response: `automcp.v1.ListSecretsResponse`
- Authentication: `backendKey` (scopes: `secrets:read`)
- Authentication: `browserToken` (scopes: `secrets:read`)
- Payload access: `metadataOnly`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                      | Repeated | JSON shape | Oneof |
| ---------------- | ---------------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `page`           | `message (automcp.v1.PageRequest)` | false    | object     |       |

#### Response

| Field     | Protobuf type                   | Repeated | JSON shape | Oneof |
| --------- | ------------------------------- | -------- | ---------- | ----- |
| `secrets` | `message (automcp.v1.Secret)`   | true     | array      |       |
| `page`    | `message (automcp.v1.PageInfo)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.CustomerSecretService/ListSecrets" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"page":{"cursor":"","pageSize":1},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.CustomerSecretService/RotateSecret`

- Request: `automcp.v1.RotateSecretRequest`
- Response: `automcp.v1.RotateSecretResponse`
- Authentication: `backendKey` (scopes: `secrets:write`)
- Authentication: `browserToken` (scopes: `secrets:write`)
- Payload access: `writeOnlySecret`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`                   | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `secretId`                | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `uint64`                      | false    | string     |       |
| `plaintextValue`          | `bytes`                       | false    | string     |       |

#### Response

| Field    | Protobuf type                 | Repeated | JSON shape | Oneof |
| -------- | ----------------------------- | -------- | ---------- | ----- |
| `secret` | `message (automcp.v1.Secret)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.CustomerSecretService/RotateSecret" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedResourceVersion":"1","plaintextValue":"${BASE64_SECRET_VALUE}","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"secretId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.CustomerUserService/CreateCustomerUserGrant`

- Request: `automcp.v1.CreateCustomerUserGrantRequest`
- Response: `automcp.v1.CreateCustomerUserGrantResponse`
- Authentication: `backendKey` (scopes: `users:write`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field                       | Protobuf type                         | Repeated | JSON shape | Oneof |
| --------------------------- | ------------------------------------- | -------- | ---------- | ----- |
| `requestId`                 | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `workspaceId`               | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `appId`                     | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `externalUserId`            | `string`                              | false    | value      |       |
| `attributesJson`            | `bytes`                               | false    | string     |       |
| `allowedToolIds`            | `message (automcp.v1.UUIDv7)`         | true     | array      |       |
| `registeredOrigins`         | `string`                              | true     | array      |       |
| `expiresAt`                 | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `allowedBrowserTokenScopes` | `string`                              | true     | array      |       |

#### Response

| Field               | Protobuf type                            | Repeated | JSON shape | Oneof |
| ------------------- | ---------------------------------------- | -------- | ---------- | ----- |
| `customerUserGrant` | `message (automcp.v1.CustomerUserGrant)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.CustomerUserService/CreateCustomerUserGrant" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"allowedBrowserTokenScopes":["sessions:write"],"allowedToolIds":[{"value":"01900000-0000-7000-8000-000000000001"}],"appId":{"value":"01900000-0000-7000-8000-000000000001"},"attributesJson":"e30=","externalUserId":"example","registeredOrigins":["https://example.com:443"],"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.CustomerUserService/DeleteCustomerUser`

- Request: `automcp.v1.DeleteCustomerUserRequest`
- Response: `automcp.v1.DeleteCustomerUserResponse`
- Authentication: `backendKey` (scopes: `users:write`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`                   | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `uint64`                      | false    | string     |       |

#### Response

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `customerUserId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `deletionResourceVersion` | `uint64`                      | false    | string     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.CustomerUserService/DeleteCustomerUser" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedResourceVersion":"1","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.CustomerUserService/GetCustomerUserGrant`

- Request: `automcp.v1.GetCustomerUserGrantRequest`
- Response: `automcp.v1.GetCustomerUserGrantResponse`
- Authentication: `backendKey` (scopes: `users:read`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                 | Repeated | JSON shape | Oneof |
| ---------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `externalUserId` | `string`                      | false    | value      |       |

#### Response

| Field               | Protobuf type                            | Repeated | JSON shape | Oneof |
| ------------------- | ---------------------------------------- | -------- | ---------- | ----- |
| `customerUserGrant` | `message (automcp.v1.CustomerUserGrant)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.CustomerUserService/GetCustomerUserGrant" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"externalUserId":"example","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.CustomerUserService/IssueBrowserToken`

- Request: `automcp.v1.IssueBrowserTokenRequest`
- Response: `automcp.v1.IssueBrowserTokenResponse`
- Authentication: `backendKey` (scopes: `tokens:issue`)
- Payload access: `writeOnlySecret`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field             | Protobuf type                 | Repeated | JSON shape | Oneof |
| ----------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`       | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`     | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`           | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId`  | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `scopes`          | `string`                      | true     | array      |       |
| `lifetimeSeconds` | `uint32`                      | false    | value      |       |
| `origins`         | `string`                      | true     | array      |       |
| `allowedToolIds`  | `message (automcp.v1.UUIDv7)` | true     | array      |       |

#### Response

| Field       | Protobuf type                         | Repeated | JSON shape | Oneof |
| ----------- | ------------------------------------- | -------- | ---------- | ----- |
| `token`     | `string`                              | false    | value      |       |
| `expiresAt` | `message (google.protobuf.Timestamp)` | false    | string     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.CustomerUserService/IssueBrowserToken" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"allowedToolIds":[{"value":"01900000-0000-7000-8000-000000000001"}],"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"lifetimeSeconds":3600,"origins":["https://example.com:443"],"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"scopes":["sessions:write"],"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.CustomerUserService/RevokeCustomerUserGrant`

- Request: `automcp.v1.RevokeCustomerUserGrantRequest`
- Response: `automcp.v1.RevokeCustomerUserGrantResponse`
- Authentication: `backendKey` (scopes: `users:write`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`                   | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `uint64`                      | false    | string     |       |

#### Response

| Field               | Protobuf type                            | Repeated | JSON shape | Oneof |
| ------------------- | ---------------------------------------- | -------- | ---------- | ----- |
| `customerUserGrant` | `message (automcp.v1.CustomerUserGrant)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.CustomerUserService/RevokeCustomerUserGrant" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedResourceVersion":"1","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.CustomerUserService/UpdateCustomerUserGrant`

- Request: `automcp.v1.UpdateCustomerUserGrantRequest`
- Response: `automcp.v1.UpdateCustomerUserGrantResponse`
- Authentication: `backendKey` (scopes: `users:write`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field                       | Protobuf type                         | Repeated | JSON shape | Oneof |
| --------------------------- | ------------------------------------- | -------- | ---------- | ----- |
| `requestId`                 | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `workspaceId`               | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `appId`                     | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `customerUserId`            | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `expectedResourceVersion`   | `uint64`                              | false    | string     |       |
| `attributesJson`            | `bytes`                               | false    | string     |       |
| `allowedToolIds`            | `message (automcp.v1.UUIDv7)`         | true     | array      |       |
| `registeredOrigins`         | `string`                              | true     | array      |       |
| `expiresAt`                 | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `allowedBrowserTokenScopes` | `string`                              | true     | array      |       |

#### Response

| Field               | Protobuf type                            | Repeated | JSON shape | Oneof |
| ------------------- | ---------------------------------------- | -------- | ---------- | ----- |
| `customerUserGrant` | `message (automcp.v1.CustomerUserGrant)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.CustomerUserService/UpdateCustomerUserGrant" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"allowedBrowserTokenScopes":["sessions:write"],"allowedToolIds":[{"value":"01900000-0000-7000-8000-000000000001"}],"appId":{"value":"01900000-0000-7000-8000-000000000001"},"attributesJson":"e30=","customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedResourceVersion":"1","registeredOrigins":["https://example.com:443"],"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.HostedService/CreateHostedApprovalLink`

- Request: `automcp.v1.CreateHostedApprovalLinkRequest`
- Response: `automcp.v1.CreateHostedApprovalLinkResponse`
- Authentication: `browserToken` (scopes: `approvals:read`)
- Payload access: `metadataOnly`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                 | Repeated | JSON shape | Oneof |
| ---------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `runId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |

#### Response

| Field       | Protobuf type                         | Repeated | JSON shape | Oneof |
| ----------- | ------------------------------------- | -------- | ---------- | ----- |
| `url`       | `string`                              | false    | value      |       |
| `expiresAt` | `message (google.protobuf.Timestamp)` | false    | string     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.HostedService/CreateHostedApprovalLink" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"runId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.MemoryService/DeleteAllMemory`

- Request: `automcp.v1.DeleteAllMemoryRequest`
- Response: `automcp.v1.DeleteAllMemoryResponse`
- Authentication: `backendKey` (scopes: `memory:write`)
- Authentication: `browserToken` (scopes: `memory:write`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field                             | Protobuf type                 | Repeated | JSON shape | Oneof |
| --------------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`                       | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`                     | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`                           | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId`                  | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `expectedSettingsResourceVersion` | `uint64`                      | false    | string     |       |

#### Response

| Field          | Protobuf type                         | Repeated | JSON shape | Oneof |
| -------------- | ------------------------------------- | -------- | ---------- | ----- |
| `settings`     | `message (automcp.v1.MemorySettings)` | false    | object     |       |
| `deletedCount` | `uint64`                              | false    | string     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.MemoryService/DeleteAllMemory" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedSettingsResourceVersion":"1","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.MemoryService/DeleteMemoryItem`

- Request: `automcp.v1.DeleteMemoryItemRequest`
- Response: `automcp.v1.DeleteMemoryItemResponse`
- Authentication: `backendKey` (scopes: `memory:write`)
- Authentication: `browserToken` (scopes: `memory:write`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`                   | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `memoryItemId`            | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `uint64`                      | false    | string     |       |

#### Response

| Field        | Protobuf type                     | Repeated | JSON shape | Oneof |
| ------------ | --------------------------------- | -------- | ---------- | ----- |
| `memoryItem` | `message (automcp.v1.MemoryItem)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.MemoryService/DeleteMemoryItem" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedResourceVersion":"1","memoryItemId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.MemoryService/GetMemorySettings`

- Request: `automcp.v1.GetMemorySettingsRequest`
- Response: `automcp.v1.GetMemorySettingsResponse`
- Authentication: `backendKey` (scopes: `memory:read`)
- Authentication: `browserToken` (scopes: `memory:read`)
- Payload access: `metadataOnly`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                 | Repeated | JSON shape | Oneof |
| ---------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)` | false    | object     |       |

#### Response

| Field      | Protobuf type                         | Repeated | JSON shape | Oneof |
| ---------- | ------------------------------------- | -------- | ---------- | ----- |
| `settings` | `message (automcp.v1.MemorySettings)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.MemoryService/GetMemorySettings" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.MemoryService/ListMemoryItems`

- Request: `automcp.v1.ListMemoryItemsRequest`
- Response: `automcp.v1.ListMemoryItemsResponse`
- Authentication: `backendKey` (scopes: `memory:read`)
- Authentication: `browserToken` (scopes: `memory:read`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                      | Repeated | JSON shape | Oneof |
| ---------------- | ---------------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `page`           | `message (automcp.v1.PageRequest)` | false    | object     |       |

#### Response

| Field         | Protobuf type                     | Repeated | JSON shape | Oneof |
| ------------- | --------------------------------- | -------- | ---------- | ----- |
| `memoryItems` | `message (automcp.v1.MemoryItem)` | true     | array      |       |
| `page`        | `message (automcp.v1.PageInfo)`   | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.MemoryService/ListMemoryItems" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"page":{"cursor":"","pageSize":1},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.MemoryService/UpdateMemoryItem`

- Request: `automcp.v1.UpdateMemoryItemRequest`
- Response: `automcp.v1.UpdateMemoryItemResponse`
- Authentication: `backendKey` (scopes: `memory:write`)
- Authentication: `browserToken` (scopes: `memory:write`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`                   | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `memoryItemId`            | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `uint64`                      | false    | string     |       |
| `valueJson`               | `bytes`                       | false    | string     |       |

#### Response

| Field        | Protobuf type                     | Repeated | JSON shape | Oneof |
| ------------ | --------------------------------- | -------- | ---------- | ----- |
| `memoryItem` | `message (automcp.v1.MemoryItem)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.MemoryService/UpdateMemoryItem" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedResourceVersion":"1","memoryItemId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"valueJson":"e30=","workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.MemoryService/UpdateMemorySettings`

- Request: `automcp.v1.UpdateMemorySettingsRequest`
- Response: `automcp.v1.UpdateMemorySettingsResponse`
- Authentication: `backendKey` (scopes: `memory:write`)
- Authentication: `browserToken` (scopes: `memory:write`)
- Payload access: `metadataOnly`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`                   | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `uint64`                      | false    | string     |       |
| `enabled`                 | `bool`                        | false    | value      |       |

#### Response

| Field      | Protobuf type                         | Repeated | JSON shape | Oneof |
| ---------- | ------------------------------------- | -------- | ---------- | ----- |
| `settings` | `message (automcp.v1.MemorySettings)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.MemoryService/UpdateMemorySettings" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"enabled":true,"expectedResourceVersion":"1","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.OAuthHandoffService/CompleteOAuthLoginRequest`

- Request: `automcp.v1.CompleteOAuthLoginRequestRequest`
- Response: `automcp.v1.CompleteOAuthLoginRequestResponse`
- Authentication: `backendKey` (scopes: `oauth:login:complete`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`                   | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `oauthLoginRequestId`     | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `uint64`                      | false    | string     |       |
| `customerUserId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |

#### Response

| Field                 | Protobuf type                         | Repeated | JSON shape | Oneof |
| --------------------- | ------------------------------------- | -------- | ---------- | ----- |
| `browserReturnUrl`    | `string`                              | false    | value      |       |
| `oauthLoginRequestId` | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `resourceVersion`     | `uint64`                              | false    | string     |       |
| `completedAt`         | `message (google.protobuf.Timestamp)` | false    | string     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.OAuthHandoffService/CompleteOAuthLoginRequest" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedResourceVersion":"1","oauthLoginRequestId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.PlatformService/DownloadArtifact`

- Request: `automcp.v1.DownloadArtifactRequest`
- Response: `automcp.v1.DownloadArtifactResponse`
- Authentication: `backendKey` (scopes: `runs:payload`)
- Authentication: `browserToken` (scopes: `runs:payload`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                 | Repeated | JSON shape | Oneof |
| ---------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `artifactId`     | `message (automcp.v1.UUIDv7)` | false    | object     |       |

#### Response

| Field      | Protobuf type                   | Repeated | JSON shape | Oneof |
| ---------- | ------------------------------- | -------- | ---------- | ----- |
| `artifact` | `message (automcp.v1.Artifact)` | false    | object     |       |
| `content`  | `bytes`                         | false    | string     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.PlatformService/DownloadArtifact" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"artifactId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.PlatformService/GetArtifact`

- Request: `automcp.v1.GetArtifactRequest`
- Response: `automcp.v1.GetArtifactResponse`
- Authentication: `backendKey` (scopes: `runs:payload`)
- Authentication: `browserToken` (scopes: `runs:payload`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                 | Repeated | JSON shape | Oneof |
| ---------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `artifactId`     | `message (automcp.v1.UUIDv7)` | false    | object     |       |

#### Response

| Field      | Protobuf type                   | Repeated | JSON shape | Oneof |
| ---------- | ------------------------------- | -------- | ---------- | ----- |
| `artifact` | `message (automcp.v1.Artifact)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.PlatformService/GetArtifact" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"artifactId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.PlatformService/GetJob`

- Request: `automcp.v1.GetJobRequest`
- Response: `automcp.v1.GetJobResponse`
- Authentication: `backendKey` (scopes: `runs:read`)
- Authentication: `browserToken` (scopes: `runs:read`)
- Payload access: `metadataOnly`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                 | Repeated | JSON shape | Oneof |
| ---------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `jobId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |

#### Response

| Field | Protobuf type              | Repeated | JSON shape | Oneof |
| ----- | -------------------------- | -------- | ---------- | ----- |
| `job` | `message (automcp.v1.Job)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.PlatformService/GetJob" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"jobId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.PlatformService/ListArtifacts`

- Request: `automcp.v1.ListArtifactsRequest`
- Response: `automcp.v1.ListArtifactsResponse`
- Authentication: `backendKey` (scopes: `runs:payload`)
- Authentication: `browserToken` (scopes: `runs:payload`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                      | Repeated | JSON shape | Oneof |
| ---------------- | ---------------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `jobId`          | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `page`           | `message (automcp.v1.PageRequest)` | false    | object     |       |

#### Response

| Field       | Protobuf type                   | Repeated | JSON shape | Oneof |
| ----------- | ------------------------------- | -------- | ---------- | ----- |
| `artifacts` | `message (automcp.v1.Artifact)` | true     | array      |       |
| `page`      | `message (automcp.v1.PageInfo)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.PlatformService/ListArtifacts" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"jobId":{"value":"01900000-0000-7000-8000-000000000001"},"page":{"cursor":"","pageSize":1},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.PlatformService/ListJobs`

- Request: `automcp.v1.ListJobsRequest`
- Response: `automcp.v1.ListJobsResponse`
- Authentication: `backendKey` (scopes: `runs:read`)
- Authentication: `browserToken` (scopes: `runs:read`)
- Payload access: `metadataOnly`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                      | Repeated | JSON shape | Oneof |
| ---------------- | ---------------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `page`           | `message (automcp.v1.PageRequest)` | false    | object     |       |

#### Response

| Field  | Protobuf type                   | Repeated | JSON shape | Oneof |
| ------ | ------------------------------- | -------- | ---------- | ----- |
| `jobs` | `message (automcp.v1.Job)`      | true     | array      |       |
| `page` | `message (automcp.v1.PageInfo)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.PlatformService/ListJobs" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"page":{"cursor":"","pageSize":1},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.RunService/CancelRun`

- Request: `automcp.v1.CancelRunRequest`
- Response: `automcp.v1.CancelRunResponse`
- Authentication: `backendKey` (scopes: `runs:write`)
- Authentication: `browserToken` (scopes: `runs:write`)
- Authentication: `mcpOAuthToken` (scopes: `runs:write`)
- Payload access: `metadataOnly`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`                   | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `runId`                   | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `uint64`                      | false    | string     |       |

#### Response

| Field | Protobuf type              | Repeated | JSON shape | Oneof |
| ----- | -------------------------- | -------- | ---------- | ----- |
| `run` | `message (automcp.v1.Run)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.RunService/CancelRun" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedResourceVersion":"1","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"runId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.RunService/CreateRun`

- Request: `automcp.v1.CreateRunRequest`
- Response: `automcp.v1.CreateRunResponse`
- Authentication: `backendKey` (scopes: `runs:write`)
- Authentication: `browserToken` (scopes: `runs:write`)
- Payload access: `customerPayload`
- Cost behavior: `providerCostSettled`

### JSON fields

#### Request

| Field            | Protobuf type                        | Repeated | JSON shape | Oneof |
| ---------------- | ------------------------------------ | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)`        | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)`        | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)`        | false    | object     |       |
| `appVersionId`   | `message (automcp.v1.UUIDv7)`        | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)`        | false    | object     |       |
| `sessionId`      | `message (automcp.v1.UUIDv7)`        | false    | object     |       |
| `input`          | `message (automcp.v1.TextTurnInput)` | false    | object     |       |

#### Response

| Field | Protobuf type              | Repeated | JSON shape | Oneof |
| ----- | -------------------------- | -------- | ---------- | ----- |
| `run` | `message (automcp.v1.Run)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.RunService/CreateRun" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"appVersionId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"input":{"text":"example"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"sessionId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.RunService/GetRun`

- Request: `automcp.v1.GetRunRequest`
- Response: `automcp.v1.GetRunResponse`
- Authentication: `backendKey` (scopes: `runs:read`)
- Authentication: `browserToken` (scopes: `runs:read`)
- Authentication: `mcpOAuthToken` (scopes: `runs:read`)
- Payload access: `metadataOnly`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                 | Repeated | JSON shape | Oneof |
| ---------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `runId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |

#### Response

| Field | Protobuf type              | Repeated | JSON shape | Oneof |
| ----- | -------------------------- | -------- | ---------- | ----- |
| `run` | `message (automcp.v1.Run)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.RunService/GetRun" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"runId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.RunService/GetRunPayload`

- Request: `automcp.v1.GetRunPayloadRequest`
- Response: `automcp.v1.GetRunPayloadResponse`
- Authentication: `backendKey` (scopes: `runs:payload`)
- Authentication: `browserToken` (scopes: `runs:payload`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                 | Repeated | JSON shape | Oneof |
| ---------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `runId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |

#### Response

| Field     | Protobuf type                     | Repeated | JSON shape | Oneof |
| --------- | --------------------------------- | -------- | ---------- | ----- |
| `payload` | `message (automcp.v1.RunPayload)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.RunService/GetRunPayload" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"runId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.RunService/ListRuns`

- Request: `automcp.v1.ListRunsRequest`
- Response: `automcp.v1.ListRunsResponse`
- Authentication: `backendKey` (scopes: `runs:read`)
- Authentication: `browserToken` (scopes: `runs:read`)
- Payload access: `metadataOnly`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                      | Repeated | JSON shape | Oneof |
| ---------------- | ---------------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `sessionId`      | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `page`           | `message (automcp.v1.PageRequest)` | false    | object     |       |

#### Response

| Field  | Protobuf type                   | Repeated | JSON shape | Oneof |
| ------ | ------------------------------- | -------- | ---------- | ----- |
| `runs` | `message (automcp.v1.Run)`      | true     | array      |       |
| `page` | `message (automcp.v1.PageInfo)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.RunService/ListRuns" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"page":{"cursor":"","pageSize":1},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"sessionId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.RunService/StreamRunText`

- Request: `automcp.v1.StreamRunTextRequest`
- Response: `automcp.v1.StreamRunTextResponse`
- Authentication: `backendKey` (scopes: `runs:payload`)
- Authentication: `browserToken` (scopes: `runs:payload`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                 | Repeated | JSON shape | Oneof |
| ---------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `runId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `afterSequence`  | `uint64`                      | false    | string     |       |

#### Response

| Field   | Protobuf type                       | Repeated | JSON shape | Oneof |
| ------- | ----------------------------------- | -------- | ---------- | ----- |
| `event` | `message (automcp.v1.RunTextEvent)` | false    | object     |       |

- Streaming: Connect server-streaming with length-prefixed JSON envelopes.

```bash
node <<'NODE' | curl --no-buffer -X POST "https://automcp.api.delino.io/automcp.v1.RunService/StreamRunText" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/connect+json' \
  -H 'Connect-Protocol-Version: 1' \
  --data-binary @- \
  --output run.connect
const body = Buffer.from(JSON.stringify({"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"runId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}));
const frame = Buffer.alloc(5);
frame.writeUInt32BE(body.length, 1);
process.stdout.write(Buffer.concat([frame, body]));
NODE
```

The response is a Connect server stream written to `run.connect`; save the latest event `sequence` and reconnect with it as `afterSequence`. A full historical delta replay is not promised.

## `/automcp.v1.RunService/WatchRun`

- Request: `automcp.v1.WatchRunRequest`
- Response: `automcp.v1.WatchRunResponse`
- Authentication: `backendKey` (scopes: `runs:read`)
- Authentication: `browserToken` (scopes: `runs:read`)
- Authentication: `mcpOAuthToken` (scopes: `runs:read`)
- Payload access: `metadataOnly`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                 | Repeated | JSON shape | Oneof |
| ---------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `runId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `afterSequence`  | `uint64`                      | false    | string     |       |

#### Response

| Field   | Protobuf type                        | Repeated | JSON shape | Oneof |
| ------- | ------------------------------------ | -------- | ---------- | ----- |
| `event` | `message (automcp.v1.RunStateEvent)` | false    | object     |       |

- Streaming: Connect server-streaming with length-prefixed JSON envelopes.

```bash
node <<'NODE' | curl --no-buffer -X POST "https://automcp.api.delino.io/automcp.v1.RunService/WatchRun" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/connect+json' \
  -H 'Connect-Protocol-Version: 1' \
  --data-binary @- \
  --output run.connect
const body = Buffer.from(JSON.stringify({"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"runId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}));
const frame = Buffer.alloc(5);
frame.writeUInt32BE(body.length, 1);
process.stdout.write(Buffer.concat([frame, body]));
NODE
```

The response is a Connect server stream written to `run.connect`; save the latest event `sequence` and reconnect with it as `afterSequence`. A full historical delta replay is not promised.

## `/automcp.v1.SessionService/CreateSession`

- Request: `automcp.v1.CreateSessionRequest`
- Response: `automcp.v1.CreateSessionResponse`
- Authentication: `backendKey` (scopes: `sessions:write`)
- Authentication: `browserToken` (scopes: `sessions:write`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                 | Repeated | JSON shape | Oneof |
| ---------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appVersionId`   | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)` | false    | object     |       |

#### Response

| Field     | Protobuf type                  | Repeated | JSON shape | Oneof |
| --------- | ------------------------------ | -------- | ---------- | ----- |
| `session` | `message (automcp.v1.Session)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.SessionService/CreateSession" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.SessionService/CreateVoiceConnectionTicket`

- Request: `automcp.v1.CreateVoiceConnectionTicketRequest`
- Response: `automcp.v1.CreateVoiceConnectionTicketResponse`
- Authentication: `browserToken` (scopes: `voice:connect`)
- Payload access: `writeOnlySecret`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                 | Repeated | JSON shape | Oneof |
| ---------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `sessionId`      | `message (automcp.v1.UUIDv7)` | false    | object     |       |

#### Response

| Field          | Protobuf type                         | Repeated | JSON shape | Oneof |
| -------------- | ------------------------------------- | -------- | ---------- | ----- |
| `ticket`       | `string`                              | false    | value      |       |
| `websocketUrl` | `string`                              | false    | value      |       |
| `expiresAt`    | `message (google.protobuf.Timestamp)` | false    | string     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.SessionService/CreateVoiceConnectionTicket" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"sessionId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.SessionService/DeleteSession`

- Request: `automcp.v1.DeleteSessionRequest`
- Response: `automcp.v1.DeleteSessionResponse`
- Authentication: `backendKey` (scopes: `sessions:write`)
- Authentication: `browserToken` (scopes: `sessions:write`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`                   | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `sessionId`               | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `uint64`                      | false    | string     |       |

#### Response

| Field     | Protobuf type                  | Repeated | JSON shape | Oneof |
| --------- | ------------------------------ | -------- | ---------- | ----- |
| `session` | `message (automcp.v1.Session)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.SessionService/DeleteSession" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedResourceVersion":"1","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"sessionId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.SessionService/GetSession`

- Request: `automcp.v1.GetSessionRequest`
- Response: `automcp.v1.GetSessionResponse`
- Authentication: `backendKey` (scopes: `sessions:read`)
- Authentication: `browserToken` (scopes: `sessions:read`)
- Payload access: `customerPayload`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                 | Repeated | JSON shape | Oneof |
| ---------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `sessionId`      | `message (automcp.v1.UUIDv7)` | false    | object     |       |

#### Response

| Field     | Protobuf type                  | Repeated | JSON shape | Oneof |
| --------- | ------------------------------ | -------- | ---------- | ----- |
| `session` | `message (automcp.v1.Session)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.SessionService/GetSession" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"sessionId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.SessionService/ListSessions`

- Request: `automcp.v1.ListSessionsRequest`
- Response: `automcp.v1.ListSessionsResponse`
- Authentication: `backendKey` (scopes: `sessions:read`)
- Authentication: `browserToken` (scopes: `sessions:read`)
- Payload access: `metadataOnly`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field            | Protobuf type                      | Repeated | JSON shape | Oneof |
| ---------------- | ---------------------------------- | -------- | ---------- | ----- |
| `requestId`      | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `workspaceId`    | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `appId`          | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `customerUserId` | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `page`           | `message (automcp.v1.PageRequest)` | false    | object     |       |

#### Response

| Field      | Protobuf type                   | Repeated | JSON shape | Oneof |
| ---------- | ------------------------------- | -------- | ---------- | ----- |
| `sessions` | `message (automcp.v1.Session)`  | true     | array      |       |
| `page`     | `message (automcp.v1.PageInfo)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.SessionService/ListSessions" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"customerUserId":{"value":"01900000-0000-7000-8000-000000000001"},"page":{"cursor":"","pageSize":1},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.WebhookService/CreateWebhookEndpoint`

- Request: `automcp.v1.CreateWebhookEndpointRequest`
- Response: `automcp.v1.CreateWebhookEndpointResponse`
- Authentication: `backendKey` (scopes: `webhooks:write`)
- Authentication: `logtoUser` (authorization: Delcore permissions)
- Payload access: `writeOnlySecret`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field         | Protobuf type                        | Repeated | JSON shape | Oneof |
| ------------- | ------------------------------------ | -------- | ---------- | ----- |
| `requestId`   | `message (automcp.v1.UUIDv7)`        | false    | object     |       |
| `workspaceId` | `message (automcp.v1.UUIDv7)`        | false    | object     |       |
| `appId`       | `message (automcp.v1.UUIDv7)`        | false    | object     |       |
| `url`         | `string`                             | false    | value      |       |
| `eventTypes`  | `enum (automcp.v1.WebhookEventType)` | true     | array      |       |

#### Response

| Field             | Protobuf type                          | Repeated | JSON shape | Oneof |
| ----------------- | -------------------------------------- | -------- | ---------- | ----- |
| `webhookEndpoint` | `message (automcp.v1.WebhookEndpoint)` | false    | object     |       |
| `signingSecret`   | `string`                               | false    | value      |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.WebhookService/CreateWebhookEndpoint" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"eventTypes":["WEBHOOK_EVENT_TYPE_RUN_COMPLETED"],"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"url":"https://example.com/webhook","workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.WebhookService/DeleteWebhookEndpoint`

- Request: `automcp.v1.DeleteWebhookEndpointRequest`
- Response: `automcp.v1.DeleteWebhookEndpointResponse`
- Authentication: `backendKey` (scopes: `webhooks:write`)
- Authentication: `logtoUser` (authorization: Delcore permissions)
- Payload access: `metadataOnly`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`                   | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `webhookEndpointId`       | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `uint64`                      | false    | string     |       |

#### Response

| Field             | Protobuf type                          | Repeated | JSON shape | Oneof |
| ----------------- | -------------------------------------- | -------- | ---------- | ----- |
| `webhookEndpoint` | `message (automcp.v1.WebhookEndpoint)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.WebhookService/DeleteWebhookEndpoint" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedResourceVersion":"1","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"webhookEndpointId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.WebhookService/GetWebhookEndpoint`

- Request: `automcp.v1.GetWebhookEndpointRequest`
- Response: `automcp.v1.GetWebhookEndpointResponse`
- Authentication: `backendKey` (scopes: `webhooks:read`)
- Authentication: `logtoUser` (authorization: Delcore permissions)
- Payload access: `metadataOnly`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field               | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`         | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`       | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`             | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `webhookEndpointId` | `message (automcp.v1.UUIDv7)` | false    | object     |       |

#### Response

| Field             | Protobuf type                          | Repeated | JSON shape | Oneof |
| ----------------- | -------------------------------------- | -------- | ---------- | ----- |
| `webhookEndpoint` | `message (automcp.v1.WebhookEndpoint)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.WebhookService/GetWebhookEndpoint" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"webhookEndpointId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.WebhookService/ListWebhookDeliveries`

- Request: `automcp.v1.ListWebhookDeliveriesRequest`
- Response: `automcp.v1.ListWebhookDeliveriesResponse`
- Authentication: `backendKey` (scopes: `webhooks:read`)
- Authentication: `logtoUser` (authorization: Delcore permissions)
- Payload access: `metadataOnly`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field               | Protobuf type                      | Repeated | JSON shape | Oneof |
| ------------------- | ---------------------------------- | -------- | ---------- | ----- |
| `requestId`         | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `workspaceId`       | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `appId`             | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `webhookEndpointId` | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `page`              | `message (automcp.v1.PageRequest)` | false    | object     |       |

#### Response

| Field               | Protobuf type                          | Repeated | JSON shape | Oneof |
| ------------------- | -------------------------------------- | -------- | ---------- | ----- |
| `webhookDeliveries` | `message (automcp.v1.WebhookDelivery)` | true     | array      |       |
| `page`              | `message (automcp.v1.PageInfo)`        | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.WebhookService/ListWebhookDeliveries" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"page":{"cursor":"","pageSize":1},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"webhookEndpointId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.WebhookService/ListWebhookEndpoints`

- Request: `automcp.v1.ListWebhookEndpointsRequest`
- Response: `automcp.v1.ListWebhookEndpointsResponse`
- Authentication: `backendKey` (scopes: `webhooks:read`)
- Authentication: `logtoUser` (authorization: Delcore permissions)
- Payload access: `metadataOnly`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field         | Protobuf type                      | Repeated | JSON shape | Oneof |
| ------------- | ---------------------------------- | -------- | ---------- | ----- |
| `requestId`   | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `workspaceId` | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `appId`       | `message (automcp.v1.UUIDv7)`      | false    | object     |       |
| `page`        | `message (automcp.v1.PageRequest)` | false    | object     |       |

#### Response

| Field              | Protobuf type                          | Repeated | JSON shape | Oneof |
| ------------------ | -------------------------------------- | -------- | ---------- | ----- |
| `webhookEndpoints` | `message (automcp.v1.WebhookEndpoint)` | true     | array      |       |
| `page`             | `message (automcp.v1.PageInfo)`        | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.WebhookService/ListWebhookEndpoints" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"page":{"cursor":"","pageSize":1},"requestId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.WebhookService/RedeliverWebhookDelivery`

- Request: `automcp.v1.RedeliverWebhookDeliveryRequest`
- Response: `automcp.v1.RedeliverWebhookDeliveryResponse`
- Authentication: `backendKey` (scopes: `webhooks:write`)
- Authentication: `logtoUser` (authorization: Delcore permissions)
- Payload access: `metadataOnly`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`                   | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `webhookDeliveryId`       | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `uint64`                      | false    | string     |       |

#### Response

| Field             | Protobuf type                          | Repeated | JSON shape | Oneof |
| ----------------- | -------------------------------------- | -------- | ---------- | ----- |
| `webhookDelivery` | `message (automcp.v1.WebhookDelivery)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.WebhookService/RedeliverWebhookDelivery" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedResourceVersion":"1","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"webhookDeliveryId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.WebhookService/RotateWebhookSecret`

- Request: `automcp.v1.RotateWebhookSecretRequest`
- Response: `automcp.v1.RotateWebhookSecretResponse`
- Authentication: `backendKey` (scopes: `webhooks:write`)
- Authentication: `logtoUser` (authorization: Delcore permissions)
- Payload access: `writeOnlySecret`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field                     | Protobuf type                 | Repeated | JSON shape | Oneof |
| ------------------------- | ----------------------------- | -------- | ---------- | ----- |
| `requestId`               | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `workspaceId`             | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`                   | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `webhookEndpointId`       | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `expectedResourceVersion` | `uint64`                      | false    | string     |       |

#### Response

| Field             | Protobuf type                          | Repeated | JSON shape | Oneof |
| ----------------- | -------------------------------------- | -------- | ---------- | ----- |
| `webhookEndpoint` | `message (automcp.v1.WebhookEndpoint)` | false    | object     |       |
| `signingSecret`   | `string`                               | false    | value      |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.WebhookService/RotateWebhookSecret" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"expectedResourceVersion":"1","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"webhookEndpointId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## `/automcp.v1.WebhookService/UpdateWebhookEndpoint`

- Request: `automcp.v1.UpdateWebhookEndpointRequest`
- Response: `automcp.v1.UpdateWebhookEndpointResponse`
- Authentication: `backendKey` (scopes: `webhooks:write`)
- Authentication: `logtoUser` (authorization: Delcore permissions)
- Payload access: `metadataOnly`
- Cost behavior: `freeControlPlane`

### JSON fields

#### Request

| Field                     | Protobuf type                        | Repeated | JSON shape | Oneof |
| ------------------------- | ------------------------------------ | -------- | ---------- | ----- |
| `requestId`               | `message (automcp.v1.UUIDv7)`        | false    | object     |       |
| `workspaceId`             | `message (automcp.v1.UUIDv7)`        | false    | object     |       |
| `appId`                   | `message (automcp.v1.UUIDv7)`        | false    | object     |       |
| `webhookEndpointId`       | `message (automcp.v1.UUIDv7)`        | false    | object     |       |
| `expectedResourceVersion` | `uint64`                             | false    | string     |       |
| `url`                     | `string`                             | false    | value      |       |
| `eventTypes`              | `enum (automcp.v1.WebhookEventType)` | true     | array      |       |
| `enabled`                 | `bool`                               | false    | value      |       |

#### Response

| Field             | Protobuf type                          | Repeated | JSON shape | Oneof |
| ----------------- | -------------------------------------- | -------- | ---------- | ----- |
| `webhookEndpoint` | `message (automcp.v1.WebhookEndpoint)` | false    | object     |       |

- Streaming: unary JSON request and response.

```bash
curl -X POST "https://automcp.api.delino.io/automcp.v1.WebhookService/UpdateWebhookEndpoint" \
  -H "Authorization: Bearer $AUTOMCP_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Connect-Protocol-Version: 1' \
  -d '{"appId":{"value":"01900000-0000-7000-8000-000000000001"},"enabled":true,"eventTypes":["WEBHOOK_EVENT_TYPE_RUN_COMPLETED"],"expectedResourceVersion":"1","requestId":{"value":"01900000-0000-7000-8000-000000000001"},"url":"https://example.com/webhook","webhookEndpointId":{"value":"01900000-0000-7000-8000-000000000001"},"workspaceId":{"value":"01900000-0000-7000-8000-000000000001"}}'
```

## Referenced message and enum schemas

### `automcp.v1.Approval`

| Field                | Protobuf type                         | Repeated | JSON shape             | Oneof |
| -------------------- | ------------------------------------- | -------- | ---------------------- | ----- |
| `approvalId`         | `message (automcp.v1.UUIDv7)`         | false    | object                 |       |
| `workspaceId`        | `message (automcp.v1.UUIDv7)`         | false    | object                 |       |
| `appId`              | `message (automcp.v1.UUIDv7)`         | false    | object                 |       |
| `customerUserId`     | `message (automcp.v1.UUIDv7)`         | false    | object                 |       |
| `runId`              | `message (automcp.v1.UUIDv7)`         | false    | object                 |       |
| `toolId`             | `message (automcp.v1.UUIDv7)`         | false    | object                 |       |
| `state`              | `enum (automcp.v1.ApprovalState)`     | false    | string                 |       |
| `proposedArguments`  | `message (automcp.v1.EncodedPayload)` | false    | object                 |       |
| `resourceVersion`    | `uint64`                              | false    | string                 |       |
| `expiresAt`          | `message (google.protobuf.Timestamp)` | false    | string                 |       |
| `target`             | `message (automcp.v1.ApprovalTarget)` | false    | object                 |       |
| `argumentSha256`     | `bytes`                               | false    | string                 |       |
| `trustedUserHeaders` | `map<string, string>`                 | false    | object keyed by string |       |

### `automcp.v1.ApprovalTarget`

| Field                   | Protobuf type | Repeated | JSON shape | Oneof |
| ----------------------- | ------------- | -------- | ---------- | ----- |
| `appDisplayName`        | `string`      | false    | value      |       |
| `publishedVersionLabel` | `string`      | false    | value      |       |
| `toolName`              | `string`      | false    | value      |       |
| `destination`           | `string`      | false    | value      |       |

### `automcp.v1.Artifact`

| Field        | Protobuf type                         | Repeated | JSON shape | Oneof |
| ------------ | ------------------------------------- | -------- | ---------- | ----- |
| `artifactId` | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `jobId`      | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `runId`      | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `filename`   | `string`                              | false    | value      |       |
| `mediaType`  | `string`                              | false    | value      |       |
| `sizeBytes`  | `uint64`                              | false    | string     |       |
| `sha256`     | `bytes`                               | false    | string     |       |
| `expiresAt`  | `message (google.protobuf.Timestamp)` | false    | string     |       |

### `automcp.v1.CustomerUserGrant`

| Field                       | Protobuf type                         | Repeated | JSON shape | Oneof |
| --------------------------- | ------------------------------------- | -------- | ---------- | ----- |
| `customerUserId`            | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `workspaceId`               | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `appId`                     | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `externalUserId`            | `string`                              | false    | value      |       |
| `attributesJson`            | `bytes`                               | false    | string     |       |
| `resourceVersion`           | `uint64`                              | false    | string     |       |
| `createdAt`                 | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `updatedAt`                 | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `allowedToolIds`            | `message (automcp.v1.UUIDv7)`         | true     | array      |       |
| `registeredOrigins`         | `string`                              | true     | array      |       |
| `expiresAt`                 | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `revokedAt`                 | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `allowedBrowserTokenScopes` | `string`                              | true     | array      |       |

### `automcp.v1.EncodedPayload`

| Field          | Protobuf type                       | Repeated | JSON shape | Oneof |
| -------------- | ----------------------------------- | -------- | ---------- | ----- |
| `encoding`     | `enum (automcp.v1.PayloadEncoding)` | false    | string     |       |
| `value`        | `bytes`                             | false    | string     |       |
| `schemaSha256` | `bytes`                             | false    | string     |       |

### `automcp.v1.ErrorDetail`

| Field               | Protobuf type                         | Repeated | JSON shape | Oneof |
| ------------------- | ------------------------------------- | -------- | ---------- | ----- |
| `reason`            | `enum (automcp.v1.ErrorReason)`       | false    | string     |       |
| `requestId`         | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `correlationId`     | `string`                              | false    | value      |       |
| `retryAfterSeconds` | `uint32`                              | false    | value      |       |
| `retryGuidance`     | `enum (automcp.v1.RetryGuidance)`     | false    | string     |       |
| `fieldViolations`   | `message (automcp.v1.FieldViolation)` | true     | array      |       |

### `automcp.v1.FieldViolation`

| Field         | Protobuf type | Repeated | JSON shape | Oneof |
| ------------- | ------------- | -------- | ---------- | ----- |
| `field`       | `string`      | false    | value      |       |
| `description` | `string`      | false    | value      |       |

### `automcp.v1.Job`

| Field             | Protobuf type                         | Repeated | JSON shape | Oneof |
| ----------------- | ------------------------------------- | -------- | ---------- | ----- |
| `jobId`           | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `runId`           | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `workspaceId`     | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `appId`           | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `customerUserId`  | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `state`           | `enum (automcp.v1.RunState)`          | false    | string     |       |
| `resourceVersion` | `uint64`                              | false    | string     |       |
| `createdAt`       | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `completedAt`     | `message (google.protobuf.Timestamp)` | false    | string     |       |

### `automcp.v1.MemoryItem`

| Field              | Protobuf type                         | Repeated | JSON shape | Oneof |
| ------------------ | ------------------------------------- | -------- | ---------- | ----- |
| `memoryItemId`     | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `workspaceId`      | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `appId`            | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `customerUserId`   | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `key`              | `string`                              | false    | value      |       |
| `valueJson`        | `bytes`                               | false    | string     |       |
| `resourceVersion`  | `uint64`                              | false    | string     |       |
| `updatedAt`        | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `sourceSessionIds` | `message (automcp.v1.UUIDv7)`         | true     | array      |       |

### `automcp.v1.MemorySettings`

| Field             | Protobuf type                 | Repeated | JSON shape | Oneof |
| ----------------- | ----------------------------- | -------- | ---------- | ----- |
| `workspaceId`     | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `appId`           | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `customerUserId`  | `message (automcp.v1.UUIDv7)` | false    | object     |       |
| `enabled`         | `bool`                        | false    | value      |       |
| `resourceVersion` | `uint64`                      | false    | string     |       |

### `automcp.v1.PageInfo`

| Field        | Protobuf type | Repeated | JSON shape | Oneof |
| ------------ | ------------- | -------- | ---------- | ----- |
| `nextCursor` | `string`      | false    | value      |       |

### `automcp.v1.PageRequest`

| Field      | Protobuf type | Repeated | JSON shape | Oneof |
| ---------- | ------------- | -------- | ---------- | ----- |
| `pageSize` | `uint32`      | false    | value      |       |
| `cursor`   | `string`      | false    | value      |       |

### `automcp.v1.Run`

| Field                 | Protobuf type                         | Repeated | JSON shape | Oneof |
| --------------------- | ------------------------------------- | -------- | ---------- | ----- |
| `runId`               | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `workspaceId`         | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `appId`               | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `appVersionId`        | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `customerUserId`      | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `sessionId`           | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `state`               | `enum (automcp.v1.RunState)`          | false    | string     |       |
| `resourceVersion`     | `uint64`                              | false    | string     |       |
| `settledCustomerCost` | `message (automcp.v1.USDAmount)`      | false    | object     |       |
| `error`               | `message (automcp.v1.ErrorDetail)`    | false    | object     |       |
| `createdAt`           | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `updatedAt`           | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `memoryWarning`       | `bool`                                | false    | value      |       |
| `jobId`               | `message (automcp.v1.UUIDv7)`         | false    | object     |       |

### `automcp.v1.RunPayload`

| Field       | Protobuf type                          | Repeated | JSON shape | Oneof |
| ----------- | -------------------------------------- | -------- | ---------- | ----- |
| `input`     | `message (automcp.v1.TextTurnInput)`   | false    | object     |       |
| `output`    | `message (automcp.v1.TextTurnOutput)`  | false    | object     |       |
| `toolCalls` | `message (automcp.v1.ToolCallPayload)` | true     | array      |       |

### `automcp.v1.RunStateEvent`

| Field                | Protobuf type                         | Repeated | JSON shape | Oneof |
| -------------------- | ------------------------------------- | -------- | ---------- | ----- |
| `eventId`            | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `runId`              | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `sequence`           | `uint64`                              | false    | string     |       |
| `state`              | `enum (automcp.v1.RunState)`          | false    | string     |       |
| `runResourceVersion` | `uint64`                              | false    | string     |       |
| `error`              | `message (automcp.v1.ErrorDetail)`    | false    | object     |       |
| `occurredAt`         | `message (google.protobuf.Timestamp)` | false    | string     |       |

### `automcp.v1.RunTextEvent`

| Field        | Protobuf type                         | Repeated | JSON shape | Oneof |
| ------------ | ------------------------------------- | -------- | ---------- | ----- |
| `eventId`    | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `runId`      | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `sequence`   | `uint64`                              | false    | string     |       |
| `delta`      | `string`                              | false    | value      |       |
| `final`      | `bool`                                | false    | value      |       |
| `occurredAt` | `message (google.protobuf.Timestamp)` | false    | string     |       |

### `automcp.v1.Secret`

| Field             | Protobuf type                         | Repeated | JSON shape | Oneof |
| ----------------- | ------------------------------------- | -------- | ---------- | ----- |
| `secretId`        | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `workspaceId`     | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `appId`           | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `customerUserId`  | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `name`            | `string`                              | false    | value      |       |
| `activeVersion`   | `uint32`                              | false    | value      |       |
| `resourceVersion` | `uint64`                              | false    | string     |       |
| `createdAt`       | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `updatedAt`       | `message (google.protobuf.Timestamp)` | false    | string     |       |

### `automcp.v1.Session`

| Field             | Protobuf type                         | Repeated | JSON shape | Oneof |
| ----------------- | ------------------------------------- | -------- | ---------- | ----- |
| `sessionId`       | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `workspaceId`     | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `appId`           | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `appVersionId`    | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `customerUserId`  | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `state`           | `enum (automcp.v1.SessionState)`      | false    | string     |       |
| `resourceVersion` | `uint64`                              | false    | string     |       |
| `createdAt`       | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `updatedAt`       | `message (google.protobuf.Timestamp)` | false    | string     |       |

### `automcp.v1.TextTurnInput`

| Field  | Protobuf type | Repeated | JSON shape | Oneof |
| ------ | ------------- | -------- | ---------- | ----- |
| `text` | `string`      | false    | value      |       |

### `automcp.v1.TextTurnOutput`

| Field  | Protobuf type | Repeated | JSON shape | Oneof |
| ------ | ------------- | -------- | ---------- | ----- |
| `text` | `string`      | false    | value      |       |

### `automcp.v1.ToolCallPayload`

| Field       | Protobuf type                         | Repeated | JSON shape | Oneof |
| ----------- | ------------------------------------- | -------- | ---------- | ----- |
| `toolId`    | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `arguments` | `message (automcp.v1.EncodedPayload)` | false    | object     |       |
| `result`    | `message (automcp.v1.EncodedPayload)` | false    | object     |       |

### `automcp.v1.USDAmount`

| Field        | Protobuf type | Repeated | JSON shape | Oneof |
| ------------ | ------------- | -------- | ---------- | ----- |
| `millionths` | `int64`       | false    | string     |       |

### `automcp.v1.UUIDv7`

| Field   | Protobuf type | Repeated | JSON shape | Oneof |
| ------- | ------------- | -------- | ---------- | ----- |
| `value` | `string`      | false    | value      |       |

### `automcp.v1.WebhookDelivery`

| Field               | Protobuf type                            | Repeated | JSON shape | Oneof |
| ------------------- | ---------------------------------------- | -------- | ---------- | ----- |
| `webhookDeliveryId` | `message (automcp.v1.UUIDv7)`            | false    | object     |       |
| `workspaceId`       | `message (automcp.v1.UUIDv7)`            | false    | object     |       |
| `appId`             | `message (automcp.v1.UUIDv7)`            | false    | object     |       |
| `webhookEndpointId` | `message (automcp.v1.UUIDv7)`            | false    | object     |       |
| `eventType`         | `enum (automcp.v1.WebhookEventType)`     | false    | string     |       |
| `subjectId`         | `message (automcp.v1.UUIDv7)`            | false    | object     |       |
| `state`             | `enum (automcp.v1.WebhookDeliveryState)` | false    | string     |       |
| `attemptCount`      | `uint32`                                 | false    | value      |       |
| `createdAt`         | `message (google.protobuf.Timestamp)`    | false    | string     |       |
| `deliveredAt`       | `message (google.protobuf.Timestamp)`    | false    | string     |       |
| `resourceVersion`   | `uint64`                                 | false    | string     |       |
| `eventId`           | `message (automcp.v1.UUIDv7)`            | false    | object     |       |
| `eventVersion`      | `uint32`                                 | false    | value      |       |

### `automcp.v1.WebhookEndpoint`

| Field               | Protobuf type                         | Repeated | JSON shape | Oneof |
| ------------------- | ------------------------------------- | -------- | ---------- | ----- |
| `webhookEndpointId` | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `workspaceId`       | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `appId`             | `message (automcp.v1.UUIDv7)`         | false    | object     |       |
| `url`               | `string`                              | false    | value      |       |
| `eventTypes`        | `enum (automcp.v1.WebhookEventType)`  | true     | array      |       |
| `enabled`           | `bool`                                | false    | value      |       |
| `resourceVersion`   | `uint64`                              | false    | string     |       |
| `createdAt`         | `message (google.protobuf.Timestamp)` | false    | string     |       |
| `updatedAt`         | `message (google.protobuf.Timestamp)` | false    | string     |       |

### `google.protobuf.Timestamp`

| JSON representation |
| ------------------- |
| string              |

### `automcp.v1.ApprovalDecision` enum values

- `APPROVAL_DECISION_UNSPECIFIED`
- `APPROVAL_DECISION_APPROVE`
- `APPROVAL_DECISION_REJECT`

### `automcp.v1.ApprovalState` enum values

- `APPROVAL_STATE_UNSPECIFIED`
- `APPROVAL_STATE_PENDING`
- `APPROVAL_STATE_APPROVED`
- `APPROVAL_STATE_REJECTED`
- `APPROVAL_STATE_EXPIRED`
- `APPROVAL_STATE_CANCELED`

### `automcp.v1.ErrorReason` enum values

- `ERROR_REASON_UNSPECIFIED`
- `ERROR_REASON_INVALID_ARGUMENT`
- `ERROR_REASON_AUTHENTICATION_REQUIRED`
- `ERROR_REASON_AUTHORIZATION_DENIED`
- `ERROR_REASON_RESOURCE_NOT_FOUND`
- `ERROR_REASON_IDEMPOTENCY_CONFLICT`
- `ERROR_REASON_RESOURCE_VERSION_CONFLICT`
- `ERROR_REASON_FAILED_PRECONDITION`
- `ERROR_REASON_QUOTA_EXHAUSTED`
- `ERROR_REASON_RATE_LIMITED`
- `ERROR_REASON_CONCURRENCY_EXHAUSTED`
- `ERROR_REASON_BILLING_BLOCKED`
- `ERROR_REASON_DEPENDENCY_UNAVAILABLE`
- `ERROR_REASON_APP_STOPPED`
- `ERROR_REASON_VERSION_STOPPED`
- `ERROR_REASON_SPEC_INVALID`
- `ERROR_REASON_TOOL_UNSUPPORTED`
- `ERROR_REASON_APPROVAL_REQUIRED`
- `ERROR_REASON_APPROVAL_EXPIRED`
- `ERROR_REASON_OUTCOME_UNKNOWN`
- `ERROR_REASON_COST_UNVERIFIED`
- `ERROR_REASON_INTERNAL`

### `automcp.v1.PayloadEncoding` enum values

- `PAYLOAD_ENCODING_UNSPECIFIED`
- `PAYLOAD_ENCODING_JSON`
- `PAYLOAD_ENCODING_PROTO_JSON`

### `automcp.v1.RetryGuidance` enum values

- `RETRY_GUIDANCE_UNSPECIFIED`
- `RETRY_GUIDANCE_AFTER_DELAY`
- `RETRY_GUIDANCE_AFTER_DEPENDENCY_RECOVERY`
- `RETRY_GUIDANCE_AFTER_REAUTHENTICATION`
- `RETRY_GUIDANCE_AFTER_STATE_CHANGE`
- `RETRY_GUIDANCE_DO_NOT_RETRY`

### `automcp.v1.RunState` enum values

- `RUN_STATE_UNSPECIFIED`
- `RUN_STATE_QUEUED`
- `RUN_STATE_RUNNING`
- `RUN_STATE_AWAITING_APPROVAL`
- `RUN_STATE_AWAITING_COST_EVIDENCE`
- `RUN_STATE_AWAITING_SETTLEMENT`
- `RUN_STATE_CANCELING`
- `RUN_STATE_SUCCEEDED`
- `RUN_STATE_FAILED`
- `RUN_STATE_CANCELED`
- `RUN_STATE_OUTCOME_UNKNOWN`

### `automcp.v1.SessionState` enum values

- `SESSION_STATE_UNSPECIFIED`
- `SESSION_STATE_ACTIVE`
- `SESSION_STATE_DELETED`

### `automcp.v1.WebhookDeliveryState` enum values

- `WEBHOOK_DELIVERY_STATE_UNSPECIFIED`
- `WEBHOOK_DELIVERY_STATE_PENDING`
- `WEBHOOK_DELIVERY_STATE_DELIVERED`
- `WEBHOOK_DELIVERY_STATE_FAILED`
- `WEBHOOK_DELIVERY_STATE_CANCELED`

### `automcp.v1.WebhookEventType` enum values

- `WEBHOOK_EVENT_TYPE_UNSPECIFIED`
- `WEBHOOK_EVENT_TYPE_RUN_STATE_CHANGED`
- `WEBHOOK_EVENT_TYPE_RUN_COMPLETED`
- `WEBHOOK_EVENT_TYPE_RUN_FAILED`
- `WEBHOOK_EVENT_TYPE_RUN_OUTCOME_UNKNOWN`
- `WEBHOOK_EVENT_TYPE_APPROVAL_REQUIRED`
