# Waitlist tools

> MCP tools for Waitlist: waitlist_demand_list, waitlist_entries_list.

- `waitlist_demand_list`: List the entity's demand by jurisdiction
- `waitlist_entries_list`: List waitlist entries

## `waitlist_demand_list`

**List the entity's demand by jurisdiction.** Operation [`waitlist.demand.list`](https://ownrecord.io/docs/reference/waitlist-demand-list.md) · Legal entity level · permission `waitlist:read` · risk tier `read` · since M7

Where the legal entity's brands can't sell to consumers yet, and what it would take: one row per
customer-location jurisdiction with waitlist entries or blocked checkouts, all brands combined, in the mode of
the request (spec §23).

Each row has the waitlist by stage (`waiting`, `pending`, `notified`, `left`) and the waiting entries'
`estimatedMonthlyValue` per currency (recurring prices per month; one-time prices and credit packs counted
once, as a first month's purchase); the checkouts paused there in the window (`blockedCheckouts`, by reason);
and the regimes that apply there: the entity's registration state, the prerequisites with their lead times
and status, `leadTimeDays` (the longest lead time of what isn't done) and the compliance effort (a fiscal
representative, a local agent, the filing frequency). `brands` splits the counts per brand; they add up to the
row. Counts and sums only: no customer is named.

Sort by `waitlist`, `monthly_value` (EUR equivalent), `blocked_checkouts`, `lead_time` or `jurisdiction`;
`brand` limits every count to one brand of the entity. Callers who can't read registrations get the knowledge
base's side only (`registrationsVisible: false`).

Annotations: `readOnlyHint: true` · `destructiveHint: false` · `idempotentHint: true` · `openWorldHint: false`

### Arguments

| Argument    | Type                                                                                 | Required | Description                                                                                                                                       |
| ----------- | ------------------------------------------------------------------------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `months`    | integer                                                                              | no       | The window for blocked checkouts: this calendar month and the ones before it (1–36, default 12). (1–36) (default `12`)                            |
| `sort`      | one of `jurisdiction`, `waitlist`, `monthly_value`, `blocked_checkouts`, `lead_time` | no       | `waitlist` (waiting entries), `monthly_value` (EUR equivalent), `blocked_checkouts`, `lead_time` or `jurisdiction`. (default `"waitlist"`)        |
| `order`     | one of `asc`, `desc`                                                                 | no       | (default `"desc"`)                                                                                                                                |
| `brand`     | ID (`brd_…`)                                                                         | no       | Only this brand of the entity (`brd_…`); all brands when absent.                                                                                  |
| `entity_id` | ID (`ent_…`)                                                                         | no       | The legal entity to act on (ent\_…), inside your API key's reach. Needed with an organization key; entity and brand keys act on their own entity. |

- **Legal entity:** pass `entity_id` with an organization key; entity and brand keys act on their own entity.
- **Read-only:** changes nothing; `idempotency_key` is ignored.

### Errors

- [`validation_failed`](https://ownrecord.io/docs/reference/errors.md#validation_failed): The window, the sort or the brand is malformed.
- [`scope_required`](https://ownrecord.io/docs/reference/errors.md#scope_required): The request names no legal entity (an org key without `Ownrecord-Entity`).
- [`resource_not_found`](https://ownrecord.io/docs/reference/errors.md#resource_not_found): The `brand` filter isn't a brand of this entity.
- [`permission_denied`](https://ownrecord.io/docs/reference/errors.md#permission_denied): You can't read this entity's waitlist (brand-scoped members never can: the page combines brands).

### Example

**Live demand over 12 months**

Arguments:

```json
{
  "entity_id": "ent_01jbx4m3v8e9t0s6k2c5n7q1wy"
}
```

Result `output`:

```json
{
  "object": "entity_demand",
  "entityId": "ent_01m4tx5nj8emwbyf7y9vcf47x2",
  "livemode": true,
  "window": {
    "months": 12,
    "from": "2025-11-01",
    "to": "2026-10-20"
  },
  "sort": "waitlist",
  "order": "desc",
  "brand": null,
  "brands": [
    {
      "id": "brd_01m4tx5nj8emwbyf7y9vcf47x4",
      "name": "Genno",
      "slug": "genno"
    },
    {
      "id": "brd_01m4tx5nj8emwbyf7y9vcf47x5",
      "name": "Genno Pro",
      "slug": "genno-pro"
    }
  ],
  "registrationsVisible": true,
  "fxRateDate": "2026-10-16",
  "data": [
    {
      "jurisdiction": "GB",
      "name": "United Kingdom",
      "territoryOf": null,
      "waitlist": {
        "waiting": 12,
        "pending": 2,
        "notified": 0,
        "left": 0,
        "estimatedMonthlyValue": {
          "total": [
            {
              "amount": "485000000",
              "currency": "EUR"
            }
          ],
          "recurring": [
            {
              "amount": "365000000",
              "currency": "EUR"
            }
          ],
          "oneTime": [
            {
              "amount": "120000000",
              "currency": "EUR"
            }
          ]
        }
      },
      "blockedCheckouts": {
        "total": 37,
        "registrationRequired": 37,
        "jurisdictionBlocked": 0,
        "other": 0
      },
      "monthlyValueEur": {
        "amount": "485000000",
        "currency": "EUR"
      },
      "leadTimeDays": 21,
      "regimes": [
        {
          "regimeId": "GB_VAT_NETP",
          "name": "UK VAT for non-established sellers",
          "registration": {
            "state": "blocked_b2c",
            "armed": false,
            "stateReason": "zero_threshold"
          },
          "prerequisites": [
            {
              "code": "gateway_account",
              "description": "Open a Government Gateway account",
              "leadTimeDays": 10,
              "status": "done"
            },
            {
              "code": "uk_agent",
              "description": "Appoint a UK tax agent",
              "leadTimeDays": 21,
              "status": "todo"
            }
          ],
          "leadTimeDays": 21,
          "typicalProcessingDays": 30,
          "effort": {
            "fiscalRepresentative": false,
            "localAgent": false,
            "filingFrequency": "quarterly"
          }
        }
      ],
      "brands": [
        {
          "brandId": "brd_01m4tx5nj8emwbyf7y9vcf47x4",
          "waitlist": {
            "waiting": 9,
            "pending": 1,
            "notified": 0,
            "left": 0,
            "estimatedMonthlyValue": {
              "total": [
                {
                  "amount": "410000000",
                  "currency": "EUR"
                }
              ],
              "recurring": [
                {
                  "amount": "290000000",
                  "currency": "EUR"
                }
              ],
              "oneTime": [
                {
                  "amount": "120000000",
                  "currency": "EUR"
                }
              ]
            }
          },
          "blockedCheckouts": {
            "total": 31,
            "registrationRequired": 31,
            "jurisdictionBlocked": 0,
            "other": 0
          }
        },
        {
          "brandId": "brd_01m4tx5nj8emwbyf7y9vcf47x5",
          "waitlist": {
            "waiting": 3,
            "pending": 1,
            "notified": 0,
            "left": 0,
            "estimatedMonthlyValue": {
              "total": [
                {
                  "amount": "75000000",
                  "currency": "EUR"
                }
              ],
              "recurring": [
                {
                  "amount": "75000000",
                  "currency": "EUR"
                }
              ],
              "oneTime": []
            }
          },
          "blockedCheckouts": {
            "total": 6,
            "registrationRequired": 6,
            "jurisdictionBlocked": 0,
            "other": 0
          }
        }
      ]
    }
  ]
}
```

## `waitlist_entries_list`

**List waitlist entries.** Operation [`waitlist.entries.list`](https://ownrecord.io/docs/reference/waitlist-entries-list.md) · Brand level · permission `waitlist:read` · risk tier `read` · since M4

Lists the brand's waitlist in the mode of the request, newest first: customers who asked to be told when the
brand can sell in their country (spec §23), with what they wanted to buy and its value. `status: pending`
entries haven't confirmed their email yet. Filter by `country` or `status`; page with `limit` and
`starting_after`. Emails are customer data: show them only to people who need them.

Annotations: `readOnlyHint: true` · `destructiveHint: false` · `idempotentHint: true` · `openWorldHint: false`

### Arguments

| Argument         | Type                          | Required | Description                                                                                                                              |
| ---------------- | ----------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `limit`          | integer                       | no       | (1–100)                                                                                                                                  |
| `starting_after` | ID (`wl_…`)                   | no       | –                                                                                                                                        |
| `country`        | string                        | no       | Only entries for this country.                                                                                                           |
| `status`         | one of `pending`, `confirmed` | no       | Only pending or only confirmed entries.                                                                                                  |
| `entity_id`      | ID (`ent_…`)                  | no       | Optional: the brand's legal entity (ent\_…); `brand_id` alone is enough.                                                                 |
| `brand_id`       | ID (`brd_…`)                  | no       | The brand to act on (brd\_…), inside your API key's reach. Needed with an organization or entity key; a brand key acts on its own brand. |

- **Brand:** pass `brand_id` with an organization or entity key; a brand key acts on its own brand.
- **Read-only:** changes nothing; `idempotency_key` is ignored.

### Errors

- [`validation_failed`](https://ownrecord.io/docs/reference/errors.md#validation_failed): A filter is malformed (`param` names it).

### Example

**Confirmed entries for the UK**

Arguments:

```json
{
  "country": "GB",
  "status": "confirmed",
  "brand_id": "brd_01jbx4m3v8e9t0s6k2c5n7q1wz"
}
```

Result `output`:

```json
{
  "data": [
    {
      "id": "wl_01m4tx5nj8emwbyf7y9vcf48ah",
      "object": "waitlist_entry",
      "livemode": false,
      "entityId": "ent_01m4tx5nj8emwbyf7y9vcf47x2",
      "brandId": "brd_01m4tx5nj8emwbyf7y9vcf47x4",
      "email": "oliver@example.com",
      "country": "GB",
      "subdivision": null,
      "customerType": "b2c",
      "productIds": ["prod_01m4tx5nj8emwbyf7y9vcf48ae"],
      "priceIds": ["price_01m4tx5nj8emwbyf7y9vcf48ad"],
      "estimatedValue": {
        "amount": "100000000",
        "currency": "EUR"
      },
      "source": "checkout",
      "status": "confirmed",
      "consent": {
        "text": "Notify me when Genno can sell in United Kingdom",
        "textVersion": "2026-10-14",
        "at": "2026-10-14T10:00:00.000Z"
      },
      "confirmedAt": "2026-10-14T10:12:00.000Z",
      "checkoutSessionId": "cs_01m4tx5nj8emwbyf7y9vcf48aa",
      "regimeId": null,
      "blockedReason": "registration_required",
      "notifiedAt": null,
      "unsubscribedAt": null,
      "createdAt": "2026-10-14T10:00:00.000Z"
    }
  ],
  "has_more": false,
  "next_cursor": null
}
```
