# create_units

Create multiple units in parallel. Marketing copy (title, descriptions, translations) is set separately via
`update_marketing_details` after the units exist.

<!-- INPUT_BLOCK_START -->

## Input

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `units` | `CreateUnitInput[]` | Yes | Array of units to create - [CreateUnitInput](#createunitinput) |

### CreateUnitInput

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `code` | `string` | Yes | The code/name of the unit |
| `unitTypeId` | `string` | Yes | The ID of the unit type |
| `parentUnitId` | `string` | No | The ID of the parent unit (optional) |
| `numberOfBedrooms` | `number` | No | Number of bedrooms |
| `numberOfBeds` | `number` | No | Number of beds |
| `numberOfBathrooms` | `number` | No | Number of bathrooms |
| `maxOccupants` | `number` | No | Maximum number of occupants |
| `hkus` | `number` | No | Housekeeping units |
| `spaceTypeId` | `string` | No | The ID of the space type |
| `address` | `UnitAddress` | No | Floor and apartment number. The rest of the address is copied from the building, which must have an address; floor must not exceed the building's numberOfFloors - [UnitAddress](#unitaddress) |

### UnitAddress

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `floor` | `number \| null` | No | Floor number of the unit |
| `apartmentNumber` | `string \| null` | No | Apartment number or identifier |

<!-- INPUT_BLOCK_END -->

<!-- OUTPUT_BLOCK_START -->

## Output

| Field | Type | Description |
| --- | --- | --- |
| `content` | `ContentItem[]` | Array of content items returned by the tool - [ContentItem](#contentitem) |
| `isError` | `boolean` | Whether the tool execution resulted in an error |

### ContentItem

| Field | Type | Description |
| --- | --- | --- |
| `type` | `'text'` | Content type (currently only 'text' is supported) |
| `text` | `string` | The text content to display |

<!-- OUTPUT_BLOCK_END -->
