---
# @generated by sylphx-gen. Do not edit.
title: "List owner pools"
description: "`agents.owner_pools.list` (GET /v1/{parent}/owner_pools): Lists owner pools, newest first."
type: reference
product: agents
summary: "Lists owner pools, newest first."
updated: 2026-09-28
nav: false
---

Lists owner pools, newest first.

- **Path** `GET https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/owner_pools`
- **Scope** `agents:read`
- **Effect** `read` — nothing is written.
- **Collection** [owner_pools](/docs/api/owner_pools)
- **Query** `page_size`, `page_token`
- **Pagination** the answer carries `owner_pools` and, when there is more, `next_page_token`

## Request

| Field | Type | What it is |
| --- | --- | --- |
| `parent` | `string` | The parent to list in. Required. |
| `page_size` | `int32` | At most this many; default 50, clamped to 1000. |
| `page_token` | `string` | `next_page_token` of the previous page. |

## Response

| Field | Type | What it is |
| --- | --- | --- |
| `owner_pools` | `OwnerPool[]` | The page. |
| `next_page_token` | `string` | The token of the next page; empty on the last page. |

### OwnerPool

| Field | Type | What it is |
| --- | --- | --- |
| `name` | `string` | `orgs/{org}/projects/{project}/envs/{env}/owner_pools/{owner_pool}`. |
| `uid` | `string` | `aop_<cell><ulid>`; never reused. Output only. |
| `meta` | `ResourceMeta` | Resource metadata. |
| `spec` | `OwnerPoolSpec` | Desired state. Required. |
| `status` | `OwnerPoolStatus` | Observed state: the members. Output only. |

### ResourceMeta

| Field | Type | What it is |
| --- | --- | --- |
| `generation` | `int64` | Increases by one on every change to `spec`. Output only. |
| `etag` | `string` | Strong ETag (AIP-154): changes on any change to spec, status, or metadata. Send it back as `If-Match` or `etag` to make Update and Delete conditional; a mismatch fails with ABORTED / 409 `ETAG_MISMATCH`. Output only. |
| `create_time` | `timestamp` | When the Resource was created. Output only. |
| `update_time` | `timestamp` | When the Resource last changed. Output only. |
| `delete_time` | `timestamp` | Set while the Resource is being deleted. Output only. |
| `labels` | `map<string, string>` | Caller-writable, indexed labels (AIP-122 label rules). |
| `annotations` | `map<string, string>` | Caller-writable, unindexed annotations. |
| `display_name` | `string` | Caller-writable human-readable name. |
| `creator` | `string` | The principal that created the Resource. Output only. |

### OwnerPoolSpec

| Field | Type | What it is |
| --- | --- | --- |
| `admission` | `OwnerPoolAdmission` | The admission test every member passes. Required. |
| `demotion` | `OwnerPoolDemotionRule[]` | Live-metric rules that demote a member; at most 16, each metric once. |

### OwnerPoolStatus

| Field | Type | What it is |
| --- | --- | --- |
| `observed_generation` | `int64` | The generation this status was computed from. Output only. |
| `conditions` | `Condition[]` | Ready. Output only. |
| `members` | `OwnerPoolMember[]` | Every version ever submitted to `:qualify`, most recently changed first. Output only. |

### OwnerPoolAdmission

| Field | Type | What it is |
| --- | --- | --- |
| `suite` | `string` | The suite's id, matched exactly by `:qualify`; at most 200 characters. Required. |
| `min_scores` | `map<string, double>` | Minimum score per suite metric, higher is better; 1 to 64 metrics. A member qualifies only when every metric is reported at or above its minimum. Required. |
| `suite_version` | `string` | The suite's version, matched exactly by `:qualify`; at most 200 characters. Required. |

### OwnerPoolDemotionRule

| Field | Type | What it is |
| --- | --- | --- |
| `metric` | `string` | The live metric's name, as `:observe` reports it. Required. |
| `max_regression` | `double` | The tolerated regression as a fraction of the baseline: a member is demoted when the observed value exceeds `baseline * (1 + max_regression)`. Required. |
| `min_samples` | `int64` | Observations over fewer samples than this are recorded but never count toward the baseline or demote; default 1. |
| `baseline_observations` | `int64` | The baseline is the median of the member's first this many counted observations of the metric, set once it is finite and positive (while the median is zero the window moves on). 1 to 100; default 5. |

### Condition

| Field | Type | What it is |
| --- | --- | --- |
| `type` | `string` | The condition type, for example `Ready`. |
| `status` | `ConditionStatus` | Whether the condition holds. One of `true`, `false`, `unknown`. |
| `observed_generation` | `int64` | The generation this observation was made against. |
| `reason` | `string` | A machine-readable UpperCamelCase reason. |
| `message` | `string` | A customer-safe human-readable message. |
| `severity` | `Severity` | How severe a FALSE condition is. One of `info`, `warning`, `error`. |
| `transition_time` | `timestamp` | When `status` last changed. |

### OwnerPoolMember

| Field | Type | What it is |
| --- | --- | --- |
| `agent_version` | `string` | The member version. Output only. |
| `model` | `string` | The model the version pins. Output only. |
| `state` | `OwnerPoolMemberState` | Qualified, refused or demoted. Output only. One of `qualified`, `refused`, `demoted`. |
| `suite` | `string` | The suite of the latest `:qualify`. Output only. |
| `scores` | `map<string, double>` | The scores of the latest `:qualify`. Output only. |
| `baseline` | `map<string, double>` | The baseline per demotion metric, computed by the platform from counted observations; a re-qualify keeps it. Output only. |
| `observed` | `map<string, double>` | The latest observation per metric. Output only. |
| `qualify_time` | `timestamp` | When it last qualified. Output only. |
| `demote_time` | `timestamp` | When it was last demoted. Output only. |
| `reason` | `string` | Why it was refused or demoted. Output only. |
| `update_time` | `timestamp` | When the state last changed. Output only. |
| `suite_version` | `string` | The suite version of the latest `:qualify`. Output only. |
| `result` | `string` | The suite result of the latest `:qualify`. Output only. |
| `qualifier` | `string` | The principal that recorded the latest `:qualify`. Output only. |

## Errors

- [`UNAUTHENTICATED`](/docs/api/errors/UNAUTHENTICATED) — No valid key or token was presented.
- [`PERMISSION_DENIED`](/docs/api/errors/PERMISSION_DENIED) — The key lacks the method's permission.
- [`INVALID_FIELD`](/docs/api/errors/INVALID_FIELD) — A field failed validation.
- [`PAGE_TOKEN_MISMATCH`](/docs/api/errors/PAGE_TOKEN_MISMATCH) — A page token was reused with different parameters.

Every error arrives in the body [Errors](/docs/platform/errors) describes.

## Examples

**cURL**

```curl
curl "https://api.sylphx.com/v1/orgs/acme/projects/shop/envs/production/owner_pools" \
  -H "Authorization: Bearer $SYLPHX_API_KEY"
```

**TypeScript**

```ts
const response = await sylphx.agents.ownerPools.list({ parent: 'orgs/acme/projects/shop/envs/production' })
```

**Rust**

```rust
let mut req = sylphx::agents::ListOwnerPoolsRequest::default();
req.parent = "orgs/acme/projects/shop/envs/production".to_string();
let response = sx.agents().owner_pools().list(req).await?;
```

**CLI**

```bash
sylphx agents owner-pools list orgs/acme/projects/shop/envs/production
```

**MCP**

```json
{ "method_id": "agents.owner_pools.list", "args": {"parent":"orgs/acme/projects/shop/envs/production"} }
```
