*MCP › Reference › Catalog & inventory › Spaces*

# Replace the amenities and equipment

> Fully REPLACES the two lists of the space: the amenities offered with it (wifi, 24/7 access, parking) and the physical equipment delivered with it (projector, whiteboard, sound).

> **Requires human confirmation:** Put this tool on your client's “ask before running” list. The annotations are hints that the server declares, not guarantees: do not decide the approval from `destructiveHint` alone.

It is PUT and not PATCH because both lists are replaced whole: always send both, including the one that does not change. Returns the updated space in detail.

TOOL `filmo_spaces_amenities_replace` · `spaces:write` · 120/min · Server annotation: Destructive · Server annotation: Idempotent · Requires human confirmation

## Arguments

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `spaceId` | string | Yes | Space identifier. |
| `commodities` | string[] | Yes | Services offered with the space (wifi, 24/7 access, parking...). REPLACES the whole list. |
| `amenities` | string[] | Yes | Physical equipment delivered with the space (projector, whiteboard, sound...). REPLACES the whole list. |
| `idempotencyKey` | string | No | Idempotency key chosen by the client (a UUID is recommended). Repeating the same key with the same arguments within 24 h returns the stored response without executing again; with different arguments it responds 422. It is the safe way to retry after a network failure. |
| `ifMatch` | string | No | Optimistic locking: the meta.etag you got from the detail read of this resource (or "*"). If the resource changed since, the call fails with 412 precondition_failed before writing anything; read it again and retry. Omit it to write unconditionally. |

## Result

On success the result carries `structuredContent` with `data` and `meta`. These are the attributes of `data`.

| Name | Type | Description |
| --- | --- | --- |
| `id` | string | Unique space identifier. |
| `name` | string | Space name. |
| `internalReference` | string | Internal reference of the space, useful for matching with external systems; null if it has none. |
| `isWarehouse` | boolean | true if the space is a warehouse that manages stock and can be the main warehouse of an order; false if it is a rentable space. |
| `collectionId` | string | Identifier of the collection it belongs to; null if it is in none. |
| `collectionName` | string | Full collection path, for example "Estudios > Fotografía"; null if not applicable. |
| `building` | string | Building it is located in; null if not applicable. |
| `floor` | number | Floor it is located on; null if not applicable. |
| `location` | object | Physical location of the space. |
| `location.address` | string | Postal address; null if not recorded. |
| `location.city` | string | Municipality; null if not recorded. |
| `location.postalCode` | string | Postal code; null if not recorded. |
| `location.country` | string | Country; null if not recorded. |
| `location.lat` | number | Latitude in decimal degrees; null if not geolocated. |
| `location.lng` | number | Longitude in decimal degrees; null if not geolocated. |
| `createdAt` | string<date-time> | Creation date in ISO 8601 UTC. |
| `updatedAt` | string<date-time> | Last modification date in ISO 8601 UTC. |
| `description` | string | Space description; null if it has none. |
| `capacity` | number | Capacity in people; null if not defined. |
| `area` | number | Area in square metres; null if not defined. |
| `dimensions` | string | Dimensions as free text; null if not defined. |
| `amenities` | string[] | Additional services available (wifi, projector...). |
| `equipments` | string[] | Fixed equipment available in the space. |
| `pricingSettings` | object | Rental pricing of the space; null if not configured. The same fields that PATCH /pricing accepts. |
| `pricingSettings.type` | string | Pricing mode; null if not configured. `periodPrice`, `fixedPrice`, `pricingStructure` |
| `pricingSettings.price` | string | Base rental price as a decimal string; null if not configured. |
| `pricingSettings.period` | string | Period unit of the price; null if not configured. `hour`, `day`, `week`, `month` |
| `insuranceEnabled` | boolean | Whether the space allows insurance. |
| `discountEnabled` | boolean | Whether the space allows a discount. |
| `depositValue` | string | Security deposit amount as a decimal string; null if not set. |
| `bufferBefore` | number | Time buffer reserved BEFORE the rental; null if none. |
| `bufferBeforeUnit` | string | Unit of the preceding buffer; null if none. `hour`, `day` |
| `bufferAfter` | number | Time buffer reserved AFTER the rental; null if none. |
| `bufferAfterUnit` | string | Unit of the following buffer; null if none. `hour`, `day` |
| `customFields` | object<string, any> | Custom field values by custom field identifier; the definitions are in `/api/v1/custom-fields`. |

*Call · filmo_spaces_amenities_replace*

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "filmo_spaces_amenities_replace",
    "arguments": {
      "spaceId": "spac_8f2a1c",
      "commodities": [
        "<commodities>"
      ],
      "amenities": [
        "<amenities>"
      ]
    }
  }
}
```

*Result (generated from the schema)*

```json
{
  "structuredContent": {
    "data": {
      "id": "id_8f2a1c",
      "name": "Example",
      "internalReference": "<internalReference>",
      "isWarehouse": true,
      "collectionId": "coll_8f2a1c",
      "collectionName": "Example",
      "building": "<building>",
      "floor": 1,
      "location": {
        "address": "<address>",
        "city": "<city>",
        "postalCode": "<postalCode>",
        "country": "ES",
        "lat": 1,
        "lng": 1
      },
      "createdAt": "2026-09-01T08:00:00Z",
      "updatedAt": "2026-09-01T08:00:00Z",
      "description": "<description>",
      "capacity": 1,
      "area": 1,
      "dimensions": "<dimensions>",
      "amenities": [
        "<amenities>"
      ],
      "equipments": [
        "<equipments>"
      ],
      "pricingSettings": {
        "type": "periodPrice",
        "price": "1234.50",
        "period": "hour"
      },
      "insuranceEnabled": true,
      "discountEnabled": true,
      "depositValue": "1234.50",
      "bufferBefore": 1,
      "bufferBeforeUnit": "hour",
      "bufferAfter": 1,
      "bufferAfterUnit": "hour",
      "customFields": {
        "key": "<key>"
      }
    },
    "meta": {
      "idempotencyKey": "<the key you sent, or the one the server generated>",
      "rateLimit": {
        "limit": 120,
        "remaining": 119,
        "reset": 42
      }
    }
  }
}
```

## The same operation by REST

This tool runs [`PUT /api/v1/spaces/{spaceId}/amenities`](https://docs.filmo.io/rest-api/endpoint-reference/spaces/replace-the-amenities-and-equipment).

---

Canonical URL: https://docs.filmo.io/mcp/tools/spaces/filmo-spaces-amenities-replace  
Last updated: 2026-10-25