# Update a trip template

> The update_trip_template MCP tool: update a trip template.

`update_trip_template` · writes · idempotent

[REST: `PATCH /v1/trip-templates/{templateId}`](https://api.bymundi.com/docs/reference/catalog.tripTemplates.update.md)

## What the model reads

Edits a trip template's title, description or tags, and/or replaces its whole content with a trip's (`fromTripId`). To change what a template holds: create a trip from it (create_trip with `templateId`), edit that trip, then call this with `fromTripId`. undo_change reverts it.

Permissions: catalog:write.
Undo: the result names a change id; undo_change reverts it.

## Input

| Field | Type | Required | Description |
|---|---|---|---|
| `templateId` | uuid | yes |  |
| `title` | string |  | max 200 chars |
| `description` | string |  | max 2000 chars |
| `tags` | string[] |  | Replaces the tags; lowercased. max 20 items |
| `fromTripId` | uuid |  | Replace the template's content with this trip's (design, blocks, proposals, pax, presentation, start date). |
| `expectedUpdatedAt` | datetime |  |  |

## Input schema (JSON)

```json
{
  "type": "object",
  "properties": {
    "templateId": {
      "type": "string",
      "format": "uuid"
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "description": {
      "type": "string",
      "maxLength": 2000
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "maxItems": 20,
      "description": "Replaces the tags; lowercased."
    },
    "fromTripId": {
      "type": "string",
      "format": "uuid",
      "description": "Replace the template's content with this trip's (design, blocks, proposals, pax, presentation, start date)."
    },
    "expectedUpdatedAt": {
      "type": "string",
      "format": "date-time"
    }
  },
  "required": [
    "templateId"
  ],
  "additionalProperties": false
}
```
