*MCP › Reference › Rentals › Subrents*

# Update a subrent

> Changes the terms of a subrent: status (`pending`, `active`, `completed` or `cancelled`), dates, notes, whether the need is resolved and its link to a purchase order (send only the fields to change).

`linkQuantity` deserves attention: if it is LOWER than the quantity of the subrent, the record is SPLIT —the original keeps that quantity and another one is born with the rest—, and what is returned is the original. What is paid to the supplier is NOT part of the public contract, neither to read nor to write. It requires subrents in the plan of the account —included in the current offer, and with the purchases add-on in older plans— (402 without it). Returns the full subrent, the same projection as its GET.

TOOL `filmo_subrents_update` · `subrents:write` · 120/min · May need an add-on · Server annotation: Idempotent

## Arguments

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `subrentId` | string | Yes | Subrent identifier. |
| `status` | string | No | New subrent status. `pending`, `active`, `completed`, `cancelled` |
| `startDate` | string<date-time> | No | Start of the subrent (ISO 8601 with offset); null clears it. |
| `endDate` | string<date-time> | No | End of the subrent (ISO 8601 with offset); null clears it. |
| `needResolved` | boolean | No | true when the material need that motivated the subrent is already covered. |
| `purchaseOrderId` | string | No | Purchase order the subrent is linked to; null unlinks it. |
| `linkQuantity` | integer | No | Quantity linked to the purchase order. If it is lower than the subrent quantity, the record is split: the original keeps this quantity and a new one is created with the rest. |
| `notes` | string | No | Subrent notes; null clears them. |
| `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 subrent identifier. |
| `type` | string | bulk if it is a quantity of a bulk item, serialized if it is a specific unit. `bulk`, `serialized` |
| `status` | string | Subrent status. `pending`, `active`, `completed`, `cancelled` |
| `itemId` | string | Identifier of the subrented item. |
| `itemName` | string | Name of the subrented item. |
| `itemSku` | string | Item SKU; null if it has none. |
| `quantity` | number | Subrented units; null if it is a specific unit. |
| `serializedItemId` | string | Identifier of the specific unit; null if bulk. |
| `serializedItemCode` | string | Code of the specific unit; null if bulk. |
| `providerId` | string | Identifier of the supplier that lends the material; null if not decided yet. |
| `providerName` | string | Supplier name; null if not decided yet. |
| `needResolved` | boolean | true if the need is already covered, that is, if the supplier and material are confirmed. |
| `startDate` | string<date-time> | Start of the required period in ISO 8601 UTC; null if not set. |
| `endDate` | string<date-time> | End of the required period in ISO 8601 UTC; null if not set. |
| `pickupDate` | string<date-time> | Pickup date from the supplier in ISO 8601 UTC; null if not set. |
| `returnDate` | string<date-time> | Return date to the supplier in ISO 8601 UTC; null if not set. |
| `orderId` | string | Order that motivates the subrent; null if it has none. |
| `projectId` | string | Associated project; null if it has none. |
| `purchaseOrderId` | string | Purchase order that formalizes it; null if none has been issued. |
| `spaceId` | string | Warehouse where the material is received; null if not applicable. |
| `notes` | string | Subrent notes; null if it has none. |
| `createdAt` | string<date-time> | Creation date in ISO 8601 UTC. |
| `updatedAt` | string<date-time> | Last modification date in ISO 8601 UTC. |

*Call · filmo_subrents_update*

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "filmo_subrents_update",
    "arguments": {
      "subrentId": "subr_8f2a1c"
    }
  }
}
```

*Result (generated from the schema)*

```json
{
  "structuredContent": {
    "data": {
      "id": "id_8f2a1c",
      "type": "bulk",
      "status": "pending",
      "itemId": "item_8f2a1c",
      "itemName": "Example",
      "itemSku": "<itemSku>",
      "quantity": 1,
      "serializedItemId": "seri_8f2a1c",
      "serializedItemCode": "<serializedItemCode>",
      "providerId": "prov_8f2a1c",
      "providerName": "Example",
      "needResolved": true,
      "startDate": "2026-09-01T08:00:00Z",
      "endDate": "2026-09-01T08:00:00Z",
      "pickupDate": "2026-09-01T08:00:00Z",
      "returnDate": "2026-09-01T08:00:00Z",
      "orderId": "orde_8f2a1c",
      "projectId": "proj_8f2a1c",
      "purchaseOrderId": "purc_8f2a1c",
      "spaceId": "spac_8f2a1c",
      "notes": "<notes>",
      "createdAt": "2026-09-01T08:00:00Z",
      "updatedAt": "2026-09-01T08:00:00Z"
    },
    "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 [`PATCH /api/v1/subrents/{subrentId}`](https://docs.filmo.io/rest-api/endpoint-reference/subrents/update-a-subrent).

---

Canonical URL: https://docs.filmo.io/mcp/tools/subrents/filmo-subrents-update  
Last updated: 2026-10-25