Skip to main content
    SeamUI LogoSeamUI
    ProductPricingFAQ
    ModelsGuides
    Sign inStart free trial
    SeamUI MCP
    Live capability catalog

    What SeamUI agents can do

    Browse the operations currently exposed through MCP, what requires confirmation, and what remains intentionally unavailable. Your actual access still depends on your Workspace and current server availability.

    View raw JSON
    26
    Tools currently discoverable
    1
    Capabilities planned
    19
    Explicit exclusions
    v3.0.0
    SeamUI application version

    Available tools

    These tools are currently returned to connected MCP Hosts.

    catalog.modelsRead only

    List active SeamUI model routes, what each can do (uses: text-to-image, image-edit, text-to-video, animate-image, first-last-frame, video-edit, ...), their input slots and safe limits.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {},
      "additionalProperties": false
    }
    workspace.context.readRead only

    Read fresh operational context for the connected Workspace.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {},
      "additionalProperties": false
    }
    account.workspaces.listRead only

    List every Workspace of the connected SeamUI account, with the User's role, the plan, the member count and the number of images, videos and Assets. Read only: actions apply only to the current Workspace.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {},
      "additionalProperties": false
    }
    projects.listRead only

    List Projects in the connected Workspace.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "cursor": {
          "type": "string"
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100
        }
      },
      "additionalProperties": false
    }
    projects.readRead only

    Read one Project from the connected Workspace.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "projectId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        }
      },
      "required": [
        "projectId"
      ],
      "additionalProperties": false
    }
    assets.listRead only

    Find images and videos, newest first, to resolve "this image" or "my last video". Lists safe Asset metadata, including orphaned Assets, in the connected Workspace. A created Asset carries url, its public permanent media URL.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "cursor": {
          "type": "string"
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100
        },
        "projectId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "type": {
          "type": "string",
          "enum": [
            "image",
            "video"
          ]
        },
        "status": {
          "type": "string",
          "minLength": 1,
          "maxLength": 32
        }
      },
      "additionalProperties": false
    }
    assets.readRead only

    Read safe metadata for one Asset in the connected Workspace, including url, its public permanent media URL once created.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "assetId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        }
      },
      "required": [
        "assetId"
      ],
      "additionalProperties": false
    }
    assets.generation.readRead only

    Read the prompt, model, settings and reference files that produced one image or video, to show them, regenerate it, or make a variation. reuse holds ready arguments for images.generate or videos.generate. status not_generated means a trim, merge, frame, background or resize derivative: read its sourceAssetIds instead. status expired means the plan's history retention removed the prompt.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "assetId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        }
      },
      "required": [
        "assetId"
      ],
      "additionalProperties": false
    }
    references.listRead only

    List reusable reference identities already stored in the Workspace. To add a new file, use references.upload or references.import.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "cursor": {
          "type": "string"
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100
        },
        "projectId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        }
      },
      "additionalProperties": false
    }
    assets.handoffRead only

    Open a Project or Asset in the SeamUI app. Creates an authenticated SeamUI Dashboard link to one Project. For an Asset, the link opens the Project that contains it.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "projectId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "assetId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        }
      },
      "additionalProperties": false
    }
    assets.contentRead only

    Return authenticated media bytes, for Hosts that need the bytes themselves rather than the public url. Images return MCP image content; videos return a poster or embedded file bytes. Originals above 8 MB require chunks. Pass objectVersion and objectEtag from the first chunk on every subsequent read, and assemble bytes by offset after checking each SHA-256.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "assetId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "representation": {
          "type": "string",
          "enum": [
            "preview",
            "poster",
            "original",
            "chunk"
          ]
        },
        "offset": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991
        },
        "length": {
          "type": "integer",
          "minimum": 1,
          "maximum": 1000000
        },
        "objectVersion": {
          "type": "string",
          "minLength": 1,
          "maxLength": 256
        },
        "objectEtag": {
          "type": "string",
          "minLength": 1,
          "maxLength": 128
        }
      },
      "required": [
        "assetId",
        "representation"
      ],
      "additionalProperties": false
    }
    actions.resultRead only

    Recover one operation by actionId, or by capability and the original idempotencyKey after response loss. Returns durable admission state, Asset IDs and available results, with the public media url of each created Asset. Do not resubmit generation after an uncertain response.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "actionId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "capability": {
          "type": "string"
        },
        "idempotencyKey": {
          "type": "string",
          "pattern": "^[A-Za-z0-9._:-]{8,128}$"
        }
      },
      "additionalProperties": false
    }
    projects.createActionConnection permission

    Create one Project. The shared slug policy tries the initial slug then suffixes -1 through -99. Keep actionId, also the stable Project ID. Missing evidence never permits automatic resubmission.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "name": {
          "type": "string",
          "minLength": 2,
          "maxLength": 32
        },
        "description": {
          "type": "string",
          "maxLength": 250
        }
      },
      "required": [
        "name"
      ],
      "additionalProperties": false
    }
    projects.updateActionConnection permission

    Rename a Project, change its description, or change its provider preference. Keep actionId and use actions.result instead of repeating an uncertain change.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "mode": {
              "type": "string",
              "const": "details"
            },
            "projectId": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "name": {
              "type": "string",
              "minLength": 2,
              "maxLength": 32
            },
            "description": {
              "type": "string",
              "maxLength": 250
            }
          },
          "required": [
            "mode",
            "projectId",
            "name"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "mode": {
              "type": "string",
              "const": "preference"
            },
            "projectId": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "provider": {
              "type": "string",
              "enum": [
                "default",
                "kie"
              ]
            }
          },
          "required": [
            "mode",
            "projectId",
            "provider"
          ],
          "additionalProperties": false
        }
      ]
    }
    assets.renameActionConnection permission

    Rename an image or video. Keep actionId and use actions.result instead of repeating an uncertain change.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "assetId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "name": {
          "type": "string",
          "minLength": 2,
          "maxLength": 32
        }
      },
      "required": [
        "assetId",
        "name"
      ],
      "additionalProperties": false
    }
    assets.moveActionConnection permission

    Atomically move one or more images or videos to another Project. Keep actionId and use actions.result instead of repeating an uncertain change.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "assetIds": {
          "minItems": 1,
          "maxItems": 1000,
          "type": "array",
          "items": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          }
        },
        "targetProjectId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        }
      },
      "required": [
        "assetIds",
        "targetProjectId"
      ],
      "additionalProperties": false
    }
    prompts.readRead only

    List the saved prompts of the Workspace prompt library, for images and videos. It does not hold the prompt that produced a given Asset.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "cursor": {
          "type": "string"
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100
        },
        "kind": {
          "type": "string",
          "enum": [
            "image",
            "video",
            "all"
          ]
        }
      },
      "additionalProperties": false
    }
    prompts.writeActionConnection permission

    Save a new prompt to the Workspace prompt library, or update a saved one, for images or videos. Keep actionId and use actions.result instead of repeating an uncertain write.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "mode": {
              "type": "string",
              "const": "create"
            },
            "kind": {
              "type": "string",
              "enum": [
                "image",
                "video"
              ]
            },
            "values": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          },
          "required": [
            "mode",
            "kind",
            "values"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "mode": {
              "type": "string",
              "const": "update"
            },
            "kind": {
              "type": "string",
              "enum": [
                "image",
                "video"
              ]
            },
            "promptId": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "values": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          },
          "required": [
            "mode",
            "kind",
            "promptId",
            "values"
          ],
          "additionalProperties": false
        }
      ]
    }
    references.uploadActionConnection permission

    Get an upload link for one local reference file (image, video or audio) when you can run a shell command. Declare its exact mediaKind, mime, size in bytes and lowercase hex SHA-256 (for example from `shasum -a 256`). Then run the returned command within 15 minutes: the link accepts only that exact file, POSTed raw, and answers with source={type:reference-source,id} and url, the public file. Put that source as {kind:stored,source} in images.generate references or a videos.generate attachment. Limits: image jpeg/png/webp up to 2 MB (resize larger photos first), video mp4/quicktime up to 10 MB, audio mpeg/wav up to 5 MB. The same file always gives the same ID. Use the source in a generation within 24 hours: an unused source is then deleted. If your sandbox blocks the SeamUI host (HTTP 403 host_not_allowed), follow ifHostBlocked instead of retrying. Never paste file bytes or base64 into a tool call.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "mediaKind": {
          "type": "string",
          "enum": [
            "image",
            "video",
            "audio"
          ]
        },
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255
        },
        "mime": {
          "type": "string",
          "minLength": 3,
          "maxLength": 100
        },
        "size": {
          "type": "integer",
          "minimum": 1,
          "maximum": 10485760
        },
        "sha256": {
          "type": "string",
          "pattern": "^[0-9a-f]{64}$"
        }
      },
      "required": [
        "mediaKind",
        "name",
        "mime",
        "size",
        "sha256"
      ],
      "additionalProperties": false
    }
    references.importActionConnection permission

    Store one public https image, video or audio file as a reference, from its URL. A SeamUI media url returned by another tool is reused without copying. Set mediaKind when the server does not send a media Content-Type. Returns source and url. Put source as {kind:stored,source} in images.generate references or a videos.generate attachment. Same limits as references.upload. Use references.upload instead for a local file.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "url": {
          "type": "string",
          "maxLength": 2048,
          "format": "uri"
        },
        "mediaKind": {
          "type": "string",
          "enum": [
            "image",
            "video",
            "audio"
          ]
        },
        "name": {
          "type": "string",
          "minLength": 1,
          "maxLength": 255
        }
      },
      "required": [
        "url"
      ],
      "additionalProperties": false
    }
    images.generateActionConnection permission

    MANDATORY: before anything that creates 4 images or videos or more in total (several calls, parallel calls, retries, lists, CSV rows), tell the User the exact count, say it bills their own provider account, and wait for an explicit yes. No yes, no call. Set requestTotal to that total on every call. SeamUI refuses, and starts nothing, without the costConfirmation code its refusal gives. Create images from a prompt, or edit, restyle or make variations of an existing image by passing it as a reference (route uses include image-edit in catalog.models). Image count: by default one call generates imageCount images (1 to 10) from the single prompt in form.prompts. When the catalog.models route lists imagesPerRequestedImage, each requested image returns that many (withReference once a reference image is attached), and all of them are billed: count them in requestTotal. To try several prompts with the same model, settings and references (variations of a prompt, one image each), put up to 10 prompts in form.prompts and set form.onePromptOneImage to true: one image per prompt, imageCount is ignored. Several prompts without onePromptOneImage are refused. Past 500 images per Workspace in one rolling hour, the call is refused, nothing starts, and the refusal explains how to continue: ask the User, then resend with its hourlyLimitConfirmation code. Supply form.provider, form.model and form.prompts; omitted settings use the shown defaults. Stored source IDs are accepted: get one for a local or online file with references.upload or references.import. Keep actionId and read status instead of repeating uncertain work. Each created Asset carries url, its public permanent media URL, to display, download or reuse the file.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "projectId": {
          "type": "string",
          "minLength": 1,
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "form": {
          "type": "object",
          "properties": {
            "provider": {
              "type": "string",
              "enum": [
                "default",
                "kie"
              ]
            },
            "model": {
              "type": "string",
              "enum": [
                "gpt-image-2.5-flare",
                "gpt-image-2.5-sunburst",
                "gpt-image-2",
                "gpt-image-1.5",
                "gpt-image-1",
                "gpt-image-1-mini",
                "gemini-nano-banana-2.1",
                "gemini-3.1-flash-image-preview",
                "gemini-3-pro-image-preview",
                "gemini-2.5-flash-image",
                "flux-2-pro",
                "flux-2-max",
                "flux-3",
                "flux-kontext-pro",
                "flux-kontext-max",
                "grok-imagine-image-quality",
                "grok-imagine-image",
                "qwen"
              ]
            },
            "prompts": {
              "minItems": 1,
              "maxItems": 10,
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1,
                "maxLength": 32000
              }
            },
            "onePromptOneImage": {
              "default": false,
              "type": "boolean"
            },
            "imageCount": {
              "default": 1,
              "type": "integer",
              "minimum": 1,
              "maximum": 10
            },
            "dimensions": {
              "default": "1024x1024",
              "type": "string"
            },
            "background": {
              "default": "auto",
              "type": "string",
              "enum": [
                "auto",
                "transparent",
                "opaque"
              ]
            },
            "moderation": {
              "default": "auto",
              "type": "string",
              "enum": [
                "auto",
                "low"
              ]
            },
            "outputFormat": {
              "default": "png",
              "type": "string",
              "enum": [
                "png",
                "jpeg",
                "webp"
              ]
            },
            "outputCompression": {
              "default": 100,
              "type": "integer",
              "minimum": 0,
              "maximum": 100
            },
            "quality": {
              "default": "auto",
              "type": "string",
              "enum": [
                "auto",
                "max",
                "xhigh",
                "high",
                "medium",
                "low",
                "hd",
                "standard"
              ]
            },
            "style": {
              "default": "vivid",
              "type": "string",
              "enum": [
                "vivid",
                "natural"
              ]
            },
            "inputFidelity": {
              "default": "high",
              "type": "string",
              "enum": [
                "low",
                "high"
              ]
            },
            "aspectRatio": {
              "default": "1:1",
              "type": "string",
              "enum": [
                "auto",
                "1:1",
                "2:3",
                "3:2",
                "3:4",
                "4:3",
                "4:5",
                "5:4",
                "9:16",
                "16:9",
                "21:9",
                "9:21",
                "1:4",
                "4:1",
                "1:8",
                "8:1",
                "2:1",
                "1:2",
                "19.5:9",
                "9:19.5",
                "20:9",
                "9:20",
                "5:2"
              ]
            },
            "seed": {
              "type": "integer",
              "minimum": 0,
              "maximum": 9007199254740991
            },
            "safetyTolerance": {
              "default": 2,
              "type": "integer",
              "minimum": 0,
              "maximum": 6
            },
            "enableTranslation": {
              "default": true,
              "type": "boolean"
            },
            "promptUpsampling": {
              "default": false,
              "type": "boolean"
            },
            "uploadCn": {
              "default": false,
              "type": "boolean"
            },
            "nsfwChecker": {
              "default": false,
              "type": "boolean"
            },
            "enablePro": {
              "default": false,
              "type": "boolean"
            },
            "disablePup": {
              "default": false,
              "type": "boolean"
            },
            "thinkingLevel": {
              "default": "minimal",
              "type": "string"
            },
            "watermark": {
              "default": "",
              "type": "string"
            },
            "resolution": {
              "default": "1K",
              "type": "string",
              "enum": [
                "512",
                "1K",
                "2K",
                "4K",
                "1k",
                "2k"
              ]
            }
          },
          "required": [
            "provider",
            "model",
            "prompts"
          ],
          "additionalProperties": false
        },
        "references": {
          "maxItems": 64,
          "type": "array",
          "items": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "upload"
                  },
                  "mime": {
                    "type": "string"
                  },
                  "size": {
                    "type": "integer",
                    "exclusiveMinimum": 0,
                    "maximum": 9007199254740991
                  },
                  "sha256": {
                    "type": "string",
                    "minLength": 64,
                    "maxLength": 64,
                    "pattern": "^[0-9a-f]{64}$"
                  },
                  "width": {
                    "type": "integer",
                    "exclusiveMinimum": 0,
                    "maximum": 9007199254740991
                  },
                  "height": {
                    "type": "integer",
                    "exclusiveMinimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "required": [
                  "kind",
                  "mime",
                  "size",
                  "sha256",
                  "width",
                  "height"
                ],
                "additionalProperties": false
              },
              {
                "type": "object",
                "properties": {
                  "kind": {
                    "type": "string",
                    "const": "stored"
                  },
                  "source": {
                    "type": "object",
                    "properties": {
                      "type": {
                        "type": "string",
                        "enum": [
                          "asset",
                          "reference-source"
                        ]
                      },
                      "id": {
                        "type": "string",
                        "minLength": 1,
                        "format": "uuid",
                        "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                      }
                    },
                    "required": [
                      "type",
                      "id"
                    ],
                    "additionalProperties": false
                  }
                },
                "required": [
                  "kind",
                  "source"
                ],
                "additionalProperties": false
              }
            ]
          }
        },
        "mask": {
          "anyOf": [
            {
              "anyOf": [
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "upload"
                    },
                    "mime": {
                      "type": "string"
                    },
                    "size": {
                      "type": "integer",
                      "exclusiveMinimum": 0,
                      "maximum": 9007199254740991
                    },
                    "sha256": {
                      "type": "string",
                      "minLength": 64,
                      "maxLength": 64,
                      "pattern": "^[0-9a-f]{64}$"
                    },
                    "width": {
                      "type": "integer",
                      "exclusiveMinimum": 0,
                      "maximum": 9007199254740991
                    },
                    "height": {
                      "type": "integer",
                      "exclusiveMinimum": 0,
                      "maximum": 9007199254740991
                    }
                  },
                  "required": [
                    "kind",
                    "mime",
                    "size",
                    "sha256",
                    "width",
                    "height"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "stored"
                    },
                    "source": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "asset",
                            "reference-source"
                          ]
                        },
                        "id": {
                          "type": "string",
                          "minLength": 1,
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                        }
                      },
                      "required": [
                        "type",
                        "id"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "kind",
                    "source"
                  ],
                  "additionalProperties": false
                }
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "idempotencyKey": {
          "type": "string",
          "pattern": "^[A-Za-z0-9._:-]{8,128}$"
        },
        "requestTotal": {
          "description": "Required. Total images and videos the User's whole request creates, over every call, retry and parallel call. At 4 or more, ask the User first.",
          "type": "integer",
          "minimum": 1,
          "maximum": 1000
        },
        "costConfirmation": {
          "description": "Only the code from a cost_confirmation_required refusal, sent after the User said yes.",
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,512}$"
        },
        "hourlyLimitConfirmation": {
          "description": "Only the code from an hourly_image_limit refusal, sent after the User said yes.",
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,512}$"
        }
      },
      "required": [
        "projectId",
        "form",
        "references",
        "mask",
        "idempotencyKey",
        "requestTotal"
      ],
      "additionalProperties": false
    }
    videos.generateActionConnection permission

    MANDATORY: before anything that creates 4 images or videos or more in total (several calls, parallel calls, retries, lists, CSV rows), tell the User the exact count, say it bills their own provider account, and wait for an explicit yes. No yes, no call. Set requestTotal to that total on every call. SeamUI refuses, and starts nothing, without the costConfirmation code its refusal gives. Each call creates 1 video: clips, shots of one merged video and model edits all count. Create a video from text, animate an image (image to video), go from a first to a last frame, or restyle a video with a model: pick the route in catalog.models by its uses. Ordered stored source IDs are accepted: get one for a local or online file with references.upload or references.import. Segments of one composed video are ordinary sequential calls. Keep actionId and read actions.result instead of resending uncertain work. Each created Asset carries url, its public permanent media URL, to display, download or reuse the file.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "projectId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "input": {
          "type": "object",
          "properties": {
            "model": {
              "type": "string"
            },
            "provider": {
              "type": "string",
              "enum": [
                "default",
                "kie"
              ]
            },
            "prompt": {
              "type": "string",
              "maxLength": 64000
            },
            "filledSlotKeys": {
              "maxItems": 32,
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "settings": {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            }
          },
          "required": [
            "model",
            "provider",
            "prompt",
            "filledSlotKeys",
            "settings"
          ],
          "additionalProperties": false
        },
        "attachments": {
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {
            "minItems": 1,
            "maxItems": 64,
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "stored"
                    },
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 255
                    },
                    "source": {
                      "type": "object",
                      "properties": {
                        "type": {
                          "type": "string",
                          "enum": [
                            "asset",
                            "reference-source"
                          ]
                        },
                        "id": {
                          "type": "string",
                          "format": "uuid",
                          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
                        }
                      },
                      "required": [
                        "type",
                        "id"
                      ],
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "kind",
                    "name",
                    "source"
                  ],
                  "additionalProperties": false
                },
                {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "type": "string",
                      "const": "upload"
                    },
                    "name": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 255
                    },
                    "mime": {
                      "type": "string",
                      "minLength": 1,
                      "maxLength": 100
                    },
                    "size": {
                      "type": "integer",
                      "exclusiveMinimum": 0,
                      "maximum": 9007199254740991
                    },
                    "sha256": {
                      "type": "string",
                      "pattern": "^[0-9a-f]{64}$"
                    },
                    "durationSeconds": {
                      "anyOf": [
                        {
                          "type": "number",
                          "exclusiveMinimum": 0
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "width": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991
                        },
                        {
                          "type": "null"
                        }
                      ]
                    },
                    "height": {
                      "anyOf": [
                        {
                          "type": "integer",
                          "exclusiveMinimum": 0,
                          "maximum": 9007199254740991
                        },
                        {
                          "type": "null"
                        }
                      ]
                    }
                  },
                  "required": [
                    "kind",
                    "name",
                    "mime",
                    "size",
                    "sha256",
                    "durationSeconds",
                    "width",
                    "height"
                  ],
                  "additionalProperties": false
                }
              ]
            }
          }
        },
        "idempotencyKey": {
          "type": "string",
          "pattern": "^[A-Za-z0-9._:-]{8,128}$"
        },
        "requestTotal": {
          "description": "Required. Total images and videos the User's whole request creates, over every call, retry and parallel call. At 4 or more, ask the User first.",
          "type": "integer",
          "minimum": 1,
          "maximum": 1000
        },
        "costConfirmation": {
          "description": "Only the code from a cost_confirmation_required refusal, sent after the User said yes.",
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,512}$"
        }
      },
      "required": [
        "projectId",
        "input",
        "attachments",
        "idempotencyKey",
        "requestTotal"
      ],
      "additionalProperties": false
    }
    images.transformActionConnection permission

    MANDATORY: before anything that creates 4 images or videos or more in total (several calls, parallel calls, retries, lists, CSV rows), tell the User the exact count, say it bills their own provider account, and wait for an explicit yes. No yes, no call. Set requestTotal to that total on every call. SeamUI refuses, and starts nothing, without the costConfirmation code its refusal gives. Each call creates 1 image. Remove the background or cut out a subject (remove_background), change the background color (update_background), or resize an image to new dimensions (resize). Upscaling, crop and deletion are not supported. The source version and exact settings remain sealed in an idempotent action. Each output counts toward the hourly image limit of images.generate. The created derivative carries url, its public permanent media URL.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "command": {
          "description": "Shared command without clientRequestId: schemaVersion=1, sourceAssetId=UUID, outputPolicy={createDerivative:true,preserveSource:true}, operation. resize: target={width,height,presetId:null|string}, fit=contain, aspectRatio=preserve, crop=false, upscaleSourcePixels=false, resampling=high_quality, padding={color:#RRGGBB}, output={formatPolicy:preserve_source_when_supported_else_png}. remove_background: utilitySelection={mode:auto}|{mode:explicit,utilityId}, dimensions={policy:preserve_source_exactly}, output={format:png}, acknowledgedContourRisk:boolean. update_background: background={kind:custom_solid,color:#RRGGBB} or shared preset, intermediateAssetPolicy=temporary_not_visible, output={formatPolicy:preserve_source_when_supported_else_png}, transparencyPolicy=skip_removal and acknowledgedContourRisk=false, or remove_if_needed with segmentationUtilitySelection and acknowledgedContourRisk. Unknown fields are refused.",
          "type": "object",
          "propertyNames": {
            "type": "string"
          },
          "additionalProperties": {}
        },
        "idempotencyKey": {
          "type": "string",
          "pattern": "^[A-Za-z0-9._:-]{8,128}$"
        },
        "requestTotal": {
          "description": "Required. Total images and videos the User's whole request creates, over every call, retry and parallel call. At 4 or more, ask the User first.",
          "type": "integer",
          "minimum": 1,
          "maximum": 1000
        },
        "costConfirmation": {
          "description": "Only the code from a cost_confirmation_required refusal, sent after the User said yes.",
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,512}$"
        },
        "hourlyLimitConfirmation": {
          "description": "Only the code from an hourly_image_limit refusal, sent after the User said yes.",
          "type": "string",
          "pattern": "^[A-Za-z0-9_-]{1,512}$"
        }
      },
      "required": [
        "command",
        "idempotencyKey",
        "requestTotal"
      ],
      "additionalProperties": false
    }
    videos.editActionConnection permission

    Merge, combine, join or stitch 2 to 8 videos end to end in the given order (op merge), or trim, cut or shorten one video (op trim). No provider call and no generation cost. Keep actionId and read actions.result; never automatically resend uncertain work.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "oneOf": [
        {
          "type": "object",
          "properties": {
            "op": {
              "type": "string",
              "const": "trim"
            },
            "idempotencyKey": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{8,128}$"
            },
            "assetId": {
              "type": "string",
              "format": "uuid",
              "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
            },
            "startSec": {
              "type": "number",
              "minimum": 0
            },
            "endSec": {
              "type": "number",
              "exclusiveMinimum": 0
            },
            "audio": {
              "type": "boolean"
            },
            "name": {
              "type": "string",
              "maxLength": 120
            }
          },
          "required": [
            "op",
            "idempotencyKey",
            "assetId",
            "startSec",
            "endSec",
            "audio"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "op": {
              "type": "string",
              "const": "merge"
            },
            "idempotencyKey": {
              "type": "string",
              "pattern": "^[A-Za-z0-9._:-]{8,128}$"
            },
            "assetIds": {
              "minItems": 2,
              "maxItems": 8,
              "type": "array",
              "items": {
                "type": "string",
                "format": "uuid",
                "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
              }
            },
            "audio": {
              "type": "boolean"
            },
            "name": {
              "type": "string",
              "maxLength": 120
            }
          },
          "required": [
            "op",
            "idempotencyKey",
            "assetIds",
            "audio"
          ],
          "additionalProperties": false
        }
      ]
    }
    videos.extract-frameActionConnection permission

    Save the first or last frame of a video as an image Asset: a still, a thumbnail, or the start image of the next shot. Keep actionId for actions.result; never automatically resend uncertain work.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "assetId": {
          "type": "string",
          "format": "uuid",
          "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
        },
        "position": {
          "type": "string",
          "enum": [
            "first",
            "last"
          ]
        },
        "idempotencyKey": {
          "type": "string",
          "pattern": "^[A-Za-z0-9._:-]{8,128}$"
        }
      },
      "required": [
        "assetId",
        "position",
        "idempotencyKey"
      ],
      "additionalProperties": false
    }
    assets.statusRead only

    Read bounded durable Asset status, safe failures, reported/calculated/unknown costs and, once created, the public media url. Follow the returned polling guidance (2 seconds minimum, backoff to 30 seconds, stop at terminal or unverified state). Never resubmit missing work. This read never dispatches or polls a provider.

    Input schema and limits
    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "assetIds": {
          "minItems": 1,
          "maxItems": 100,
          "type": "array",
          "items": {
            "type": "string",
            "format": "uuid",
            "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
          }
        },
        "preparedIntent": {
          "type": "string",
          "minLength": 1,
          "maxLength": 1400000
        }
      },
      "additionalProperties": false
    }

    Planned

    These capabilities are not available to connected agents.

    • assets.source.resolve

      Resolve a reusable source Asset and its generation lineage by stable ID.

    Unavailable by design

    These operations are deliberately excluded from SeamUI MCP.

    • batches.prepareExcluded

      Validate a CSV batch and register its rows with the Worker.

    • batches.progressExcluded

      Batch progress, safe row errors and terminal batch status.

    • batches.dispatch-queueExcluded

      Dashboard queue that dispatches registered batch rows through server-owned claims.

    • images.cropUnavailable

      Crop is not an existing transformation: the resize command fixes crop to false.

    • projects.deleteExcluded

      Delete a Project, including an empty one.

    • assets.deleteExcluded

      Soft-delete one or many Assets, including failed-card dismissal and batch discard.

    • prompts.deleteExcluded

      Delete an image or video prompt entry.

    • maintenance.content-cleanupExcluded

      Scheduled cleanup of old deleted, failed and reference media. Cron only, never a user capability.

    • exclusion.provider-keysExcluded

      Read, add, replace or delete provider key values.

    • exclusion.membersExcluded

      Member management and role changes.

    • exclusion.workspace-lifecycleExcluded

      Workspace creation, naming and switching. Listing the account's Workspaces is the read-only account.workspaces.list.

    • exclusion.billingExcluded

      Billing, checkout, plan redemption and billing data.

    • exclusion.mcp-connection-controlExcluded

      SeamUI-only OAuth consent, Workspace binding, cancellation and Connection revocation. The setup tool only links to the authenticated page.

    • exclusion.accountExcluded

      Global account, profile and onboarding operations.

    • exclusion.inspirationsExcluded

      Inspiration browsing, suggestions and community submissions.

    • exclusion.issue-reportingExcluded

      Issue reporting and contact forms.

    • exclusion.adminExcluded

      Super-admin operations.

    • exclusion.public-free-toolsExcluded

      Public SEO free tools and lead capture; a separate product, not a BYOK Workspace capability.

    • exclusion.agent-workflowExcluded

      Mission or agent workflow persistence; SeamUI schedules no workflow.

    Confirmation and safe recovery

    Every action uses the revocable permission accepted when the Workspace is selected. No action asks for another SeamUI confirmation; your assistant app decides which tool calls it asks you to approve.

    Agents must check status after an uncertain response and must never automatically resubmit potentially accepted work.

    View agent recipes Connection instructions

    MCP release 3.0.0+mcp.2026-10-05.1. The application version is read automatically from package.json.

    Product

    • The workspace
    • Pricing
    • FAQ
    • Image & video models
    • MCP for assistants
    • Prompt inspirations
    • Free AI image generator
    • Free AI video generator
    • Kie.ai
    • Pixazo.ai
    • Alternatives & comparisons
    • Partners
    • Affiliate program

    Use cases

    • For agencies
    • For Shopify sellers
    • For Etsy sellers
    • For Amazon sellers
    • For course creators
    • For Instagram creators
    • For LinkedIn creators
    • For real estate
    • For TikTok creators

    Guides

    • ChatGPT guides
    • Gemini guides
    • Grok guides
    • AI video guides
    • AI workflow guides
    • All guides

    Popular questions

    • How do I batch generate images with ChatGPT?
    • How many images can ChatGPT generate per day?
    • How do I use reference images in ChatGPT?
    • Can I use ChatGPT images commercially?
    • Can ChatGPT generate images from a spreadsheet?

    SeamUI © 2026 SeamUI. Pay once, create forever.

    Sign inPrivacyTermsContactSitemap
    SeamUI