*MCP › Reference › Operations › Planner*

# Remove a resource from a service

> Undoes an assignment.

> **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 a POST to a sub-resource and not a DELETE because the target is identified with up to four fields and the resource with three (`assignmentId`, `staffId` or `vehicleId`): that does not fit in a path, and a DELETE with a required body is a worse contract. On a task the resource is always `staffId`: a task has neither vehicles nor assignment identifiers, and sending one of those responds 400 `validation_error` on that field. A target that does not exist or belongs to another account also responds 400 `validation_error`, with `errors[].path` on its field; a resource that is not assigned to that target responds 404 `not_found`: there is nothing to remove.

TOOL `filmo_planner_assignment_remove` · `planner:write` · 120/min · Server annotation: Destructive · Requires human confirmation

## Arguments

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `orderId` | string | No | Order the service is attached to. |
| `orderServiceId` | string | No | Service line within that order. |
| `taskId` | string | No | Schedule task to remove the resource from. |
| `internalServiceId` | string | No | Internal assignment to remove it from. |
| `assignmentId` | string | No | Identifier of the specific assignment, if you have it. |
| `staffId` | string | No | Staff member being removed. |
| `vehicleId` | string | No | Vehicle being removed. |
| `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. |

## Result

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

| Name | Type | Description |
| --- | --- | --- |
| `status` | string | Operation result. |

*Call · filmo_planner_assignment_remove*

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

*Result (generated from the schema)*

```json
{
  "structuredContent": {
    "data": {
      "status": "<status>"
    },
    "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 [`POST /api/v1/planner/assignments/remove`](https://docs.filmo.io/rest-api/endpoint-reference/planner/remove-a-resource-from-a-service).

---

Canonical URL: https://docs.filmo.io/mcp/tools/planner/filmo-planner-assignment-remove  
Last updated: 2026-10-25