# Readiness and delivery profiles (/ai/reference/catalog/readiness)

Toolset `readiness`, 13 tools.

## Records [#records]

### `delivery_profiles` [#delivery_profiles]

The delivery promise profiles of the store: each with its name, the products it applies to and the delivery components it is built from, and which one is the default. There is one record; pass any id, e.g. "current".

- Permission: `products.read`
- Tools: `delivery_profiles_get`

### `product_delivery` [#product_delivery]

Which delivery profile a product and each of its variants use, whether chosen on the product or inherited, and how it resolves. Pass the product id.

- Permission: `products.read`
- Tools: `product_delivery_get`

### `product_readiness` [#product_readiness]

Whether one product is ready to sell and to publish: the findings of the readiness checks and what blocks publishing. Pass the product id. include full runs the slower checks too.

- Permission: `products.read`
- Tools: `product_readiness_get`
- Includes: `full`

### `readiness_check` [#readiness_check]

A check the readiness engine runs on the store, a product or a variant: what it asserts, how severe it can be, whether it blocks publishing, and whether it is active or disabled.

- Permission: `products.read`
- Tools: `readiness_check_list`

### `store_readiness` [#store_readiness]

Whether the store is ready to sell: the findings of the store-level readiness checks with their fixes. include full runs the slower checks too. There is one record; pass any id, e.g. "current".

- Permission: `products.read`
- Tools: `store_readiness_get`
- Includes: `full`

### `variant_readiness` [#variant_readiness]

Whether one variant is ready to sell: the findings of the variant readiness checks. Pass &lt;product id>/&lt;variant id>.

- Permission: `products.read`
- Tools: `variant_readiness_get`
- Includes: `full`

## Actions [#actions]

### `delivery_profile_delete` [#delivery_profile_delete]

Delete a delivery profile; products that used it fall back to the default.

- Action key: `delivery_profile.delete`
- Permission: `products.write`
- Approval: Always waits for a person to approve it.
- Effect: Changes the live store.
- Destructive: in compact mode it runs with `run_destructive_action`.
- Retries: safe to repeat with the same input.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `profile_id` | string | yes | 1 to 64 characters |

Example input:

```json
{
  "profile_id": "019bb276-bd8c-7a66-9c86-722d45f4e493"
}
```

### `delivery_profile_save` [#delivery_profile_save]

Create a delivery profile, or change one by passing its id.

components are the delivery steps in the shape delivery_profiles_get answers (at most 8); read the document first and copy the shape. applicability.mode any|all decides whether a product needs one or all of the listed categories, collections or tags.

- Action key: `delivery_profile.save`
- Permission: `products.write`
- Approval: Waits for approval when the store requires it for this action.
- Effect: Changes the live store.
- Retries: safe to repeat with the same input.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string |  | Pass to change an existing profile. 1 to 64 characters |
| `name` | string | yes | 1 to 80 characters |
| `description` | string |  | at most 400 characters |
| `enabled` | boolean |  |  |
| `applicability` | object |  |  |
| `applicability.mode` | string | yes | one of "any", "all" |
| `applicability.category_ids` | list of string |  | at most 32 items. 1 to 64 characters |
| `applicability.collection_ids` | list of string |  | at most 32 items. 1 to 64 characters |
| `applicability.tag_ids` | list of string |  | at most 32 items. 1 to 64 characters |
| `components` | list of map of string or number or boolean or list of any value or map of any value or null | yes | at most 8 items |

Example input:

```json
{
  "name": "Ships in 2 days",
  "components": []
}
```

### `delivery_profile_set_default` [#delivery_profile_set_default]

Choose the delivery profile products without their own use. null clears it.

- Action key: `delivery_profile.set_default`
- Permission: `products.write`
- Approval: Waits for approval when the store requires it for this action.
- Effect: Changes the live store.
- Retries: safe to repeat with the same input.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `profile_id` | string or null | yes | 1 to 64 characters |

Example input:

```json
{
  "profile_id": "019bb276-bd8c-7a66-9c86-722d45f4e493"
}
```

### `product_delivery_set` [#product_delivery_set]

