# Upload a small catalog photo

> The upload_catalog_image MCP tool: upload a small catalog photo.

`upload_catalog_image` · writes

MCP only (no REST operation).

## What the model reads

Uploads a small image you have in hand onto a catalog entry, in one call: `contentBase64` at most 512 KB, PNG, JPEG, WebP, AVIF or GIF. It is re-encoded and attached last, or as the lead photo with `position: first`. For a photo on the user's computer use upload_image when it is offered (up to 15 MB). undo_change takes it off again.

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

## Input

| Field | Type | Required | Description |
|---|---|---|---|
| `entityId` | uuid | yes |  |
| `mimeType` | "image/png" \| "image/jpeg" \| "image/webp" \| "image/avif" \| "image/gif" | yes | The image's type — only these are accepted. |
| `contentBase64` | string | yes | The image's bytes in base64; at most 512 KB once decoded. max 700076 chars |
| `alt` | string |  | A description of the photo for screen readers (recommended). max 300 chars |
| `position` | "first" \| "last" |  | `first` makes it the entry's lead photo; `last` (the default) appends it. default "last" |

## Input schema (JSON)

```json
{
  "type": "object",
  "properties": {
    "entityId": {
      "type": "string",
      "format": "uuid"
    },
    "mimeType": {
      "type": "string",
      "enum": [
        "image/png",
        "image/jpeg",
        "image/webp",
        "image/avif",
        "image/gif"
      ],
      "description": "The image's type — only these are accepted."
    },
    "contentBase64": {
      "type": "string",
      "maxLength": 700076,
      "description": "The image's bytes in base64; at most 512 KB once decoded."
    },
    "alt": {
      "type": "string",
      "maxLength": 300,
      "description": "A description of the photo for screen readers (recommended)."
    },
    "position": {
      "type": "string",
      "enum": [
        "first",
        "last"
      ],
      "default": "last",
      "description": "`first` makes it the entry's lead photo; `last` (the default) appends it."
    }
  },
  "required": [
    "entityId",
    "mimeType",
    "contentBase64"
  ],
  "additionalProperties": false
}
```
