# Uwear (remote · api.uwear.ai)

AI photoshoot studio: garments, avatars, locations, and art direction

- Trust score: 73/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `api.uwear.ai`: 73/100 (this document), [markdown](https://verifymcp.io/servers/ai-uwear-uwear/api.md), [page](https://verifymcp.io/servers/ai-uwear-uwear/api)

## Channel facts

- Endpoint: `https://api.uwear.ai/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 92/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 52/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (poor).
  - Context-footprint check failed: tool/resource definitions use about 16946 tokens (~180/item across 94 items; 77 tools + 17 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 7/100
  - Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (18% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.
  - Supports UI / widget rendering.

## Install

### Claude

```bash
claude mcp add --transport http ai-uwear-uwear https://api.uwear.ai/mcp
```

### Codex

```toml
[mcp_servers.ai-uwear-uwear]
url = "https://api.uwear.ai/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-uwear-uwear": {
      "type": "remote",
      "url": "https://api.uwear.ai/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add ai-uwear-uwear --url https://api.uwear.ai/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  ai-uwear-uwear:
    url: "https://api.uwear.ai/mcp"
```

### Other

```json
{
  "mcpServers": {
    "ai-uwear-uwear": {
      "type": "http",
      "url": "https://api.uwear.ai/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 73, +1)

- [security] Tool “propose_brief” is now declared destructive
- [security] Tool “confirm_brief” is now declared destructive
- [security] Tool “generate_avatar” is now declared destructive
- [security] Tool “mcp_clear_context” is now declared destructive
- [security] Tool “mcp_export_montage” is now declared destructive
- [security] Tool “mcp_generate_clip” is now declared destructive
- [security] Tool “mcp_replace_context” is now declared destructive
- [security] Tool “publish_production_workflow_version” is now declared destructive
- [security] Tool “queue_generation_result_qa” is now declared destructive
- [security] Tool “save_template” is now declared destructive
- [security] Tool “start_production_workflow_run” is now declared destructive
- [security] Tool “start_production_workflow_run_batch” is now declared destructive
- [security] Tool “update_art_direction” is now declared destructive
- [security] Tool “update_garment” is now declared destructive
- [security] Tool “update_preferences” is now declared destructive
- [security] Tool “update_production_workflow_version” is now declared destructive
- [functional improvement] Stability: unverified → 0.03

### 2026-08-01 (score 72)

First indexed and scored.

## MCP tools (77)

### `search_uwear_library` (~276 tokens)

Search Library

Universal hybrid retrieval across the user's visible Uwear library: garments, avatars/models, locations, ArtDirections, uploaded files, and generation results. Use this before opening the picker when the user describes assets or saved creative direction by exact name/SKU or natural language, e.g. 'SKU 42', 'urban art direction', 'summer denim', or 'studio model'. For saved outfits, retrieve matching garments first, then call list_outfits with clothing_item_ids or propose_outfits from the garment IDs. Returns stable typed IDs, ids_by_type, detail_tool/detail_arguments, and selection hints; for saved ArtDirections, use the returned art_direction_id in briefs. This combines indexed lexical matching with vector retrieval; do not run separate substring searches.

Input parameters:

- `item_types` (array): Optional item types to search. Omit to search clothing, avatars/models, locations, art directions, uploaded files, and generation results.
- `limit` (integer): Maximum number of hybrid matches to return
- `query` (string, required): Hybrid retrieval query. Handles exact names/SKUs/IDs and natural-language visual or attribute intent.
- `refresh_index` (boolean): Force-refresh missing or stale index rows for currently visible library items before searching. Leave false for normal MCP use; search refreshes once automatically only when no accessible match is fo…

### `list_garments` (~214 tokens)

List Garments

List user's garments with structured filters or query for hybrid name/SKU/metadata/image-attribute search.

Input parameters:

- `clothing_item_ids` (array): Filter to specific garment IDs
- `end_date` (string): Filter: created on or before this date (ISO format)
- `include_image_url` (boolean): Set true when the garment image itself is needed for visual display or reuse.
- `limit` (integer): Number of items per page
- `page` (integer): Page number for pagination
- `query` (string): Hybrid search across garment names, SKUs, metadata, and visual attributes.
- `sort` (string): Sort order: 'field:direction', e.g. 'created_at:desc', 'clothing_item_name:asc'. Default: created_at:desc
- `start_date` (string): Filter: created on or after this date (ISO format, e.g. '2025-06-01')
- `tag_ids` (array): Filter to garments with any of these tags

### `get_garment` (~30 tokens)

Get Garment

Get a specific garment by ID.

Input parameters:

- `garment_id` (integer, required): The garment ID to retrieve

### `upload_garment_from_chat_file` (~1126 tokens)

Upload Garments from Chat

Batch upload garments from ChatGPT attachments. Defaults to background removal; pass processing_mode='none' to store original images as-is. Pass actual file objects only in top-level image_file_1, image_file_2, etc. Prefer garments[].assets with {asset_kind: full|detail, asset_view: front|back|side, image_file: 'image_file_N'}; exactly one full front is required, every full view is unique, and detail views can repeat. Do not rely on array position to pair assets; every asset must reference its exact top-level field name. No image_url here; use upload_garment_from_public_url for URLs. For local filesystem files, use prepare_local_garment_upload instead. No base64 and no local paths.

Input parameters:

- `garments` (array, required): Garment metadata. Put files in top-level image_file_1..image_file_20 and reference those exact field names inside each garment. No base64.
- `image_file_1`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
- `image_file_10`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
- `image_file_11`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
- `image_file_12`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
- `image_file_13`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
- `image_file_14`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
- `image_file_15`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
- `image_file_16`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
- `image_file_17`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
- `image_file_18`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
- `image_file_19`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
- `image_file_2`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
- `image_file_20`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
- `image_file_3`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
- `image_file_4`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
- `image_file_5`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
- `image_file_6`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
- `image_file_7`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
- `image_file_8`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
- `image_file_9`: Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.

### `upload_garment_from_public_url` (~368 tokens)

Upload Garments from URL

Batch upload garments from public HTTP(S) image URLs. Defaults to background removal; pass processing_mode='none' to store original images as-is. Prefer assets with {asset_kind: full|detail, asset_view: front|back|side, asset_url}; exactly one full front is required, every full view is unique, and detail views can repeat. For ChatGPT attachments, use upload_garment_from_chat_file instead. For local filesystem files, use prepare_local_garment_upload instead. No base64, chat file objects, or local paths.

Input parameters:

- `assets` (array): Single garment full asset set. Use asset_kind/asset_view. Exactly one full front is required; full views are unique and detail views can repeat.
- `back_image_url` (string): Single optional public HTTP(S) back image URL
- `description` (string): Single item-level garment description hint
- `detail_image_urls` (array): Single optional public HTTP(S) detail image URLs
- `file_name` (string): Single original file name
- `garments` (array): Garments to upload from public HTTP(S) URLs. No chat file objects and no base64.
- `gender` (string): Single garment gender: male, female, unisex
- `image_url` (string): Single public HTTP(S) front image URL
- `mime_type` (string): Single MIME/content type, e.g. image/png
- `name` (string): Single garment name
- `processing_mode` (string): Optional image processing. 'background_removal' removes the background (the platform upload default); 'none' stores the image as-is. Omit to use background removal.
- `side_image_url` (string): Single optional public HTTP(S) side image URL

### `list_avatars` (~239 tokens)

List Avatars

List the user's avatars: the reusable people who wear the garments, called 'models' or 'mannequins' in fashion terms (not the AI engines — for those, use list_models). Supports structured filters or query for hybrid name/metadata/image-attribute search. Set include_image_url=true when the avatar image itself is needed.

Input parameters:

- `avatar_ids` (array): Filter to specific avatar IDs
- `end_date` (string): Filter: created on or before this date (ISO format)
- `include_image_url` (boolean): Set true when you need to inspect or reuse the avatar/model image URL.
- `limit` (integer): Number of items per page
- `page` (integer): Page number for pagination
- `query` (string): Hybrid search across avatar/model names, metadata, and visual attributes.
- `sort` (string): Sort order: 'field:direction', e.g. 'created_at:desc'. Default: created_at:desc
- `start_date` (string): Filter: created on or after this date (ISO format)
- `tag_ids` (array): Filter to avatars with any of these tags

### `upload_avatar_from_chat_file` (~628 tokens)

Upload Avatars from Chat

Batch upload reusable avatars/models from person photos the user attached in chat. Keep avatar metadata in avatars[] and pass top-level image_file_1, image_file_2, etc. in the same order. No base64, no local paths. Do not use ordinary text-to-image results or generated multi-panel sheets as an upload fallback; use generate_avatar followed by save_generated_avatar for Uwear-created avatars. Use only when the user explicitly wants a specific or consistent person.

Input parameters:

- `avatars` (array): Avatar/model metadata in the same order as image_file_1, image_file_2, etc. No base64.
- `description` (object): Single recovered avatar metadata
- `file_name` (string): Single recovered original file name
- `image_file_1`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_file_10`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_file_2`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_file_3`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_file_4`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_file_5`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_file_6`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_file_7`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_file_8`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_file_9`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_url` (string): Single resolved download URL used by automatic opaque-file recovery.
- `mime_type` (string): Single recovered MIME/content type, e.g. image/png
- `name` (string): Single recovered avatar/model name

### `generate_avatar` (~291 tokens)

Generate Avatar Character Sheet

Generate canonical reusable avatar/model design-sheet candidates from the provided person description. The result uses the same character-sheet template and creator path as the Uwear app. Use when the user has no saved avatars and explicitly asks Uwear to create a reusable model/avatar, especially for consistency across a shoot. Do not block a normal photoshoot on this; avatar/model is optional. If the user wants help inventing or enriching the person's description, call build_avatar_prompt first; if the user's prompt is already intentional and specific, pass it directly here. Pass model when the user requests a specific image model; otherwise the backend uses the cheapest active image generation model available to the account. After results complete, call save_generated_avatar on the chosen result to save it to the avatar library.

Input parameters:

- `age_range` (string): Optional concrete age or age range for the avatar footer.
- `build` (string): Optional authoritative physical build for the avatar footer. When omitted, the canonical creator derives it from the resolved persona. Placeholder values and inference instructions are rejected.
- `model` (string): Optional image model slug or display name. Defaults to the cheapest active image generation model available to the account.
- `name` (string): Optional name to carry with the avatar generation
- `num_images` (integer): Number of avatar candidate images to generate
- `prompt` (string, required): Description of the person to render as a reusable avatar design sheet

### `save_generated_avatar` (~149 tokens)

Save Generated Avatar

Save a completed generate_avatar image result as a reusable avatar/model in the user's library. Use only after generate_avatar finishes and the user chooses a candidate. Normal text-to-image results are not eligible because they do not contain the avatar creator's reopenable inputs.

Input parameters:

- `description` (object): Optional avatar metadata. If omitted, the system can analyze the image.
- `enhance_description` (boolean): Analyze the image to create avatar metadata when description is omitted
- `generation_result_id` (integer, required): Completed image result ID returned by generate_avatar. Normal text-to-image results are not eligible because they do not contain reopenable avatar-creator inputs.
- `name` (string, required): Name for the saved avatar/model

### `list_outfits` (~200 tokens)

List Outfits

List user's outfits (saved garment combinations). Filter by garment IDs, active status, date range, or query against contained garments.

Input parameters:

- `clothing_item_ids` (array): Filter to outfits containing any of these garments
- `end_date` (string): Filter: created on or before this date (ISO format)
- `is_active` (string): Filter by status: 'true', 'false', or 'both' (default: both)
- `limit` (integer): Number of items per page
- `outfit_ids` (array): Filter to specific outfit IDs
- `page` (integer): Page number for pagination
- `query` (string): Search outfit names and contained garments.
- `sort` (string): Sort: 'field:direction'. Default: created_at:desc
- `start_date` (string): Filter: created on or after this date (ISO format)
- `tag_ids` (array): Filter to outfits with any of these tags

### `create_outfit_from_garment_ids` (~81 tokens)

Create Outfit

Create an outfit from existing garment IDs. Pairs saved garments together into a saved outfit without uploading new images.

Input parameters:

- `clothing_item_ids` (array, required): IDs of clothing items to combine into an outfit
- `is_active` (boolean): Whether the outfit should be immediately active
- `name` (string): Optional human-readable outfit name

### `build_avatar_prompt` (~158 tokens)

Build Avatar Prompt

Build a highly detailed prompt for generating a unique reusable avatar/model. Use this when the user wants help describing a person before image generation. If the user's prompt is already intentional and specific, Uwear can skip this and pass the user's wording directly to generate_avatar.

Input parameters:

- `aspect_ratio` (string): Optional aspect ratio for context, e.g. 9:16
- `camera` (string): Optional camera key for context, e.g. midshot
- `camera_label` (string): Optional human-readable camera label
- `model_slug` (string): Optional image model slug for context
- `user_text` (string): User's rough description of the person/model. Leave empty when the user wants the backend to invent a unique avatar prompt.

### `propose_outfits` (~109 tokens)

Propose Outfits

Use Uwear's outfit proposer to create styled outfit combinations from selected garments. Returns candidate titles, clothing_item_ids, and short rationales; call create_outfit_from_garment_ids only after the user chooses a proposal to save.

Input parameters:

- `clothing_item_ids` (array, required): Accessible clothing item IDs to combine into outfit proposals
- `instructions` (string): Optional styling brief, occasion, season, constraints, or vibe
- `max_outfits` (integer): Maximum number of outfit proposals to return

### `list_locations` (~214 tokens)

List Locations

List reusable location/scene reference images by structured filters or query: IDs, tags, date range, and sort. Use when the user wants to pick a saved background/location reference for a generation.

Input parameters:

- `end_date` (string): Filter: created on or before this date (ISO format)
- `include_image_url` (boolean): Set true when the location/reference image URL is needed for inspection or reuse.
- `limit` (integer): Number of items per page
- `location_ids` (array): Filter to specific location IDs
- `page` (integer): Page number for pagination
- `query` (string): Hybrid search across location names, metadata, and visual attributes.
- `sort` (string): Sort order: 'field:direction', e.g. 'created_at:desc', 'location_name:asc'. Default: created_at:desc
- `start_date` (string): Filter: created on or after this date (ISO format)
- `tag_ids` (array): Filter to locations with any of these tags

### `get_location` (~31 tokens)

Get Location

Get a reusable location/scene reference by ID.

Input parameters:

- `location_id` (integer, required): The location ID to retrieve

### `create_location` (~136 tokens)

Create Location

Create a reusable location/scene reference from an image URL. If no description is supplied, the backend analyzes the image. Use the returned location_id in propose_brief/update_brief.

Input parameters:

- `description` (string): Optional location description. If omitted, the system analyzes the image.
- `image_url` (string, required): URL of the location/reference image
- `name` (string, required): Name for the reusable location/scene reference
- `source_metadata` (object): Optional provenance metadata for the source image
- `tag_ids` (array): Optional tag IDs to assign after creating the location
- `thumbnail_url` (string): Optional thumbnail URL

### `update_garment` (~560 tokens)

Update Garment

Update a garment's metadata or patch its product photos. Send image changes through assets[] with front/back/side/detail roles. Provided front/back assets replace those singleton roles; provided side/detail assets are added. Omitted existing assets are preserved.

Input parameters:

- `assets` (array): Asset patch for garment product photos. A provided full front/back/side replaces that unique view; provided detail assets are added. Omitted existing assets are preserved.
- `clothing_item_id` (integer, required): The garment ID to update
- `description` (string): Updated item-level garment description, or a hint to use when patching images
- `gender` (string): Updated target gender: male, female, or unisex
- `image_file_1`: Generic top-level MCP file object for assets[].image_file references
- `image_file_10`: Generic top-level MCP file object for assets[].image_file references
- `image_file_11`: Generic top-level MCP file object for assets[].image_file references
- `image_file_12`: Generic top-level MCP file object for assets[].image_file references
- `image_file_13`: Generic top-level MCP file object for assets[].image_file references
- `image_file_14`: Generic top-level MCP file object for assets[].image_file references
- `image_file_15`: Generic top-level MCP file object for assets[].image_file references
- `image_file_16`: Generic top-level MCP file object for assets[].image_file references
- `image_file_17`: Generic top-level MCP file object for assets[].image_file references
- `image_file_18`: Generic top-level MCP file object for assets[].image_file references
- `image_file_19`: Generic top-level MCP file object for assets[].image_file references
- `image_file_2`: Generic top-level MCP file object for assets[].image_file references
- `image_file_20`: Generic top-level MCP file object for assets[].image_file references
- `image_file_3`: Generic top-level MCP file object for assets[].image_file references
- `image_file_4`: Generic top-level MCP file object for assets[].image_file references
- `image_file_5`: Generic top-level MCP file object for assets[].image_file references
- `image_file_6`: Generic top-level MCP file object for assets[].image_file references
- `image_file_7`: Generic top-level MCP file object for assets[].image_file references
- `image_file_8`: Generic top-level MCP file object for assets[].image_file references
- `image_file_9`: Generic top-level MCP file object for assets[].image_file references
- `name` (string): Updated garment name

### `create_tag` (~68 tokens)

Create Tag

Create a new tag for organizing assets (garments, models, outfits, files, results, locations). Requires an active company workspace.

Input parameters:

- `color` (string): Optional hex color, e.g. '#22C55E'
- `name` (string, required): Tag name (unique within the company)

### `get_generation_status` (~192 tokens)

Get Generation Status

Check generation job status. Completed results may include labeled native ImageContent previews; use them directly and never Markdown-embed result URLs. They are display previews, not originals: url/download_url are originals, preview_url is the fallback link, and poster_url/thumbnail_url is a video poster. Returns status, raw payload, settings, avatar_id, model_id, model_slug, use_case, credits_charged, estimated_processing_seconds, and status_guidance. Status can remain Created while queued/preparing; avoid tight polling loops. UI 'Gemini Pro' maps to model_slug nano-banana-pro or nano_banana_pro_clothing.

Input parameters:

- `generation_id` (integer, required): The generation ID to check. Returns raw payload, generation_setting, avatar_id, model_id, model_slug, and use_case. UI 'Gemini Pro' maps to model_slug nano-banana-pro or nano_banana_pro_clothing.

### `get_generation_results` (~566 tokens)

Get Generation Results

Look up generation results by exact IDs, filters, or hybrid image/name/SKU search. Returns labeled native ImageContent previews; use them directly and never Markdown-embed result URLs. They are display previews, not originals: url/download_url are originals, preview_url is the fallback link, and poster_url/thumbnail_url is a video poster. Every result includes generation_result_id and the response includes generation_result_ids; use those exact integers for queue_generation_result_qa/read_generation_result_qa or as durable generation_result command.source values in canonical edit, upscale, and video commands. Confirmation-gated clients use propose_brief(commands=[...], execute_immediately=true) when the user asked to run now, update_brief for a complete command replacement, or confirm_brief(execute=true) for a visible brief. Pass generation_result_id to fetch one result or generation_id to list a job's results. Returns raw payload when available so prior prompts can be recovered. Use start_date/end_date for requests like 'last week'.

Input parameters:

- `art_direction_ids` (array): Filter results to images generated with these art directions
- `avatar_ids` (array): Filter results to images generated with these avatars
- `clothing_item_ids` (array): Filter results to images generated with these clothing items
- `end_date` (string): Filter results created on or before this ISO date/datetime, e.g. 2026-04-27.
- `generation_id` (integer): Filter by parent generation ID (lists all result images from one generation job)
- `generation_result_id` (integer): Look up a single result image by its generation_result_id (the exact integer ID required by QA/edit/upscale/video tools). Returns that one result directly.
- `kind` (string): Filter by type: 'Image', 'Edit', 'Upscale', 'Video'
- `limit` (integer): Number of items per page
- `location_ids` (array): Filter results to images generated with these locations
- `model_ids` (array): Filter results to images generated with these AI models
- `outfit_ids` (array): Filter results to images generated with these outfits
- `page` (integer): Page number for pagination
- `qa_decision` (boolean): Filter by QA decision. true = accepted, false = rejected.
- `qa_statuses` (array): Filter by QA statuses, e.g. pending, processing, completed, error.
- `query` (string): Hybrid search across generated image content, originating item names, and SKUs.
- `start_date` (string): Filter results created on or after this ISO date/datetime, e.g. 2026-04-20.
- `tag_ids` (array): Filter by tag IDs (results must have at least one)

### `queue_generation_result_qa` (~234 tokens)

Run QA on Results

Default tool for generation-result QA. Use this whenever the user asks to QA, quality check, validate, review, inspect for defects, approve/reject, or assess already-created generation results. Do not substitute view_image for QA unless the user explicitly asks for a manual visual critique instead of the official Uwear QA pipeline. First identify the numeric generation_result_ids, then call this tool, then call read_generation_result_qa for the same IDs. Queued or requeued QA costs 1 credit per generation result; already-completed QA rows are not charged again. QA is built for scale — validating large batches (hundreds or thousands of results). When the user is iterating on a handful of results one by one, do not queue QA on your own initiative; run it when the user asks for it or when operating at batch scale.

Input parameters:

- `generation_result_ids` (array, required): Generation result IDs to QA. Queued or requeued QA costs 1 credit per result.
- `max_qa_retries` (integer): Maximum QA-triggered retry generations to allow. Retry generations can cost additional generation credits.

### `read_generation_result_qa` (~81 tokens)

Read QA Results

Read official Uwear QA status, decision, and structured QA JSON for existing generation results. Call this after queue_generation_result_qa when the user asks to QA/check/validate/review generated outputs; summarize the structured decision and issues, not a manual view_image opinion.

Input parameters:

- `generation_result_ids` (array, required): Generation result IDs to read QA for

### `download_generation_results` (~77 tokens)

Export Results as ZIP

Bundle generation results into a ZIP and return a time-limited download URL. Use when the user wants to download or export their generated images/videos.

Input parameters:

- `export_format` (string): Optional export format conversion, e.g. 'png' or 'jpg'
- `generation_result_ids` (array, required): Generation result IDs to include in the ZIP

### `view_image` (~252 tokens)

Analyze Image

Analyze any image using AI vision for manual inspection, debugging, visual description, or supplemental critique. Do not use this as the primary QA mechanism when the user asks to QA, quality-check, validate, review, approve/reject, or assess generated results; for QA requests use queue_generation_result_qa first, then read_generation_result_qa. Prefer generation_result_id for Shoot Board generation items, uploaded_file_id for Files items, or pass a public HTTPS image URL directly.

Input parameters:

- `generation_result_id` (integer): ID of an existing generation result to analyze. Preferred for Shoot Board generation items because the server resolves the HTTPS image URL.
- `image_url` (string): Public HTTPS image URL to analyze. Optional if generation_result_id or uploaded_file_id is provided.
- `question` (string, required): What to analyze: e.g. 'Is this a flat lay or worn on a model?', 'Does this need background removal?', 'Describe the garment details'. Do not use this as the primary tool for generation-result QA; use…
- `uploaded_file_id` (integer): ID of an uploaded file to analyze. Use for items from the Files library.

### `propose_montage` (~413 tokens)

Create Video Montage

ONLY for video montage/stitching/export workflows. Use when the user explicitly asks to create a montage, stitch clips, make a reel, export a video sequence, make video clips from images, or combine images/videos into one final video. Never use this for a photoshoot, lookbook, product shoot, collection shoot, outfit shoot, garment shoot, or image-generation request; those must use request_user_context followed by propose_brief/update_brief. Do not call this merely because selected context contains images, generations, garments, or models. A photoshoot may later feed a montage, but the photoshoot itself must be proposed as a BriefProposal first. PROPOSES the montage for user review — user can edit clips, generate missing videos, then export. Supports: existing videos with optional trim (`target_duration` or `start_time`/`end_time`), images that need video generation (specify video_model + a bespoke per-image motion prompt, and optionally `target_duration` or `duration`), per-clip speed/mute, global aspect ratio. If the user asks for clips to be e.g. '3 seconds each', set `target_duration: 3` on every item, including image items. For image items, avoid generic repeated prompts: tailor each prompt to the specific image and any requested zoom, movement, energy, or camera direction. If motion is not specified, inspect the image first with view_image and then write a fitting motion prompt from the image content before proposing. The user reviews and confirms in the UI. Export is free (0 credits); video generation clips cost credits per their model.

Input parameters:

- `aspect_ratio` (string): Output aspect ratio (e.g. '9:16', '16:9', '1:1')
- `base_resolution` (integer): Output resolution height in pixels
- `items` (array, required): Ordered list of montage items. Each is either an existing video or an image needing video generation. Min 1, max 10.

### `update_montage_proposal` (~497 tokens)

Update Video Montage

Patch the latest MontageProposal already shown in the UI. Use only for an existing video montage/reel/stitched sequence proposal; do not use this to modify a photoshoot brief. For photoshoot brief changes, call update_brief instead. Prefer `operations`, an ordered list of typed montage edits such as `clear_trim`, `remove`, `set_duration`, `set_trim_range`, `set_speed`, `set_muted`, `set_prompt`, `set_video_model`, `set_generate_audio`, `set_last_frame`, `set_aspect_ratio`, and `set_base_resolution`. Use `set_trim_range` for requests like 'use the second half', 'start at 3s', or 'trim from 3s to 6s'. Operations are applied in order to the current montage state. Legacy flat fields are still accepted as a compatibility shim. This updates the proposal only; it does not execute export or generation.

Input parameters:

- `apply_to_all` (boolean): Apply changes to every clip in the current montage proposal.
- `aspect_ratio` (string): Update the montage output aspect ratio.
- `base_resolution` (integer): Update the montage output resolution height.
- `clear_trim` (boolean): For video clips, remove trim bounds and restore the full clip length in the proposal.
- `clip_number` (integer): 1-based clip number to update. Omit when apply_to_all=true.
- `clip_numbers` (array): Optional list of 1-based clip numbers to update together.
- `end_time` (number): Trim end time in seconds for legacy trim-range updates.
- `generate_audio` (boolean): Enable or disable generated audio for image-to-video montage items.
- `last_frame_url` (string): Optional last-frame URL for image-to-video montage items.
- `muted` (boolean): Mute or unmute the selected clip(s).
- `operations` (array): Ordered montage patch operations. Preferred over the legacy flat fields below.
- `prompt` (string): Update the motion prompt for image-to-video montage items.
- `remove` (boolean): Remove the selected clip(s) from the proposal.
- `speed` (number): Playback speed multiplier.
- `start_time` (number): Trim start time in seconds for legacy trim-range updates.
- `target_duration` (number): Desired final clip length in seconds.
- `video_model` (string): Update the video model for image-to-video montage items.

### `estimate_cost` (~125 tokens)

Estimate Credit Cost

Estimate credit cost for an operation.

Input parameters:

- `duration` (integer): Video duration in seconds (video only, e.g. 4, 5, 6, 8, 10)
- `generate_audio` (boolean): Whether to generate audio (video only, doubles cost for most models)
- `model` (string): Specific model to use
- `num_items` (integer): Number of items/images
- `operation` (string, required): Operation: generate, edit, upscale, video
- `resolution` (string): Output resolution when supported by the selected image or video model

### `get_user_credits` (~16 tokens)

Get Credit Balance

Get user's current credit balance.

### `update_preferences` (~268 tokens)

Update Preferences

Update durable user preferences, photoshoot processes, or add a prompt. Treat all model fields as explicit model pins: leave model fields unset for normal backend defaults unless the user deliberately selected a specific model. The preferred way to save how a user generates is a template (save_template): a generation-preset template for reusable concrete single-shoot settings, a batch-workflow template for an ordered repeatable multi-shot flow — see the `Demo — …` system templates for worked examples. Use preferences for durable raw-text guidance that is not a concrete shoot setup.

Input parameters:

- `add_prompt` (object): Prompt to save: {text, category, is_favorite}
- `preferences` (object): Preference key-value updates. Model fields (default_model, default_edit_model, default_upscale_model, default_video_model, and process-level model) are explicit pins only; leave them unset for backen…

### `list_tags` (~74 tokens)

List Tags

List available tags for the user's company. Use this to resolve user-provided tag names like 'summer26' before selecting garments, outfits, models, files, generations, or locations. For no-UI MCP flows, find the tag ID here, then call get_items_by_tag or the relevant list_* tool with tag_ids.

### `get_items_by_tag` (~114 tokens)

Get Items by Tag

Get all item IDs tagged with a specific tag, grouped by type. Use after list_tags for no-UI MCP requests like 'use my clothes tagged summer26'; then pass the resulting clothing_item IDs as garment_ids to propose_brief instead of opening request_user_context.

Input parameters:

- `item_types` (array): Filter to specific types: 'clothing_item', 'avatar', 'outfit', 'generation_result', 'location'. Omit to get all.
- `tag_id` (integer, required): Tag ID to look up

### `request_user_context` (~336 tokens)

Ask User to Pick Assets

FIRST tool to call for a new photoshoot only when the user has not supplied garment/outfit IDs or textual selectors such as tag names, saved ArtDirection names, location names, or outfit names. Opens the MCP app/gallery so the user can choose assets, add them to the Shoot Board, and press Confirm context. BLOCKS until the user confirms their selection. Do not use this when a no-UI path can resolve the request with list_tags/get_items_by_tag/list_garments or the ArtDirection lookup tools. Do not tell the user to drag assets into chat. If the user has no garments/outfits, ask them to attach garment/product images and use upload_garment_from_chat_file, upload_garment_from_public_url, or create_outfit_from_garment_ids before trying to create a brief. Do not request models when inventory shows avatars=0. Avatar/model is optional; only ask for one when the user wants a specific or consistent person. If they want a model and have none, ask for a person photo and use upload_avatar_from_chat_file, or use generate_avatar if they want Uwear to create a reusable model.

Input parameters:

- `expected_types` (array, required): Accepted item types (match panel tabs): 'clothing', 'models', 'outfits', 'generations', 'files'. Legacy 'file' is accepted as an alias for 'files'.
- `min_items` (integer): Minimum number of items the user must provide
- `prompt` (string, required): Instruction shown to the user, e.g. 'Select the clothing items you want to use and add them to the Shoot Board'

### `save_reference_file_from_chat_file` (~576 tokens)

Save Reference Images

Batch save reference images from chat attachments into the Files library. Keep file metadata in files[] and pass top-level image_file_1, image_file_2, etc. in the same order. No base64, no local paths. Use for mood boards, backgrounds, and other reference images that are not garments or avatars.

Input parameters:

- `file_name` (string): Single recovered display name
- `files` (array): Reference file metadata in the same order as image_file_1, image_file_2, etc. No base64.
- `image_file_1`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_file_10`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_file_2`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_file_3`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_file_4`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_file_5`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_file_6`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_file_7`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_file_8`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_file_9`: Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
- `image_url` (string): Single resolved download URL used by automatic opaque-file recovery.
- `mime_type` (string): Single recovered MIME/content type, e.g. image/png

### `propose_brief` (~563 tokens)

Create Brief for Approval

Create a Uwear BriefProposal from canonical generation commands. Every commands[].input is the exact REST GenerationIntent contract; commands and immutable plans are persisted without translation. Supply a concrete model_slug for generate, edit, upscale, and video. Use durable command.source IDs for uploaded files or generation results, and reference_attachments for additional references. For video, attach available full back or side garment assets that the camera may reveal when capacity permits; having the asset uploaded is not enough. If the response contains video_garment_view_not_attached, explain its exact assets, node, and capacity, then follow its remediation. Never mix reference_attachments with img_ref_urls or append recommendations beyond remaining capacity. Set execute_immediately=true only when the user explicitly asks to run now. Include creative_context for photoshoots and explain the art direction after proposing. For changes to a visible brief, call update_brief with the complete replacement command list.

Input parameters:

- `commands` (array, required): Canonical generation commands. Each command contains the exact REST GenerationIntent contract and a durable source reference. Write each input.prompt as a compact positive scene description (setting,…
- `creative_context` (string): Required for photoshoot proposals and brief rewrites. Summarize the shoot-level creative approach that guided garment combos, avatars, prompts, and pipeline steps. By default prefer one cohesive art…
- `execute_immediately` (boolean): Set true only when the user explicitly asks to prepare/create/generate/run the photoshoot without another review step. When true, Uwear persists the brief, confirms it, and executes it directly if cr…

### `update_brief` (~408 tokens)

Revise Brief

Replace the visible Uwear BriefProposal with a complete canonical command list. Edit commands[].input directly using the exact REST GenerationIntent fields and preserve every unchanged field and durable source. This is replacement state, not a partial diff. For video_garment_view_not_attached warnings, follow the capacity-aware remediation: never mix reference_attachments with img_ref_urls or append recommendations beyond remaining capacity. Include updated creative_context for photoshoot rewrites and explain the changed art direction.

Input parameters:

- `commands` (array, required): Canonical generation commands. Each command contains the exact REST GenerationIntent contract and a durable source reference. Write each input.prompt as a compact positive scene description (setting,…
- `creative_context` (string): Required for photoshoot proposals and brief rewrites. Summarize the shoot-level creative approach that guided garment combos, avatars, prompts, and pipeline steps. By default prefer one cohesive art…

### `confirm_brief` (~142 tokens)

Approve and Run Brief

Call this to approve and idempotently execute a visible persisted Uwear brief. In MCP, a one-word 'Confirm' or phrases like 'looks good', 'run it', 'start', or 'generate' mean execute=true unless the user explicitly says to approve without starting. Use the visible/latest BriefProposal brief_id. Repeated calls return or resume the same durable execution.

Input parameters:

- `brief_id` (integer, required): ID of the persisted brief to confirm
- `execute` (boolean): Execute the brief immediately after confirming. Defaults true because MCP 'confirm the brief' means approve and run. Set false only when the user explicitly wants to save approval without starting ge…

### `get_brief` (~146 tokens)

Reopen Saved Brief

Load an existing persisted brief unchanged by a real positive brief_id. Only use when the user supplied that brief_id or after propose_brief/update_brief returned it and the user wants to re-open the same brief. Never use brief_id=0, a placeholder, or a guessed ID. Never use this to start a new photoshoot. When the user asks to modify, rewrite, add steps to, or show an adjusted brief, call update_brief with the complete updated brief instead of looping on get_brief.

Input parameters:

- `brief_id` (integer, required): Real persisted brief ID to load unchanged. Do not use 0, guessed IDs, or this tool for editing a visible brief.

### `list_models` (~75 tokens)

List AI Models

List available AI generation models (image, video, edit, upscale engines) by type, with credit costs. These are the AI models that render photoshoots — not the human models/avatars; for those, use list_avatars.

Input parameters:

- `model_type` (string, required): Type: generation, edit, upscale, video, backdrop

### `list_art_directions` (~134 tokens)

List Art Directions

List selectable ArtDirections as compact summaries: visible system ArtDirections plus company ArtDirections. Use query to match exact names and natural-language creative requests. Use this as the catalog step before choosing an art_direction_id for a brief; if there is no clear match, fall back to the user's phrase as prompt/creative_context. Use get_art_direction for the full markdown document before reusing one in a brief.

Input parameters:

- `limit` (integer): Number of compact ArtDirection summaries per page
- `page` (integer): Page number for pagination
- `query` (string): Hybrid search across saved ArtDirection names and creative content.

### `get_art_direction` (~32 tokens)

Get Art Direction

Get a selectable ArtDirection by ID.

Input parameters:

- `art_direction_id` (integer, required): The ArtDirection ID to retrieve

### `create_art_direction` (~170 tokens)

Write Art Direction Markdown (Advanced)

Create a company ArtDirection markdown document. Use author_art_direction first when the user provides rough creative text or reference images. Use this direct writer only for already-structured markdown that follows the Variation Controls parser contract.

Input parameters:

- `content_markdown` (string, required): Complete ArtDirection markdown document. Prefer author_art_direction for rough briefs. If writing directly, every reusable alternative that should rotate across generations must live under `## Variat…
- `name` (string, required): Name for the ArtDirection
- `reference_image_attachments` (array): Authoring reference image attachments to keep with the ArtDirection. These are for iterating the markdown only, not generation-time references.

### `update_art_direction` (~169 tokens)

Update Art Direction

Update a company ArtDirection. System ArtDirections are read-only. When changing markdown directly, preserve the Variation Controls parser contract: reusable alternatives must be under `## Variation Controls`, not only in prose.

Input parameters:

- `art_direction_id` (integer, required): The ArtDirection ID to update
- `content_markdown` (string): Updated complete ArtDirection markdown. If editing directly, every reusable alternative that should rotate across generations must live under `## Variation Controls` as `###` controls with `A. Option…
- `name` (string): Updated ArtDirection name
- `reference_image_attachments` (array): Replacement authoring reference image attachments. These are for iterating the markdown only, not generation-time references.

### `duplicate_art_direction` (~49 tokens)

Duplicate Art Direction

Duplicate a system or company ArtDirection into an editable company copy.

Input parameters:

- `art_direction_id` (integer, required): The ArtDirection ID to duplicate
- `name` (string): Optional name for the copy

### `author_art_direction` (~220 tokens)

Create Art Direction

Queue the conversation for asynchronous ArtDirection authoring using Uwear's prompt system. Use save=true when the user wants to create, build, or save a reusable ArtDirection. Use save=false when the user explicitly wants an unsaved draft or brainstorming pass. This returns a job ID; call get_art_direction_authoring_job until status is done or failed.

Input parameters:

- `image_urls` (array): Draft-only reference image URLs to analyze into the ArtDirection. For saved ArtDirections, first save/select assets and pass reference_image_attachments.
- `name` (string): Optional requested ArtDirection name
- `reference_image_attachments` (array): Persistent authoring references as asset IDs. Use for save=true so the user can iterate the ArtDirection later. These are not generation-time references.
- `save` (boolean): Set true when the user wants to create, build, or save a reusable ArtDirection. Set false when the user explicitly wants an unsaved draft or brainstorming pass.
- `user_text` (string): Conversation text to compile into ArtDirection markdown

### `get_art_direction_authoring_job` (~75 tokens)

Get Art Direction Draft Status

Read an asynchronous ArtDirection authoring job. Poll the job ID returned by author_art_direction until status is done or failed. A done job includes the authored markdown and, when save=true, the saved art_direction_id.

Input parameters:

- `job_id` (integer, required): ArtDirection authoring job ID returned by author_art_direction

### `list_templates` (~147 tokens)

List Templates

List canonical company templates, optionally filtered by kind, scope, or command use case. Templates persist canonical commands but do not execute generations. System templates named `Demo — …` are worked examples of the canonical command language; read one with `get_template` before authoring a first brief or workflow.

Input parameters:

- `catalog_scope`: Filter by library or owner_only. Owner-only templates are hidden unless explicitly requested.
- `items_per_page` (integer): Number of templates per page
- `page` (integer): Page number for pagination
- `template_kind`: Filter by generation_preset or batch_workflow
- `use_case` (string): Filter by a use_case present in any stored command

### `get_template` (~62 tokens)

Get Template

Load one canonical company template by ID. Pass expected_template_kind when the caller requires a generation_preset or batch_workflow.

Input parameters:

- `expected_template_kind`: Optional expected kind. A mismatch returns both expected and actual kinds.
- `template_id` (integer, required): Template ID

### `save_template` (~239 tokens)

Save Template

Create a canonical company template, or replace one by passing template_id with expected_revision. Send typed GenerationCommand objects; updates are complete replacements. This persists the template and does not generate images. If a generation_preset create fails structurally, or legacy keys appear (camera_quantities, step2_operations, operations, fixed_context, variable_context, input_policy, cameraQuantities, step2Operations, fixedContext, variableContext, inputPolicy, or their camelCase forms), these describe a batch workflow — use `template_kind=batch_workflow`. front + back is one batch workflow: Step 1 front generation, Step 2 back camera edit.

Input parameters:

- `catalog_scope`: Template catalog scope: library or owner_only
- `description` (string): Optional sentence explaining when to use the template
- `expected_revision` (integer): Current revision when replacing an existing template; omit for create
- `name` (string, required): Template name
- `payload` (required): Versioned template payload containing canonical generation commands
- `template_id` (integer): Template ID when replacing an existing template
- `template_kind` (required): Template kind: generation_preset or batch_workflow

### `delete_template` (~36 tokens)

Delete Template

Permanently delete a library template. Owner-only templates must be deleted through their owning resource.

Input parameters:

- `template_id` (integer, required): Template ID

### `prepare_local_garment_upload` (~133 tokens)

Prepare Local Garment Upload

First step for garment images on the host's local filesystem, such as files in ~/Downloads. Use only when the host can read those local files and perform the returned direct multipart HTTP uploads, such as Codex. Include every returned form field and send the file bytes under the returned file_field. Never send a local path to Uwear. Do not use this for ChatGPT attachments or existing public URLs. After every upload succeeds, call finish_local_garment_upload with the returned upload handles.

Input parameters:

- `files` (array, required): Local image metadata in a stable order. The local paths never leave the client.

### `finish_local_garment_upload` (~85 tokens)

Finish Local Garment Upload

Second step only for local garment images already prepared with prepare_local_garment_upload and uploaded to every returned target. Classify each upload_handle as a full/detail front/back/side asset. Do not use this for ChatGPT attachments or arbitrary public URLs.

Input parameters:

- `garments` (array, required): Garments assembled from owned upload handles returned by prepare_local_garment_upload

### `mcp_get_context` (~23 tokens)

Get Shoot Board

App-only: hydrate the session-scoped Uwear Shoot Board.

### `mcp_replace_context` (~67 tokens)

Replace Shoot Board

App-only: replace the session-scoped Uwear Shoot Board items.

Input parameters:

- `context_items` (array): Shoot Board items that replace the current list when context_state is omitted
- `context_state` (object): Complete Shoot Board state to sanitize and persist; takes precedence over context_items

### `mcp_add_context` (~42 tokens)

Add to Shoot Board

App-only: append items to the session-scoped Uwear Shoot Board.

Input parameters:

- `context_items` (array, required): Shoot Board items to append to the current list

### `mcp_clear_context` (~44 tokens)

Clear Shoot Board

App-only: clear all session context items, or only one context type.

Input parameters:

- `type` (string): Context type to remove; omit to clear the entire Shoot Board

### `mcp_list_files` (~52 tokens)

List Files

App-only: list uploaded files for the Uwear MCP workspace files tab.

Input parameters:

- `limit` (integer): Maximum number of uploaded files per page
- `page` (integer): Page number for uploaded file results

### `mcp_save_retouch` (~146 tokens)

Save Retouched Image

App-only: save a user-edited image from the shared ImageDetail retouch editor as a child generation result. Hidden from host LLMs; the MCP iframe calls this after the user presses Save.

Input parameters:

- `file_name` (string|null): Optional filename for the saved retouched image
- `image_base64` (string, required): Retouched image encoded as base64 or an image data URL
- `mime_type` (string|null): Optional image MIME type; inferred from a data URL or defaults to image/png
- `operations`: Optional retouch operation metadata stored with the child result
- `parent_generation_result_id` (integer, required): Generation result ID of the original image

### `mcp_export_montage` (~132 tokens)

Export Montage Video

App-only: export the user-confirmed montage clips as a stitched video. Spends credits, so it is hidden from host LLMs; the MCP iframe calls this after the user presses Export on the MontageProposal card. Returns the generation_id to poll via get_generation_status.

Input parameters:

- `aspect_ratio` (string, required): Output video aspect ratio in W:H format
- `base_resolution` (integer, required): Output base resolution in pixels
- `clips` (array, required): Ordered generation-result clips to stitch into the montage
- `fit_mode` (string, required): How each clip fits the output frame: contain or cover

### `mcp_generate_clip` (~229 tokens)

Generate Montage Clip

App-only: queue an image-to-video generation for a montage clip. Spends credits, so it is hidden from host LLMs; the montage editor calls this when the user presses Generate on a draft clip. Returns the generation_id to poll via get_generation_status.

Input parameters:

- `duration` (integer|null): Video duration in seconds; defaults to 5
- `generate_audio` (boolean|null): Whether to generate audio with the video
- `generation_result_id` (integer|null): Existing generation result ID to use as the source image; provide exactly one source
- `image_url` (string|null): HTTPS source image URL; provide exactly one source
- `last_frame_url` (string|null): Optional final-frame image URL for supported video models
- `model` (string, required): Video model slug or supported model name
- `prompt` (string|null): Optional motion prompt for the video clip
- `resolution` (string|null): Optional output resolution; defaults to 480p
- `uploaded_file_id` (integer|null): Uploaded file ID to use as the source image; provide exactly one source

### `create_credit_checkout_session` (~158 tokens)

Buy Credits

Create a hosted Stripe Checkout URL for buying Uwear generation credits. Use only when the user explicitly asks to buy, add, top up, or purchase credits, or when they ask how to continue after insufficient credits. Do not call during photoshoot planning unless the user requested checkout. The tool only creates a payment link; the user must open and complete payment in Stripe.

Input parameters:

- `credits` (integer): Number of Uwear credits to purchase
- `return_cancel_url` (string|null): Optional checkout cancellation URL; defaults to the Uwear credits page
- `return_success_url` (string|null): Optional checkout completion URL; defaults to the Uwear frontend
- `user_agent` (string|null): Optional client user-agent recorded with checkout metadata

### `mcp_create_credit_checkout_session` (~130 tokens)

Buy Credits (Workspace)

App-only: create a hosted Stripe Checkout URL for buying Uwear credits from the MCP workspace credit control. Hidden from the host LLM so photoshoot planning does not drift into billing unless the user presses the plus button.

Input parameters:

- `credits` (integer): Number of Uwear credits to purchase
- `return_cancel_url` (string|null): Optional checkout cancellation URL; defaults to the Uwear credits page
- `return_success_url` (string|null): Optional checkout completion URL; defaults to the Uwear frontend
- `user_agent` (string|null): Optional client user-agent recorded with checkout metadata

### `create_production_workflow` (~55 tokens)

Create Production Workflow

Create a workflow. It has no graph until a version is created, and it runs nothing until a version is published.

Input parameters:

- `workflow` (required): Workflow name and initial state; enabled must be false until a version is published

Output parameters:

- `archived` (boolean)
- `company_id` (integer)
- `created_at` (string)
- `created_by_profile_id` (integer)
- `enabled` (boolean)
- `enabled_version_id`
- `id` (string)
- `name` (string)
- `run_time_slot_kinds` (array)
- `updated_at`
- `updated_by_profile_id` (integer)

### `list_production_workflows` (~57 tokens)

List Production Workflows

List this company's workflows.

Input parameters:

- `include_archived` (boolean): Include archived workflows in the results
- `items_per_page` (integer): Number of workflows per page
- `page` (integer): Page number for workflow results

Output parameters:

- `data` (array)
- `total_count` (integer)

### `get_production_workflow` (~67 tokens)

Get Production Workflow

Read one workflow with its version summaries and which version is live.

Input parameters:

- `versions_items_per_page` (integer): Number of embedded workflow versions per page
- `versions_page` (integer): Page number for the embedded workflow version list
- `workflow_id` (string, required): Workflow ID

Output parameters:

- `archived` (boolean)
- `company_id` (integer)
- `created_at` (string)
- `created_by_profile_id` (integer)
- `enabled` (boolean)
- `enabled_version_id`
- `id` (string)
- `name` (string)
- `run_time_slot_kinds` (array)
- `updated_at`
- `updated_by_profile_id` (integer)
- `versions` (array)
- `versions_items_per_page` (integer)
- `versions_page` (integer)
- `versions_total_count` (integer)

### `update_production_workflow` (~62 tokens)

Rename or Disable Workflow

Rename a workflow, or enable/disable it. Disabling stops new runs from being admitted; runs already in flight finish.

Input parameters:

- `update` (required): Workflow fields to update: name, enabled, or archived
- `workflow_id` (string, required): Workflow ID

Output parameters:

- `archived` (boolean)
- `company_id` (integer)
- `created_at` (string)
- `created_by_profile_id` (integer)
- `enabled` (boolean)
- `enabled_version_id`
- `id` (string)
- `name` (string)
- `run_time_slot_kinds` (array)
- `updated_at`
- `updated_by_profile_id` (integer)

### `archive_production_workflow` (~37 tokens)

Archive Workflow

Archive a workflow and disable it. Reversible with update_production_workflow.

Input parameters:

- `workflow_id` (string, required): Workflow ID

Output parameters:

- `archived` (boolean)
- `company_id` (integer)
- `created_at` (string)
- `created_by_profile_id` (integer)
- `enabled` (boolean)
- `enabled_version_id`
- `id` (string)
- `name` (string)
- `run_time_slot_kinds` (array)
- `updated_at`
- `updated_by_profile_id` (integer)

### `create_production_workflow_version` (~78 tokens)

Create Draft Version

Open a new draft version holding the graph. Drafts are editable and never execute. See uwear://contracts/production-workflow for typed node configs and worked examples.

Input parameters:

- `definition` (object, required): Draft workflow graph, contract version, failure policy, and optional published base version
- `workflow_id` (string, required): Workflow ID

### `list_production_workflow_versions` (~59 tokens)

List Workflow Versions

List a workflow's versions and their state.

Input parameters:

- `items_per_page` (integer): Number of workflow versions per page
- `page` (integer): Page number for workflow version results
- `workflow_id` (string, required): Workflow ID

Output parameters:

- `data` (array)
- `items_per_page` (integer)
- `page` (integer)
- `total_count` (integer)

### `get_production_workflow_version` (~57 tokens)

Get Workflow Version

Read one version's full graph. See uwear://contracts/production-workflow for typed node configs and worked examples.

Input parameters:

- `version_id` (string, required): Workflow version ID
- `workflow_id` (string, required): Workflow ID

Output parameters:

- `contract_version` (string)
- `edges` (array)
- `estimated_credit_units` (integer)
- `failure_policy`
- `nodes` (array)
- `resource_type` (string)
- `result_projection` (array)
- `version`
- `workflow`

### `update_production_workflow_version` (~87 tokens)

Update Draft Version

Replace a draft's graph. Published versions are immutable — branch a new draft instead. See uwear://contracts/production-workflow for typed node configs and worked examples.

Input parameters:

- `update` (object, required): Draft version fields to update: failure policy, nodes, or edges
- `version_id` (string, required): Workflow version ID
- `workflow_id` (string, required): Workflow ID

### `publish_production_workflow_version` (~75 tokens)

Publish Version

Validate a draft, freeze it, and make it the version triggers execute. Rejects an invalid graph and returns the reason. See uwear://contracts/production-workflow for typed node configs and worked examples.

Input parameters:

- `version_id` (string, required): Workflow version ID
- `workflow_id` (string, required): Workflow ID

Output parameters:

- `contract_version` (string)
- `edges` (array)
- `estimated_credit_units` (integer)
- `failure_policy`
- `nodes` (array)
- `resource_type` (string)
- `result_projection` (array)
- `version`
- `workflow`

### `start_production_workflow_run` (~87 tokens)

Start Workflow Run

Start one run of a workflow's published version. Requires an idempotency_key: the same key never starts a second run.

Input parameters:

- `idempotency_key` (string, required): Unique key that makes retries return the same workflow run
- `run`: Run request with an optional test version, trigger object identity, and payload
- `workflow_id` (string, required): Workflow ID

Output parameters:

- `contract_version` (string)
- `created_at` (string)
- `debited_credit_units` (integer)
- `definition_hash` (string)
- `estimated_credit_units` (integer)
- `finished_at`
- `id` (string)
- `is_test` (boolean)
- `net_credit_units` (integer)
- `refunded_credit_units` (integer)
- `replayed` (boolean)
- `resource_type` (string)
- `started_at`
- `status`
- `trigger_event_id` (string)
- `workflow_id` (string)
- `workflow_version_id` (string)

### `start_production_workflow_run_batch` (~104 tokens)

Start Workflow Runs (Batch)

Start one run per selected object (multi-select / catalog backfill). Each object is admitted independently; failures do not sink the rest.

Input parameters:

- `batch` (required): Batch request: one run per object_id, sharing object_type, payload and call-sheet slot_bindings
- `idempotency_key` (string, required): Base key for the batch; each run derives key:object_id so retries return the same runs
- `workflow_id` (string, required): Workflow ID

Output parameters:

- `failures` (array)
- `resource_type` (string)
- `runs` (array)

### `list_production_workflow_runs` (~77 tokens)

List Workflow Runs

List run history, newest first, filterable by workflow and status.

Input parameters:

- `items_per_page` (integer): Number of workflow runs per page
- `page` (integer): Page number for workflow run results
- `status`: Filter to a workflow run status
- `workflow_id`: Filter to a specific workflow ID

Output parameters:

- `data` (array)
- `items_per_page` (integer)
- `page` (integer)
- `total_count` (integer)

### `get_production_workflow_run` (~50 tokens)

Get Workflow Run

Read one run in full: stable accepted results, per-node status, media, errors, retries, and the credits it moved.

Input parameters:

- `workflow_run_id` (string, required): Workflow run ID

Output parameters:

- `billing`
- `contract_version` (string)
- `created_at` (string)
- `definition_hash` (string)
- `finished_at`
- `id` (string)
- `is_test` (boolean)
- `node_runs` (array)
- `resource_type` (string)
- `results` (array)
- `started_at`
- `status`
- `trigger_event`
- `workflow_id` (string)
- `workflow_version_id` (string)

### `get_production_workflow_control` (~26 tokens)

Get Automation Kill Switch

Read the company kill switch — whether automation is stopped, and why.

Output parameters:

- `changed_at` (string)
- `changed_by_profile_id` (integer)
- `company_id` (integer)
- `contract_version` (string)
- `reason`
- `resource_type` (string)
- `stopped` (boolean)

### `update_production_workflow_control` (~47 tokens)

Stop or Resume All Automation

Stop or resume ALL production automation for the company. Stopping requires a reason and is audited.

Input parameters:

- `control` (required): Company-wide workflow execution stop or resume setting and optional reason

Output parameters:

- `changed_at` (string)
- `changed_by_profile_id` (integer)
- `company_id` (integer)
- `contract_version` (string)
- `reason`
- `resource_type` (string)
- `stopped` (boolean)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/ai-uwear-uwear/api#diagnostics

## Score history

- 2026-08-03: 73
- 2026-08-02: 73
- 2026-08-01: 72

## Links

- Remote endpoint: https://api.uwear.ai/mcp
- Website: https://uwear.ai/mcp
- Changelog RSS feed: https://verifymcp.io/servers/ai-uwear-uwear/api/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/ai-uwear-uwear/api/changelog.json
- HTML version of this page: https://verifymcp.io/servers/ai-uwear-uwear/api