Choose the delivery profile of a product and of its variants.

mode inherit follows the level above, none shows no delivery promise, profile uses profile_id. Variants not listed keep their choice.

- Action key: `product_delivery.set`
- Permission: `products.write`
- Approval: Waits for approval when the store requires it for this action.
- Effect: Changes the live store.
- Retries: safe to repeat with the same input.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `product_id` | string | yes |  |
| `product` | object, one shape of: |  |  |
| `product[mode=inherit].mode` | string | yes | always "inherit" |
| `product[mode=none].mode` | string | yes | always "none" |
| `product[mode=profile].mode` | string | yes | always "profile" |
| `product[mode=profile].profile_id` | string | yes | 1 to 64 characters |
| `variants` | list of object |  | at most 200 items |
| `variants[].variant_id` | string | yes | 1 to 64 characters |
| `variants[].binding` | object, one shape of: | yes |  |
| `variants[].binding[mode=inherit].mode` | string | yes | always "inherit" |
| `variants[].binding[mode=none].mode` | string | yes | always "none" |
| `variants[].binding[mode=profile].mode` | string | yes | always "profile" |
| `variants[].binding[mode=profile].profile_id` | string | yes | 1 to 64 characters |

Example input:

```json
{
  "product_id": "019bb58e-0ec1-79c1-9f40-d39d8d07674b",
  "product": {
    "mode": "profile",
    "profile_id": "019bb276-bd8c-7a66-9c86-722d45f4e493"
  }
}
```

### `product_publish` [#product_publish]

Publish a product through the readiness gate.

Runs the readiness checks first: when something blocks publishing the product stays a draft and the blockers come back (the answer is still a success). force publishes anyway, so use it only when the merchant says so.

- Action key: `product.publish`
- Permission: `products.write`
- Approval: Waits for approval when the store requires it for this action.
- Effect: Changes the live store.
- Retries: safe to repeat with the same input.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `product_id` | string | yes |  |
| `force` | boolean |  |  |

Example input:

```json
{
  "product_id": "019bb58e-0ec1-79c1-9f40-d39d8d07674b"
}
```

### `readiness_run_action` [#readiness_run_action]

Run one of the one-click fixes the readiness findings offer.

action_id comes from the fixes the readiness findings offer; only actions of kind apply can run. target_id is the product, variant or record it fixes. A dry run says what it would change.

- Action key: `readiness.run_action`
- Permission: `products.write`
- Approval: Always waits for a person to approve it.
- Effect: Changes the live store.
- Retries: runs at most once; a repeat with the same idempotency key returns the first result.
- Dry run: supported, with `dry_run` set to true.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `action_id` | string | yes | at least 1 characters |
| `target_id` | string |  |  |
| `params` | map of string or number or boolean or list of any value or map of any value or null |  |  |

Example input:

```json
{
  "action_id": "core.link_default_sales_channel",
  "target_id": "019bb58e-0ec1-79c1-9f40-d39d8d07674b"
}
```

### `store_baseline_apply` [#store_baseline_apply]

Set up what the store needs to sell in a market: countries, currency, tax rates and a shipping option.

A dry run reports what would be created without changing anything. countries are two-letter codes, primary_country one of them. selling and shipping choose the kinds of products sold and how they ship.

- Action key: `store_baseline.apply`
- Permission: `settings.write`
- Approval: Always waits for a person to approve it.
- Effect: Changes the live store.
- Retries: safe to repeat with the same input.
- Dry run: supported, with `dry_run` set to true.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `countries` | list of string | yes | 1 to 32 items. 2 to 2 characters |
| `primary_country` | string | yes | 2 to 2 characters |
| `selling` | list of string |  | Kinds of products sold. one of "physical", "digital", "undecided" |
| `shipping` | string |  | one of "courier", "local", "digital", "later" |
| `currency_code` | string |  | 3 to 3 characters |
| `standard_vat_rates` | map of number |  |  |

Example input:

```json
{
  "countries": [
    "hu"
  ],
  "primary_country": "hu",
  "currency_code": "huf"
}
```
