# Save a block to the library

> The save_library_entry MCP tool: save a block to the library.

`save_library_entry` · writes

[REST: `POST /v1/library/entries`](https://api.bymundi.com/docs/reference/library.entries.create.md)

## What the model reads

Saves one block of a trip, with everything inside it, to the library (Catalog → Blocks) so any trip can reuse it (insert_library_entry). Build or fix it in the trip first with the itinerary tools; `blockId` takes the ref get_itinerary prints. undo_change removes the entry again.

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

## Input

| Field | Type | Required | Description |
|---|---|---|---|
| `tripId` | uuid | yes |  |
| `blockId` | string | yes | The block's id or its short ref from get_itinerary. max 64 chars |
| `title` | string | yes | max 200 chars |
| `tags` | string[] |  | Replaces the tags; lowercased. max 20 items |

## Input schema (JSON)

```json
{
  "type": "object",
  "properties": {
    "tripId": {
      "type": "string",
      "format": "uuid"
    },
    "blockId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "The block's id or its short ref from get_itinerary."
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 60
      },
      "maxItems": 20,
      "description": "Replaces the tags; lowercased."
    }
  },
  "required": [
    "tripId",
    "blockId",
    "title"
  ],
  "additionalProperties": false
}
```
