Skip to main content
Glama

Server Details

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

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 47 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.6/5.0

Scored across 66 tools

Disambiguation4/5

Most tools are clearly distinct due to very detailed descriptions that explicitly separate avatar creation paths (generate_avatar vs create_avatar_from_references vs upload_avatar_from_chat_file) and lifecycle stages (propose_brief/update_brief/confirm_brief). Some overlap exists between search_uwear_library and the list_* tools, and among the mcp_* app-only helpers, but the descriptions mitigate ambiguity.

Naming Consistency4/5

The naming is predominantly snake_case verb_noun (list_garments, create_art_direction, upload_garment_from_public_url), which is predictable. Minor deviations like author_art_direction, build_avatar_prompt, and apply_backdrop break the pattern slightly, but the mcp_* prefix is consistently applied to app-only tools, keeping the overall convention readable.

Tool Count1/5

With 66 tools, this falls into the extreme mismatch category. The sheer number overwhelms the set's coherence, even though each tool appears scoped to a specific function, and it far exceeds the typical well-scoped server size.

Completeness4/5

The surface is impressively comprehensive, covering garments, avatars, outfits, locations, art directions, briefs, generation, QA, templates, montage, and preferences. Notable gaps include missing delete operations for most entity types (only delete_template exists) and no update for outfits or avatars, but these are minor given the breadth of workflows supported.

Available Tools

66 tools
add_avatar_referenceAdd Avatar ReferenceA
Destructive
Inspect

Fill or replace one reference slot on an existing owned avatar/model from an owned workspace file, an owned generation result, or a public image URL. Creator-linked slots keep their source guard.

ParametersJSON Schema
NameRequiredDescriptionDefault
slotYesReference slot to fill or replace.
avatar_idYesOwned avatar to update.
image_urlNoPublic HTTP(S) image URL. Use exactly one source field.
uploaded_file_idNoOwned workspace file ID. Use exactly one source field.
generation_result_idNoOwned image result ID. Use exactly one source field.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=false), the description reveals that filling can also replace an existing slot and that creator-linked slots retain a source guard. This is useful behavioral information not discoverable from annotations or the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences deliver the action, target, allowed sources, exclusivity constraint, and the creator-linked guard. There is no boilerplate, repetition, or wasted wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description plus a fully covered schema and explicit ownership constraints give an agent enough to select and call the tool correctly. It lacks any return-value guidance, and since there is no output schema, a small note on expected result would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and each parameter already has a meaningful description, including the 'Use exactly one source field' constraint and the oneOf mutual-exclusion structure. The description reinforces source ownership and public URL but does not add material parameter-level meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a precise verb phrase, 'Fill or replace one reference slot', names the exact resource (an existing owned avatar/model), and enumerates the three allowed source kinds (workspace file, generation result, public image URL). This makes it immediately distinguishable from sibling tools like create_avatar_from_references or upload_avatar_from_chat_file.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly scopes when the tool applies: modifying an existing owned avatar/model, filling or replacing one slot, with exactly one of three owned/public sources. It does not explicitly name sibling alternatives or state when not to use it, so it misses the top bar but provides clear usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

apply_backdropApply BackdropAInspect

Remove or replace an image background through Uwear's canonical free backdrop generation path. Provide exactly one foreground source: generation_result_id, clothing_item_asset_id, or a public HTTPS image_url. Use backdrop_mode transparent, solid with color_hex, or image with background_image_url. Returns generation_id; poll get_generation_status, then fetch get_generation_results.

ParametersJSON Schema
NameRequiredDescriptionDefault
color_hexNoRequired for solid mode, for example #FFFFFF.
image_urlNoPublic HTTPS foreground image URL; provide exactly one source.
backdrop_modeYestransparent removes the background, solid uses color_hex, and image uses background_image_url.
background_image_urlNoRequired for image mode; public HTTPS replacement background.
generation_result_idNoExisting generation result foreground; provide exactly one source.
clothing_item_asset_idNoExact owned garment asset foreground; provide exactly one source. Find asset IDs with get_garment or list_garments.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate not read-only and not destructive. The description adds the async generation behavior (returns generation_id and requires polling) and notes that the path is free. This is useful context beyond the annotations, though it does not cover rate limits or error cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The first sentence states purpose and the primary constraint; the second covers modes and the async follow-up. All information is front-loaded and each sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's asynchronous nature and high schema coverage, the description provides everything needed: input constraints, mode handling, return value, and next steps. There is no output schema, so the description's mention of the returned generation_id and polling instructions is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes each parameter (100% coverage), but the description adds the exclusivity constraint (exactly one foreground source) and the mode-specific parameter mapping (solid→color_hex, image→background_image_url). These relationships are not explicitly stated in the schema's property list, so the description adds meaningful value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly names the operation (remove or replace an image background), the resource (Uwear's canonical free backdrop generation path), and the three modes. This is specific enough to distinguish it from all siblings, which do not cover backdrop generation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly requires exactly one foreground source and lists the valid options. It maps each backdrop_mode to its required parameter and provides the full post-call workflow (poll get_generation_status, fetch get_generation_results), so the agent knows exactly when and how to invoke it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

author_art_directionCreate Art DirectionAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional requested ArtDirection name
saveNoSet 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.
sourcesNoSupported authoring sources such as text, public URLs, image URLs, uploaded files, or durable reference image attachments
user_textNoConversation text to compile into ArtDirection markdown
image_urlsNoDraft-only reference image URLs to analyze into the ArtDirection. For saved ArtDirections, first save/select assets and pass reference_image_attachments.
reference_image_attachmentsNoPersistent authoring references as asset IDs. Use for save=true so the user can iterate the ArtDirection later. These are not generation-time references.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false (so it's a mutation) but say nothing about async behavior. The description fills that gap by stating the operation is asynchronous, returns a job ID, and requires polling. It also clarifies the draft vs saved outcome. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences that front-load the core purpose, then give the save guidance, and finish with the follow-up polling instruction. Every sentence earns its place with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is complete for an agent to invoke the tool correctly: it explains the async queue, the save flag semantics, and the required next step (polling). The schema covers parameter details, and the lack of an output schema is compensated by the explicit job ID mention. Minor omission: no mention of prerequisites or error handling, but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already documented. The description adds value by explaining the practical usage of the save parameter ('Use save=true when...') and by hinting at the sources and user_text as inputs to the prompt system. This goes beyond the schema's description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Queue') and resource ('conversation for asynchronous ArtDirection authoring'), and clearly distinguishes this from a synchronous creation by mentioning the job ID and polling. It differentiates from siblings like create_art_direction by emphasizing the async nature and the save/draft distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs when to set save=true vs save=false, and directs the agent to poll get_art_direction_authoring_job until done. While it doesn't name sibling alternatives like create_art_direction, it provides actionable context for the tool's primary decision (save flag) and follow-up procedure.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

build_avatar_promptBuild Avatar PromptA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cameraNoOptional camera key for context, e.g. midshot
user_textNoUser's rough description of the person/model. Leave empty when the user wants the backend to invent a unique avatar prompt.
model_slugNoOptional image model slug for context
aspect_ratioNoOptional aspect ratio for context, e.g. 9:16
camera_labelNoOptional human-readable camera label

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, establishing this as a safe, read-only, idempotent operation. The description adds the context that it should be skipped when the input prompt is already specific, which is useful but not a major behavioral disclosure. Since annotations cover the safety profile, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is exactly two sentences, front-loaded with the purpose and followed by usage guidance. No redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, side-effect-free tool with no required parameters and full schema coverage, the description covers the core purpose and the key decision of when to skip it. It doesn't explicitly state the return format, but the tool name and description imply a prompt string, and annotations cover safety. Complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 5 parameters are fully described in the schema (100% coverage), so the description doesn't need to repeat them. The description's mention of 'user's rough description' aligns with the user_text parameter, but the schema already documents each parameter thoroughly. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: building a highly detailed prompt for avatar/model generation. It distinguishes itself from the sibling generate_avatar by explicitly saying that if the user's prompt is already intentional, the system can skip this and pass wording directly to generate_avatar, making sibling differentiation clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit conditions for when to use this tool ('when the user wants help describing a person before image generation') and when to skip it in favor of an alternative ('if the user's prompt is already intentional and specific... pass directly to generate_avatar'). This directly addresses usage vs alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

confirm_briefApprove and Run BriefA
DestructiveIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
executeNoExecute 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 generation.
brief_idYesID of the persisted brief to confirm

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, openWorldHint=true, idempotentHint=true, and destructiveHint=true, and the description aligns with and reinforces these. The description adds meaningful context beyond annotations: it explains idempotency behavior in detail ('Repeated calls return or resume the same durable execution') and the execute=true default nuance. Not a 5 because it doesn't detail what destructive side effects occur or any specific auth/precondition requirements, but with the annotation set present, this is solid coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense paragraph of four sentences, each adding value: purpose, MCP semantics, brief_id scoping, and idempotency. It's front-loaded with the core purpose. Slightly less than a 5 because the MCP-phrase guidance is embedded in the middle rather than separated, and could be tightened, but there's no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param tool with 100% schema coverage and no output schema (so no need to describe return values), the description covers purpose, idempotency, parameter semantics, and usage context. The only minor gap is not explaining what 'execute' actually does post-confirmation (what gets generated/started) or any rate-limits/duplication risks. Given the tool's simplicity, this is well-complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds some context for the 'execute' parameter by explaining the MCP-default behavior, and clarifies the brief_id type (visible persisted brief). However, it doesn't add much beyond what the schema's own parameter descriptions already state; the schema description of 'execute' is quite thorough already. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states what the tool does: 'approve and idempotently execute a visible persisted Uwear brief.' It uses a specific verb+resource combination and distinguishes itself from siblings like propose_brief and update_brief by focusing on the confirm+execute action. The brief_id scoping ('visible/latest BriefProposal') further disambiguates it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on MCP phrasing that should map to execute=true ('Confirm', 'looks good', 'run it', 'start', 'generate') versus when to set execute=false ('only when the user explicitly wants to save approval without starting generation'). It also references the related brief_id source (visible/latest BriefProposal), guiding which ID to use. This is explicit, actionable guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

copy_template_to_generate_node_configCopy Template to Generate NodeA
Read-onlyIdempotent
Inspect

Copy one generation-preset Template into a contract-typed, detached Production Workflow Generate-node config. The result does not update a Workflow and carries no live Template dependency; insert it through the canonical workflow version authoring tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
template_idYesGeneration Template ID
contract_versionNoWorkflow contract to target; omit to use the current authoring contract

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, lowering the burden. The description adds valuable behavioral context beyond annotations: the result carries no live Template dependency, does not update a Workflow, and is meant for insertion through other authoring tools. This clarifies the 'read-only' nature as non-mutating to existing workflow resources.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense sentence that front-loads the core operation and immediately states the most important constraints: detached, no workflow update, no live dependency, and insertion via canonical authoring tools. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with two well-documented parameters and safety-focused annotations, the description covers the essential context: what the output is, what it is not, and how it should be used downstream. It does not describe the exact return shape, but no output schema exists and the copy/config semantics make that less critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameter meaning is fully carried by the schema. The description does not add new parameter-level details beyond the schema, but it does reinforce the conceptual role of contract_version through 'contract-typed' phrasing. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: copies a generation-preset Template into a contract-typed, detached Production Workflow Generate-node config. It clearly differentiates from sibling tools like save_template, get_template, and delete_template by emphasizing detachment and the absence of a live Template dependency.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: the tool produces a detached config that should be inserted through the canonical workflow version authoring tools. It explicitly says it does not update a Workflow, which sets expectations, though it does not name specific alternative tools for when a live workflow update is desired.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_art_directionWrite Art Direction Markdown (Advanced)AInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the ArtDirection
content_markdownYesComplete ArtDirection markdown document. Prefer author_art_direction for rough briefs. If writing directly, every reusable alternative that should rotate across generations must live under `## Variation Controls` as `###` controls with `A. Option` lines; do not leave selectable worlds, pose families, or shot-role plans only in prose.
reference_image_attachmentsNoAuthoring reference image attachments to keep with the ArtDirection. These are for iterating the markdown only, not generation-time references.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are all false, so no protective or destructive hints are present. The description adds the key nuance that this is a direct writer for already-structured markdown, but it does not disclose other behaviors such as validation, overwrite semantics, or return values. The parser contract is also repeated in the schema, so the marginal description value is moderate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first states the purpose and the second gives usage guidance. It is front-loaded, scannable, and contains no filler, making it an exemplar of concise yet informative writing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with no output schema and moderate complexity, the description covers the essential decision of when to use it and what input it expects. It could mention the result of the creation (e.g., saved entity) or any side effects, but the sibling tools and schema fill most gaps. A score of 4 reflects solid but not exhaustive completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with detailed explanations for all three parameters. The description does not add extra parameter semantics beyond referencing the parser contract in content_markdown, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with 'Create a company ArtDirection markdown document,' using a specific verb and resource. It immediately distinguishes the tool from its sibling author_art_direction by noting when to prefer that alternative. This makes the purpose clear and uniquely positioned among the tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states to use author_art_direction first for rough creative text or reference images, and to use this direct writer only for already-structured markdown that follows the Variation Controls parser contract. This provides clear when-to-use guidance and names the alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_avatar_from_referencesCreate Avatar from ReferencesAInspect

Create one reusable avatar/model from an ordered set of generated avatar views, owned workspace files, and public image URLs. Each reference fills one durable slot. Traits are optional user-provided facts and are never inferred.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
buildNoOptional concrete physical build. Never inferred.
age_rangeNoOptional concrete age or age range. Never inferred.
height_cmNoOptional height in centimeters. Never inferred.
referencesYesOrdered reference sources for the new avatar.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate a mutating, non-idempotent, open-world operation, and the description adds valuable behavioral notes: traits are never inferred (explicitly stated) and each reference fills a durable slot. This goes beyond what annotations convey, though it does not mention side effects like overwriting or return values.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the core purpose and followed by a key behavioral constraint. Every word adds value; no filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has a nested reference structure and an output that is not documented (no output schema). While the schema covers the input details, the description omits any mention of return values or error behavior, which could leave an agent uncertain about the result. However, given the complexity and the richness of the schema, the description is largely adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 80% and already describes most parameters, including the 'Never inferred' note on traits. The description adds a little context (durable slots) but largely relies on the schema. Since coverage is high, the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a reusable avatar from an ordered set of references (generated views, workspace files, or URLs). It distinguishes itself from related siblings like save_generated_avatar or upload_avatar_from_chat_file by emphasizing the multi-source reference input.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used when you have multiple reference sources to combine into one avatar, but it does not explicitly name alternatives or conditions for when not to use it. It gives some context but lacks explicit routing guidance compared to siblings like save_generated_avatar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_locationCreate LocationAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the reusable location/scene reference
tag_idsNoOptional tag IDs to assign after creating the location
image_urlYesURL of the location/reference image
descriptionNoOptional location description. If omitted, the system analyzes the image.
thumbnail_urlNoOptional thumbnail URL
source_metadataNoOptional provenance metadata for the source image

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a write operation (readOnlyHint=false) and not destructive. The description adds valuable context: the backend automatically analyzes the image if no description is supplied, and the tool returns a location_id for later use. This goes beyond the annotations by disclosing the auto-analysis behavior and the reusable nature of the created reference.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. It front-loads the core action, then adds the conditional behavior, then a usage hint. Every sentence earns its place, and the structure is clean and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 6 parameters, 2 required, and nested objects, the description covers the key behavioral aspects: what it creates, the auto-analysis fallback, and the returned ID. It does not explain error handling or permissions, but the schema and annotations already cover the parameter details and safety profile. For a create tool, this is reasonably complete for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter is documented in the schema. The description adds minimal extra parameter-specific meaning: it clarifies the behavior of the 'description' parameter (if omitted, backend analyzes the image). This is a useful nuance but does not substantially compensate for the schema already covering all parameters. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Create'), a clear resource ('reusable location/scene reference'), and the source ('from an image URL'). It clearly distinguishes from sibling tools like create_tag or create_art_direction by focusing on location references. The downstream usage hint ('Use the returned location_id in propose_brief/update_brief') further clarifies its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (to create a location reference for briefs) and gives a downstream usage hint. However, it does not explicitly state when not to use it or name alternatives like update_brief or get_location. Still, the purpose is clear enough that an agent can infer appropriate usage without explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_outfit_from_garment_idsCreate OutfitAInspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional human-readable outfit name
is_activeNoWhether the outfit should be immediately active
clothing_item_idsYesIDs of clothing items to combine into an outfit

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already communicate that the tool is mutating (readOnlyHint=false) and non-destructive (destructiveHint=false). The description adds minimal context by clarifying that it pairs existing garments without uploading new images, but it does not disclose additional side effects, permissions, or return behavior beyond what is implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise sentences, with the primary purpose front-loaded and no redundant or extraneous information. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple create operation with full schema coverage and clear annotations, the description adequately explains the tool's functionality. The lack of an output schema is not a major gap given the straightforward nature of the operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for all three parameters, so the description does not need to add parameter-level details. The description implicitly references the purpose of clothing_item_ids but adds no new semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (create), the resource (outfit), and the source (existing garment IDs). It also distinguishes from upload-related tools by noting that no new images are uploaded, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when garment IDs already exist and an outfit needs to be composed, but it does not explicitly state when not to use the tool or mention alternatives like propose_outfits or upload_garment_from_chat_file. No exclusions are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_tagCreate TagAInspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTag name (unique within the company)
colorNoOptional hex color, e.g. '#22C55E'

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=false and destructiveHint=false. The description adds the workspace requirement but doesn't disclose uniqueness enforcement or idempotency-related behavior (e.g., what happens if a duplicate name is submitted). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence that communicates the core functionality. The asset type list is slightly detailed but remains compact and useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple create tool with full schema coverage and no output schema, the description and schema together provide sufficient guidance. It could mention return values or duplicate-name behavior, but these are not critical for tool selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters fully described (name with uniqueness and maxLength; color with format example). The description adds no parameter-specific meaning beyond listing asset types, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Create a new tag'), the resource ('for organizing assets'), and enumerates the asset types. This distinguishes it from sibling tools like list_tags and get_items_by_tag, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear precondition ('Requires an active company workspace') and indicates a broad use case (organizing assets). It doesn't explicitly name alternatives or when-not-to-use scenarios, but the context is sufficient for a simple create tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_templateDelete TemplateA
Destructive
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
template_idYesTemplate ID

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds the behavioral trait of permanence ("Permanently delete") and an ownership constraint, which are not explicitly stated in annotations. This goes beyond the minimal annotation information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, clearly front-loaded with the action and resource. No redundant phrasing or filler. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple delete tool with one parameter and no output schema, the description covers the essential context: permanent deletion and a key caveat about owner-only templates. It could mention error conditions or permissions, but given the tool's simplicity, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameters with a single template_id and its description. The tool description does not add significant semantic detail beyond the schema, and the schema already describes the template as a 'company template.' The parameter is straightforward, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: "Permanently delete a library template." This uses a specific verb (delete) and resource (library template), which directly distinguishes it from sibling tools like get_template, save_template, and list_templates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes an important usage exclusion: "Owner-only templates must be deleted through their owning resource." This provides guidance on when NOT to use this tool, implying an alternative exists. It could be improved by explicitly stating the general use case (delete any library template) but the purpose makes it evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

duplicate_art_directionDuplicate Art DirectionAInspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional name for the copy
art_direction_idYesThe ArtDirection ID to duplicate

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate a non-read-only, non-destructive mutation (readOnlyHint=false, destructiveHint=false). The description adds context that the copy is 'editable' and that the source can be system or company, but it does not disclose details like whether the original remains unchanged, permissions required, or potential side effects. With annotations providing baseline safety info, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that is direct and complete. It conveys the core purpose without extraneous detail, making it easy to parse and understand.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description should at least hint at the return value, but it only says the result is an 'editable company copy' without specifying what is returned (e.g., the new copy's ID). It also omits whether the original is preserved, though that is implied by 'duplicate.' For a simple tool, this is minimally sufficient but leaves some gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers both parameters (art_direction_id and name) with descriptions, achieving 100% coverage. The description does not add any additional meaning about parameter usage beyond what the schema already provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (duplicate), the resource (system or company ArtDirection), and the outcome (an editable company copy). This distinguishes it from sibling tools like create_art_direction or update_art_direction by focusing on the duplication aspect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool (when you want an editable company copy of an existing ArtDirection) but does not explicitly mention alternatives or exclude other tools. It lacks direct guidance such as 'use instead of create_art_direction when you want a copy based on an existing system or company ArtDirection.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimate_costEstimate Credit CostB
Read-onlyIdempotent
Inspect

Estimate credit cost for an operation.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoSpecific model to use
durationNoVideo duration in seconds (video only, e.g. 4, 5, 6, 8, 10)
num_itemsNoNumber of items/images
operationYesOperation: generate, edit, upscale, video
resolutionNoOutput resolution when supported by the selected image or video model
generate_audioNoWhether to generate audio (video only, doubles cost for most models)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as read-only, idempotent, and non-destructive, so the agent knows it is a safe calculation. The description adds no behavioral context beyond the name, such as whether the estimate is approximate or depends on current pricing. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no extraneous words. It is front-loaded with the verb and object. While it is brief, this is not a flaw; it earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having six parameters and no output schema, the description does not clarify what the tool returns (e.g., a numeric credit amount, a breakdown) or how the estimate is computed. The annotations cover safety but not functional expectations. This leaves the agent guessing about the tool's output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage of all six parameters with descriptive details (e.g., operation enum values, duration constraints, generate_audio doubling cost). The description adds no additional parameter semantics, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: estimating credit cost for an operation, using the specific verb 'estimate' and resource 'credit cost'. It is distinct from sibling tools like get_user_credits and create_credit_checkout_session, which deal with balance and purchase rather than cost estimation. However, it lacks detail on the range of operation types covered.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, such as having an operation in mind, or exclusions like needing to check actual credit balance. Sibling tools are not referenced.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

finish_local_garment_uploadFinish Local Garment UploadAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
garmentsYesGarments assembled from owned upload handles returned by prepare_local_garment_upload

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are all false (readOnlyHint: false, destructiveHint: false), so the description carries the disclosure burden. It explains the prerequisite and classification action but does not reveal side effects like whether it finalizes the garment, consumes handles, or is idempotent. Some scope constraints are added, but deeper behavior remains opaque.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the prerequisite ('Second step only'), and every sentence adds value: prerequisite, action, and exclusion. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description doesn't need to explain return values. It covers the two-step flow, the requirement for prepared/uploaded handles, the classification scope, and explicit non-uses. It could mention that it ultimately creates/updates garment records, but the schema's garments array implies this. Fairly complete for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with detailed field explanations (e.g., upload_handle description, asset_kind enum, processing_mode). The description only restates the classification concept (full/detail front/back/side) without adding new parameter-level semantics beyond what the schema already provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Second step only for local garment images already prepared with prepare_local_garment_upload' and 'Classify each upload_handle as a full/detail front/back/side asset.' It explicitly distinguishes itself from tools for ChatGPT attachments or public URLs, making it highly specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage conditions: 'Second step only' and 'uploaded to every returned target.' It also includes a clear exclusion: 'Do not use this for ChatGPT attachments or arbitrary public URLs.' This effectively tells the agent when to use it versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_avatarGenerate Avatar ReferenceA
Destructive
Inspect

Generate reusable avatar/model references through the same creator path as the Uwear app. The default view is upper_body_front, a clean bust identity anchor. For a draft multi-view avatar, generate the bust first, pass its result URL in identity_reference_urls when generating each slot view, then save the chosen results together with save_generated_avatar. Traits are optional user-given facts and are never guessed. If the user wants help writing the person description, call build_avatar_prompt first only for that purpose; if the user's wording is already intentional, pass it directly here.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional name to carry with the avatar generation
viewNoReference view to generate. Defaults to the upper-body identity anchor.upper_body_front
buildNoOptional concrete physical build. Never inferred.
modelNoOptional image model slug or display name. Defaults to the cheapest active image generation model available to the account.
promptYesDescription of the person to render as a reusable avatar reference
age_rangeNoOptional concrete age or age range. Never inferred.
avatar_idNoOptional existing avatar whose anchor fixes identity for a slot view. Not required when identity_reference_urls are supplied.
height_cmNoOptional height in centimeters. Never inferred.
expressionNoExact expression instruction for a supported reference view. Replaces the configured neutral expression default.
num_imagesNoNumber of avatar candidate images to generate
identity_reference_urlsNoPerson-image URLs that fix identity for a slot view. In a draft flow, pass the generated bust URL here before the avatar has been saved.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations include destructiveHint=true and readOnlyHint=false, which the description does not contradict. The description adds behavioral context beyond annotations: traits are never guessed, and the multi-view generation workflow is explained. It doesn't discuss side effects or non-idempotency, but annotations cover that partially. Overall it adds useful context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with the core purpose front-loaded, followed by workflow and guidance. It is slightly long but every sentence serves a purpose, and it avoids redundancy with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 11 parameters and many sibling tools, the description covers the essential workflow, the default view, and when to route to other tools. It doesn't explain output format (no output schema) or some self-explanatory params, but given the complexity, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaning to identity_reference_urls by explaining the draft flow and how to use the bust URL. It also clarifies that build, age_range, and height_cm are user-given and never inferred. This enriches the schema definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool generates reusable avatar/model references and distinguishes it from siblings like build_avatar_prompt (for description writing) and save_generated_avatar (for saving). It specifies the default view and the intended use case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit workflow guidance: generate the bust first, pass its URL as identity_reference_urls for slot views, then save with save_generated_avatar. It also names when to use build_avatar_prompt instead and when to pass the prompt directly. This is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_art_directionGet Art DirectionB
Read-onlyIdempotent
Inspect

Get a selectable ArtDirection by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
art_direction_idYesThe ArtDirection ID to retrieve

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds the term 'selectable,' which suggests a filtering or state-related behavior not present in annotations, but it is vague. No additional details about not-found behavior or response format are provided.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence (7 words) that is immediately understandable. There is no fluff or redundant information, and the key information (get by ID) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-ID tool with one parameter and strong annotations, the description is largely sufficient. However, the term 'selectable' introduces ambiguity about whether non-selectable ArtDirections are excluded, and without an output schema, the description does not clarify the return structure beyond implying the ArtDirection object. This leaves some context missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes the single parameter (art_direction_id with type and description). The description's 'by ID' reinforces the parameter's purpose but adds no new semantic detail. Baseline of 3 applies due to 100% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Get) and the resource (ArtDirection) with a specific scope (by ID). It distinguishes from list_art_directions by implying single retrieval, though it doesn't explicitly differentiate from other get_* tools. The word 'selectable' adds a minor qualifier but the core purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives like list_art_directions or get_art_direction_authoring_job. The description only states what it does, not the context or exclusions. There is no mention of prerequisites or when to prefer this over other retrieval methods.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_art_direction_authoring_jobGet Art Direction Draft StatusA
Read-onlyIdempotent
Inspect

Read an asynchronous ArtDirection authoring job. Poll the job ID returned by author_art_direction or iterate_art_direction until status is done or failed. A done job includes the authored markdown and, when save=true, the saved art_direction_id. Iteration jobs also expose their source ID, expected revision, and apply outcome. A failed job includes per-source status and safe failure reason.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesArtDirection authoring job ID returned by author_art_direction

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the annotations (readOnly, idempotent, non-destructive) by detailing what a done job includes (authored markdown, optional saved art_direction_id), what iteration jobs expose (source ID, expected revision, apply outcome), and what a failed job provides (per-source status, safe failure reason). This gives the agent a clear behavioral model for expected outputs and failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, opening with the core purpose in one sentence. Each subsequent sentence adds distinct value (polling semantics, done job payload, iteration specifics, failure handling). No superfluous words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, the description sufficiently explains return values and states: done vs failed, what each contains, and special cases for iteration jobs. It also covers the async polling pattern and save flag behavior, making the tool's behavior fully understandable for a complex async operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes job_id with 100% coverage, but the description adds important context by clarifying that the job ID can come from either author_art_direction or iterate_art_direction, extending the schema's mention of only the former. This enriches the agent's understanding of valid inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: to read an asynchronous ArtDirection authoring job. It uses a specific verb ('Read') and resource ('ArtDirection authoring job'), and distinguishes itself from sibling tools like get_art_direction by focusing on polling job status rather than fetching a direct entity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: poll the job ID returned by author_art_direction or iterate_art_direction until done/failed. It names the source functions and describes polling behavior. However, it does not explicitly state when not to use this tool or mention alternatives like get_art_direction for direct retrieval, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_briefReopen Saved BriefA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
brief_idYesReal persisted brief ID to load unchanged. Do not use 0, guessed IDs, or this tool for editing a visible brief.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds essential behavioral context: it loads 'unchanged,' rejects placeholder/guessed IDs, and is not for starting new shoots or editing. This goes beyond the annotation flags without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences, front-loaded with the core function, then usage rules, then exclusions. Every sentence adds necessary guidance with zero fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description fully covers the tool's purpose, constraints, and relationship to alternatives (update_brief). With one well-documented parameter and rich annotations, no critical information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema parameter description already provides semantics: 'Real persisted brief ID to load unchanged. Do not use 0, guessed IDs...' The description reiterates these constraints but does not add significant new meaning beyond usage context, which is already covered by guidelines. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Load an existing persisted brief unchanged by a real positive brief_id.' It clearly distinguishes from siblings by explicitly stating when to call update_brief instead of looping on get_brief.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use conditions ('Only use when the user supplied that brief_id or after propose_brief/update_brief returned it') and when-not-to-use ('Never use this to start a new photoshoot' and 'call update_brief instead' for modifications). It names the alternative tool update_brief directly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_connection_identityGet Connection IdentityA
Read-onlyIdempotent
Inspect

Return the profile ID and active company ID used by this authenticated MCP connection. Use this before a paid operation when a release or audit must prove the connection is scoped to the intended Uwear account.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the operation as read-only, idempotent, and non-destructive. The description adds useful behavioral context by specifying exactly what it returns and that it is scoped to the authenticated connection, without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. The first sentence front-loads the core function, and the second adds the key usage context. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter getter with rich annotations and no output schema, the description adequately explains both the return values and the operational context. Nothing critical is missing for an agent to decide when and how to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema is fully self-documenting with an empty properties object. The description therefore has no parameter burden to carry, and a baseline of 4 for zero-parameter tools is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Return') and resource ('profile ID and active company ID used by this authenticated MCP connection'), making it clear what the tool does. This distinguishes it from the many get_* siblings, which operate on different resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs when to call this tool: 'Use this before a paid operation when a release or audit must prove the connection is scoped to the intended Uwear account.' It does not explicitly state when not to use it or name alternatives, but no sibling appears to overlap with its purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_garmentGet GarmentA
Read-onlyIdempotent
Inspect

Get a specific garment by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
garment_idYesThe garment ID to retrieve

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety profile is covered. The description adds no extra behavioral context (e.g., not-found behavior, return details), but with annotations present, the value added is limited. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence that is front-loaded and earns its place. No wasted words or redundant restating of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple get-by-ID with one parameter and no output schema. Annotations cover the safety profile. The description plus schema is sufficient for an agent to invoke it correctly; no additional detail is essential.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the single parameter garment_id is fully described as 'The garment ID to retrieve'. The description 'a specific garment by ID' adds no new semantic meaning beyond what the schema already provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get a specific garment by ID' clearly states the verb (get), resource (garment), and singular scope (specific, by ID). It distinguishes this tool from siblings like list_garments, which retrieves multiple garments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you need one garment by ID, but it does not explicitly state when to use this tool versus alternatives like list_garments or update_garment. No when-not-to-use or alternative names are provided, so it only meets the implied usage level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_generation_resultsGet Generation ResultsA
Read-onlyIdempotent
Inspect

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'.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNoFilter by type: 'Image', 'Edit', 'Upscale', 'Video'
pageNoPage number for pagination
limitNoNumber of items per page
queryNoHybrid search across generated image content, originating item names, and SKUs.
tag_idsNoFilter by tag IDs (results must have at least one)
decisionNoFilter by the unified result verdict.
end_dateNoFilter results created on or before this ISO date/datetime, e.g. 2026-04-27.
model_idsNoFilter results to images generated with these AI models
avatar_idsNoFilter results to images generated with these avatars
outfit_idsNoFilter results to images generated with these outfits
start_dateNoFilter results created on or after this ISO date/datetime, e.g. 2026-04-20.
qa_statusesNoFilter by QA statuses, e.g. pending, processing, completed, error.
location_idsNoFilter results to images generated with these locations
generation_idNoFilter by parent generation ID (lists all result images from one generation job)
decision_sourceNoFilter by the verdict source.
art_direction_idsNoFilter results to images generated with these art directions
clothing_item_idsNoFilter results to images generated with these clothing items
generation_result_idNoLook 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.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite readOnlyHint and idempotentHint annotations, the description reveals non-obvious behavior: '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.' It also warns against Markdown-embedding result URLs and mentions that raw payload is returned when available, providing significant context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long (about six sentences) but each sentence provides necessary information for correct usage, such as URL semantics, ID handling, and confirmation-flow guidance. It is front-loaded with the purpose but the later section on confirmation clients could be separated for better scannability. Still, no sentence is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 18-parameter tool with no output schema, the description thoroughly covers retrieval modes, result content (labeled ImageContent previews), URL differentiation, downstream ID usage, and date-filter examples. It addresses confirmation workflows and raw payload recovery, making it nearly self-sufficient for an agent to use this tool and understand its outputs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers all 18 parameters, so the baseline is 3. The description adds value by clarifying the generation_result_id vs generation_id usage and emphasizing that these integers are required for QA/edit/upscale/video commands. It also gives a semantic example for start_date/end_date, slightly exceeding what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Look up generation results by exact IDs, filters, or hybrid image/name/SKU search', clearly stating the action and resource. It further differentiates from siblings by explaining the distinction between generation_result_id (single result) and generation_id (list a job's results), which prevents confusion with get_generation_status or QA tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use downstream tools: '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.' It also provides clear guidance for using generation_result_id vs generation_id and gives a real-world example for start_date/end_date ('last week').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_generation_statusGet Generation StatusA
Read-onlyIdempotent
Inspect

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, net credits_charged, credits_refunded, estimated_processing_seconds, and status_guidance. Failed jobs also return a safe error_message and error_type (user, transient, or provider). 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
generation_idYesThe 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.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, and the description adds substantial behavior beyond that: preview URLs are display-only fallbacks, failed jobs return safe error details, status can remain Created while queued, and UI model names map to specific model_slug values. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a clear one-line purpose and then packs dense, useful details about previews, error types, and status behavior. It is somewhat long and repeats the model_slug mapping already present in the schema, but each sentence still contributes operational value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter status tool with no output schema, the description is complete: it covers status transitions, returned fields, failure payloads, preview URL semantics, and polling guidance. An agent has enough context to invoke the tool correctly and interpret its response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single generation_id parameter, so the schema already documents the parameter. The description does not add new meaning about generation_id itself; it lists return fields and behaviors, which is useful but not parameter-specific. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Check generation job status.' It clearly distinguishes this status-checking tool from result-fetching siblings like get_generation_results by focusing on job progression and return metadata rather than final outputs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides practical usage guidance: avoid tight polling loops while status remains Created, use completed previews directly, and never Markdown-embed result URLs. It does not explicitly name alternative tools or give exclusion criteria, but the intended usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_items_by_tagGet Items by TagA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
tag_idYesTag ID to look up
item_typesNoFilter to specific types: 'clothing_item', 'avatar', 'outfit', 'generation_result', 'location'. Omit to get all.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description only needs to add context. It does by noting 'grouped by type' and the no-UI workflow context, which informs expected behavior. It does not contradict annotations and adds some value beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two crisp sentences: the first states the core function, the second provides workflow context. No wasted words, information is front-loaded and immediately relevant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only lookup with two parameters and rich sibling context, the description covers the workflow and return type sufficiently. It could elaborate on the exact grouping structure, but the absence of an output schema is partially mitigated by the description's clarity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters, including allowed values for item_types. The description does not add significant meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verb+resource ('Get all item IDs tagged with a specific tag, grouped by type'), clearly distinguishing it from sibling tools like list_tags or propose_brief. The workflow reference further clarifies its unique role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('Use after list_tags for no-UI MCP requests'), provides a concrete example ('use my clothes tagged summer26'), and names an alternative ('instead of opening request_user_context'), giving strong usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_locationGet LocationA
Read-onlyIdempotent
Inspect

Get a reusable location/scene reference by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
location_idYesThe location ID to retrieve

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds the context that the location is 'reusable' and a 'scene reference', but does not disclose any additional behavioral traits such as error handling or response details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that communicates exactly what the tool does with no wasted words. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter read operation with strong annotations, the description is nearly sufficient. It clearly identifies the resource and method, though a brief note about the return value would make it fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the only parameter 'location_id' is clearly described in the schema. The description adds no new parameter information beyond 'by ID', so it does not elevate above the baseline for full schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Get' with a clear resource 'reusable location/scene reference' and method 'by ID', making its function unambiguous. It naturally distinguishes itself from sibling tools like list_locations and create_location by implying a single item lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage (retrieve a location when you have its ID) but provides no explicit when-to-use guidance or mention of alternatives like list_locations for browsing. There is no guidance on when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_outfitGet OutfitA
Read-onlyIdempotent
Inspect

Get one saved outfit by ID, including its member garments.

ParametersJSON Schema
NameRequiredDescriptionDefault
outfit_idYesID of the outfit to retrieve

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds meaningful behavioral context beyond annotations by stating that the response includes the outfit's member garments, which is valuable given there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence delivers the essential message with no filler. The subject and action are front-loaded, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-ID read operation with strong annotations and full schema coverage, the description is complete. It clarifies the return composition ('member garments'), which is the main missing piece in the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the outfit_id parameter is already well-documented with type, minimum, and meaning. The tool description adds no additional parameter semantics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('one saved outfit by ID') with an added qualifier ('including its member garments') that distinguishes it from list_outfits and get_garment. The scope is precise and immediately understandable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies this tool is for retrieving a single saved outfit when the ID is known, which differentiates it from sibling tools like list_outfits. It provides clear context but does not explicitly name alternatives or state when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_templateGet TemplateA
Read-onlyIdempotent
Inspect

Load one canonical company template by ID or public t-xxxx share code. Pass expected_template_kind when the caller requires a generation_preset or batch_workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
share_codeNoPublic t-xxxx share code
template_idNoTemplate ID
expected_template_kindNoOptional expected kind. A mismatch returns both expected and actual kinds.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the canonical-company scope and the two lookup paths, but doesn't disclose return shape, error behavior, or the exact-one-identifier expectation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary action and identifier modes, followed by the one conditional parameter note. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only three optional parameters and rich schema descriptions, the description is mostly sufficient, but it does not state that exactly one of template_id or share_code is needed, nor what a successful load returns. Since there is no output schema, a bit more return-value clarity would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description reinforces when expected_template_kind matters but adds no new meaning beyond the schema's own descriptions of share_code, template_id, and the expected-kind mismatch behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Load'), a specific resource ('one canonical company template'), and two concrete identifier modes (ID or public t-xxxx share code). This clearly separates it from siblings like list_templates, save_template, and delete_template.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly tells the caller when to supply expected_template_kind ('when the caller requires a generation_preset or batch_workflow'). It doesn't explicitly name alternative tools or exclusion cases, but the single-template load intent is clear enough for tool selection among the siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_creditsGet Credit BalanceA
Read-onlyIdempotent
Inspect

Get user's current credit balance.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds the context that it retrieves the 'current' balance for the user, which is useful but minimal. It does not contradict annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words. It is immediately understandable and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with no parameters and rich annotations, the description sufficiently communicates the operation. It does not describe the return format, but given the low complexity, this is an acceptable gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema coverage is trivially 100%, so the baseline is 4. The description adds no parameter details because there are none to describe.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Get') and resource ('user's current credit balance'), which distinguishes it from related tools such as create_credit_checkout_session and estimate_cost. It is slightly more specific than the title, though it does not explicitly mention alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. The description does not mention any exclusions or context for use, leaving the agent to infer from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

iterate_art_directionImprove Art DirectionA
Destructive
Inspect

Queue feedback-driven revision of an existing ArtDirection without resending its markdown. Existing authoring references are included automatically. Use save=false for a reviewable draft, or save=true to update the same company ArtDirection with stale-edit protection. System ArtDirections support drafts only. Poll get_art_direction_authoring_job for the result.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional rename request
saveNoFalse returns an unsaved revision draft; true updates this same company ArtDirection
sourcesNoOptional new supported authoring sources such as text, public URLs, or uploaded files
feedbackYesWhat the ArtDirection author should preserve, change, add, or remove
image_urlsNoDraft-only new visual sources; use persistent attachments when save=true
art_direction_idYesExisting ArtDirection ID to revise
reference_image_attachmentsNoNew persistent authoring references to add alongside existing references

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate a destructive, non-idempotent write operation. The description adds substantial behavioral context beyond annotations: it is asynchronous (queue + poll), mentions stale-edit protection, and imposes a system-ArtDirection draft-only constraint. These details are not in the annotations and are crucial for correct usage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no filler. It front-loads the core purpose, then explains save modes and constraints, and ends with the polling instruction. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is a queue-based revision with 7 parameters and no output schema, the description covers the essential aspects: async behavior, save modes, system constraint, and how to retrieve results. It omits error handling and prerequisites, but these are secondary for a queue tool and the guidance is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value by clarifying that existing authoring references are included automatically and explaining the save parameter's behavior in plain terms, which is not fully captured in the schema. It also implies that sources are additive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool queues a feedback-driven revision of an existing ArtDirection without resending its markdown, which is a specific verb+resource action. It also distinguishes between save=false (draft) and save=true (update), and implies this is distinct from update_art_direction by emphasizing feedback-driven async revision.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit guidance on the save parameter (false for draft, true for update with stale-edit protection) and notes System ArtDirections support drafts only. It also instructs to poll get_art_direction_authoring_job for the result. However, it does not explicitly name alternative tools or state when not to use this tool, so some inference is left to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_art_directionsList Art DirectionsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination
limitNoNumber of compact ArtDirection summaries per page
queryNoHybrid search across saved ArtDirection names and creative content.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds behavioral context about the returned format (compact summaries), inclusion of system and company ArtDirections, and query behavior for natural-language requests, which is useful beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the primary function and using each sentence for distinct guidance: output scope, query usage, and follow-up action. No fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a simple list operation with optional parameters and no output schema, but the description covers what is returned (compact summaries), what is included, how to use it in the workflow, and where to go for full details. It is fully contextualized within its sibling set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents page, limit, and query. The description adds slight nuance by explaining query can match exact names and natural-language creative requests, but this largely mirrors the schema's 'hybrid search' description, so a baseline score is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists selectable ArtDirections as compact summaries, specifying the scope (visible system plus company ArtDirections). This distinguishes it from get_art_direction, which is referenced for full documents.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly positions the tool as the catalog step before choosing an art_direction_id for a brief and advises a fallback to the user's phrase if no match. It also directs users to get_art_direction for full markdown, providing clear when-to-use and alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_avatarsList AvatarsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination
sortNoSort order: 'field:direction', e.g. 'created_at:desc'. Default: created_at:desc
limitNoNumber of items per page
queryNoHybrid search across avatar/model names, metadata, and visual attributes.
tag_idsNoFilter to avatars with any of these tags
end_dateNoFilter: created on or before this date (ISO format)
avatar_idsNoFilter to specific avatar IDs
start_dateNoFilter: created on or after this date (ISO format)
include_image_urlNoSet true when you need to inspect or reuse the avatar/model image URL.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description goes beyond by explaining the domain semantics (avatars vs. AI models) and the hybrid search behavior, adding useful context that annotations do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three focused sentences, each adding value: purpose, distinction from sibling, and key parameter guidance. No redundant phrasing or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with 9 optional params and no output schema, the description covers the essential context: what avatars are, the alternative tool, and the critical include_image_url scenario. Pagination and date filters are left to the schema, which is sufficient given the tool's simplicity. It could mention return format, but that's not critical here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description echoes the query parameter's hybrid search behavior and the include_image_url usage, but these are already described in the schema. It adds minimal new information beyond what structured fields provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'List the user's avatars', a clear verb+resource statement. It further clarifies that avatars are the reusable people/models/mannequins in fashion terms, and explicitly distinguishes from list_models for AI engines, which differentiates it from a likely sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit guidance: 'not the AI engines — for those, use list_models' directly names the alternative. It also gives a concrete usage trigger: 'Set include_image_url=true when the avatar image itself is needed.' This tells the agent when to use the tool and how to configure a key parameter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_garmentsList GarmentsA
Read-onlyIdempotent
Inspect

List user's garments with structured filters or query for hybrid name/SKU/metadata/image-attribute search. body_zone expands to categories and is ORed with category when both are given. Garments may have no category. A category or body_zone filter excludes them unless include_uncategorized is true.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination
sortNoSort order: 'field:direction', e.g. 'created_at:desc', 'clothing_item_name:asc'. Default: created_at:desc
limitNoNumber of items per page
queryNoHybrid search across garment names, SKUs, metadata, and visual attributes.
tag_idsNoFilter to garments with any of these tags
categoryNoFilter to garments in any of these canonical categories; OR with body_zone when both are given.
end_dateNoFilter: created on or before this date (ISO format)
body_zoneNoFilter to categories in any of these body zones; OR with category when both are given.
start_dateNoFilter: created on or after this date (ISO format, e.g. '2025-06-01')
clothing_item_idsNoFilter to specific garment IDs
include_image_urlNoSet true when the garment image itself is needed for visual display or reuse.
include_uncategorizedNoAlso include garments with no category when category and/or body_zone filters are used.
exclude_clothing_item_idsNoExclude these garment IDs, for example the attached garment.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only and idempotent behavior. The description adds meaningful behavioral context beyond annotations, such as the OR logic between body_zone and category, the expansion of body_zone to categories, and the exclusion of uncategorized garments unless include_uncategorized is true. These are non-obvious behaviors not fully evident from schema alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no redundancy. The first states the core purpose, the second explains the body_zone/category interaction, and the third addresses the uncategorized edge case. All content is essential and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the key filtering semantics and edge cases. While it doesn't describe the return format, the tool's name and read-only annotations imply a list of garments. Pagination and sorting are documented in the schema, so the description does not need to repeat them. The description is sufficiently complete for a list tool with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by clarifying the relationship between body_zone and category (ORed, expansion) and the uncategorized handling, which is not fully explicit in the schema. This improves parameter understanding beyond the individual descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource ('List user's garments') and distinguishes itself by detailing the hybrid search and structured filter capabilities. It differentiates from siblings like get_garment (single item) and get_items_by_tag (tag-specific) by implying this is the general listing tool with advanced filtering.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage as the primary garment listing tool but does not explicitly contrast it with alternatives like get_items_by_tag or get_garment. It provides context for when to use it (e.g., when needing structured filters or hybrid search) but lacks explicit exclusionary guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_locationsList LocationsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination
sortNoSort order: 'field:direction', e.g. 'created_at:desc', 'location_name:asc'. Default: created_at:desc
limitNoNumber of items per page
queryNoHybrid search across location names, metadata, and visual attributes.
tag_idsNoFilter to locations with any of these tags
end_dateNoFilter: created on or before this date (ISO format)
start_dateNoFilter: created on or after this date (ISO format)
location_idsNoFilter to specific location IDs
include_image_urlNoSet true when the location/reference image URL is needed for inspection or reuse.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds useful context about the data being 'reusable location/scene reference images' and the user intent, but it does not disclose additional behavioral traits like return format, pagination behavior, or any edge cases beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no unnecessary words. The description front-loads the main action and resource, then provides filter details and a use case. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having 9 optional parameters and no output schema, the description is adequate for a list tool: it names the resource, the filter dimensions, and the primary use case. The comprehensive schema covers parameter semantics. It could be slightly more complete by mentioning the return type (e.g., paginated list of location references), but the current coverage is solid.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter having a detailed description. The description's summary of filters ('IDs, tags, date range, and sort') offers a high-level abstraction but does not add meaning beyond what the schema already provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the specific resource 'reusable location/scene reference images'. It enumerates filter types (IDs, tags, date range, sort) and gives a concrete use case ('pick a saved background/location reference'), which distinguishes it from sibling tools like get_location or create_location.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Use when the user wants to pick a saved background/location reference for a generation' provides clear context on when to invoke this tool. However, it does not explicitly mention when not to use it or name alternative tools, so it stops short of full usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_modelsList AI ModelsA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
model_typeYesType: generation, edit, upscale, video, backdrop

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds useful behavioral context beyond annotations by specifying the returned information: credit costs, capability limits, and model-specific production guidance. This helps the agent know what to expect from the call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. It front-loads the core purpose, then efficiently adds disambiguation and alternative routing. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, one-parameter, read-only list tool with full schema coverage and clear annotations, the description is complete. It tells the agent what the tool returns, how to categorize models, and which sibling to use instead. No critical information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the only parameter, model_type, with a clear description covering its allowed values ('generation, edit, upscale, video, backdrop'), so schema coverage is 100%. The description adds context about model categories but does not need to repeat the schema details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'List available AI generation models... by type', and explicitly distinguishes these AI models from human models/avatars. It also names the sibling tool (list_avatars) for the alternative, making the tool's purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage guidance: this tool is for AI generation models, not human models/avatars, and directs users to list_avatars for those. This is a clear when-to-use vs alternative distinction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_outfitsList OutfitsA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination
sortNoSort: 'field:direction'. Use 'latest_generation_at:desc' to surface recently generated outfits. Default: created_at:desc
limitNoNumber of items per page
queryNoSearch outfit names and contained garments.
sourceNoFilter by outfit source.
tag_idsNoFilter to outfits with any of these tags
end_dateNoFilter: created on or before this date (ISO format)
is_activeNoFilter by status: 'true', 'false', or 'both' (default: both)
outfit_idsNoFilter to specific outfit IDs
start_dateNoFilter: created on or after this date (ISO format)
clothing_item_idsNoFilter to outfits containing any of these garments

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destrutiveHint=false, so the safety profile is covered. The description adds that the listing is user-scoped and that outfits are saved combinations, but does not disclose pagination behavior, default filter semantics, or return shape. Given annotation coverage, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence that leads with the core action and usefully clarifies what an outfit is. Every clause earns its place; there is no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list operation with full schema descriptions, annotations, and a clear resource scope, this description is almost complete. It would be fully complete with an explicit pointer to the single-outfit sibling or a note about pagination defaults, but those are already inferable from the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter is already documented with defaults and meaning. The description only summarizes parameter categories (garment IDs, active status, date range, query) and adds no new semantic detail beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb+resource: 'List user's outfits' and defines outfits as 'saved garment combinations'. The filtering summary helps identify the operation, but it does not explicitly differentiate itself from siblings like get_outfit or propose_outfits, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'List user's outfits' and the filter list imply this is the bulk retrieval tool for saved outfits, and the user-scoped wording signals scope. However, there is no explicit when-to-use versus alternatives, such as using get_outfit for a single outfit or propose_outfits for generated suggestions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tagsList TagsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is clear. The description adds behavioral context by outlining a typical workflow (resolving tag names to IDs) and directing to follow-up tools, which goes beyond annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core purpose, and immediately followed by actionable usage guidance. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no output schema, the description fully covers what the tool does, why it's useful (tag resolution), and how to use its output. No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the input schema is empty. The baseline for 0 params is 4 because there are no parameter semantics to explain. The description appropriately focuses on the tool's purpose and usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'List available tags for the user's company.' This is a specific verb+resource+scope, and it distinguishes from siblings by explaining that this is the tag lookup tool used before other operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use guidance is provided: 'Use this to resolve user-provided tag names... before selecting garments, outfits, models, files, generations, or locations.' It also gives a concrete alternative: 'For no-UI MCP flows, find the tag ID here, then call get_items_by_tag or the relevant list_* tool with tag_ids.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_templatesList TemplatesA
Read-onlyIdempotent
Inspect

List canonical company templates, optionally filtered by kind, scope, command use case, or public t-xxxx share code. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination
use_caseNoFilter by a use_case present in any stored command
share_codeNoReturn the template assigned this public t-xxxx share code
catalog_scopeNoFilter by library or owner_only. Owner-only templates are hidden unless explicitly requested.
template_kindNoFilter generation presets or read-only historical batch_workflow records
items_per_pageNoNumber of templates per page

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=true and idempotentHint=true, and the description adds genuinely new behavioral context beyond them: templates persist but never execute generations, and 'Demo — …' templates are worked examples of the canonical command language. Nothing contradicts the annotations, which support the read-only framing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with the purpose and filter axes front-loaded in the first, followed by a compact behavioral caveat and a concrete next-step pointer. Every clause earns its place; there is no filler or repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-optional-parameter list operation with full schema coverage and safety-carrying annotations, the description covers the object's nature, all filter dimensions, the non-execution behavior, and the natural follow-up via get_template. The only shortfall is the absence of return-shape guidance, which carries slightly more weight because no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all six parameters in detail, including the owner-only visibility rule and the writable/read-only enum distinction. The description adds only a light summary of the filter axes (kind, scope, use case, share code) that maps to schema parameters without deepening their semantics — baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — 'list canonical company templates' — and enumerates the filter dimensions (kind, scope, use case, share code). It distinguishes itself from siblings by framing templates as persisted canonical commands rather than executable or writable records, and implicitly differentiates from get_template which reads a single template.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly routes follow-up behavior ('read one with get_template before authoring a first brief or workflow') and clarifies that templates 'do not execute generations', steering an agent toward generation tools when execution is needed. It does not, however, enumerate exclusions against other browsing or search siblings such as search_uwear_library.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcp_add_contextAdd to Shoot BoardAInspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
context_itemsYesShoot Board items to append to the current list

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a non-read-only, non-idempotent, non-destructive mutation. The description adds useful context about app-only availability and session scoping, but does not disclose potential duplicate behavior or other side effects beyond what annotations imply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence that conveys all essential information without waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter mutation tool with no output schema, the description provides key context (app-only, session-scoped, append behavior) and is sufficiently complete. It does not describe return values, but that is not required given the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (the single parameter has a description), so baseline is 3. The description adds no extra meaning beyond 'append items' which merely restates the parameter name 'context_items'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('append'), the resource ('Uwear Shoot Board'), and the scope ('session-scoped'), which distinguishes it from sibling tools like mcp_replace_context (replace) and mcp_clear_context (clear).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The term 'append' implies adding to an existing board, subtly distinguishing from replace/clear siblings, but there is no explicit guidance about when to use this tool versus alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcp_clear_contextClear Shoot BoardA
DestructiveIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoContext type to remove; omit to clear the entire Shoot Board

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and idempotentHint=true. The description adds behavioral value by explaining the all-or-one-type clearing behavior and the 'App-only' constraint. It does not contradict annotations and adds meaningful context beyond what the annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—a single sentence that conveys the essential scope and behavior. Every word adds value, and it is front-loaded with the action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional parameter, no output schema, and strong annotations, the description is complete. It fully covers the tool's behavior (clear all or specific type) and the app-only constraint, leaving no significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; the parameter 'type' is well-documented with an enum and description 'Context type to remove; omit to clear the entire Shoot Board.' The description's mention of 'one context type' adds no new meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'clear all session context items, or only one context type.' It uses a specific verb (clear) and resource (session context items/Shoot Board), and it distinguishes from sibling tools like mcp_add_context and mcp_replace_context by focusing on removal.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it's app-only and clears either all context items or a specific type. It implies when to use it (when clearing context is needed), but it does not explicitly mention alternatives or when-not-to-use scenarios. This is clear enough for the simple use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcp_export_montageExport Montage VideoA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
clipsYesOrdered generation-result clips to stitch into the montage
fit_modeYesHow each clip fits the output frame: contain or cover
aspect_ratioYesOutput video aspect ratio in W:H format
base_resolutionYesOutput base resolution in pixels

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (destructiveHint=true), the description reveals that the tool 'spends credits' and is 'hidden from host LLMs,' adding cost and access context. It also discloses the return behavior: 'Returns the generation_id to poll via get_generation_status.' This complements the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: the action, the credit/access constraint, and the return value. No redundant detail or padding. The most important operational fact (app-only) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, the description explains the return value (generation_id) and how to follow up (get_generation_status). The credit spend and app-only access are covered. All 4 required parameters are described in the schema, so the description is complete for this tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds little beyond the schema: it references 'user-confirmed montage clips' but does not elaborate on fit_mode, aspect_ratio, or base_resolution. The schema already documents these, so the description does not need to.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'export the user-confirmed montage clips as a stitched video.' It clearly distinguishes from siblings like propose_montage and update_montage_proposal by focusing on the final export action. The phrase 'stitched video' specifies the output type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use it: 'App-only' and 'the MCP iframe calls this after the user presses Export on the MontageProposal card.' It also excludes host LLMs ('hidden from host LLMs') and mentions the credit cost, which is a key constraint. This effectively differentiates it from proposal-generation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcp_generate_clipGenerate Montage ClipA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelYesVideo model slug or supported model name
promptNoOptional motion prompt for the video clip
durationNoVideo duration in seconds; defaults to 5
image_urlNoHTTPS source image URL; provide exactly one source
resolutionNoOptional output resolution; defaults to 480p
generate_audioNoInclude audio in the delivered video. False delivers a silent file; fixed-audio providers are muted after generation at the same credits.
last_frame_urlNoOptional final-frame image URL for supported video models
uploaded_file_idNoUploaded file ID to use as the source image; provide exactly one source
generation_result_idNoExisting generation result ID to use as the source image; provide exactly one source

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as non-read-only and destructive, and the description adds important behavioral context by disclosing that it 'spends credits,' is hidden from host LLMs, and returns a generation_id for later polling. This meaningfully supplements the annotation hints, though it does not detail consequences beyond credit spend.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences deliver the key facts: what it does, who should call it, and what it returns. Every sentence earns its place, and the most critical constraint ('App-only') is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 9-parameter schema with full coverage and no output schema, the description covers the essential usage context: app-only, credit cost, caller, and returned generation_id. It is nearly complete, though it slightly undersells the one-source-input constraint among image_url, uploaded_file_id, and generation_result_id, which is only implied per-parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented in the input schema. The description does not add parameter-level meaning beyond noting the image-to-video nature, which is adequately covered by the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with a specific verb and resource: 'queue an image-to-video generation for a montage clip.' It further differentiates itself from siblings by noting it is app-only, hidden from host LLMs, and tied to a montage editor Generate action, so an agent can clearly tell it apart from other generation or montage tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when this tool is used: 'the montage editor calls this when the user presses Generate on a draft clip.' It also gives an exclusion by saying it is hidden from host LLMs and names the follow-up tool, get_generation_status, for polling. This is strong usage guidance with minimal inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcp_get_contextGet Shoot BoardB
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only and idempotent behavior, so the description only needs to add extra context. It adds 'App-only' and 'session-scoped' constraints, which are useful, but 'hydrate' remains vague about whether the tool returns data, initializes the board, or both.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words, but it is arguably too terse. The term 'hydrate' could be replaced with more explicit language, yet the structure is clean and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description must convey what the agent should expect. It does not explain what a 'Shoot Board' is or what 'hydrate' returns or does, leaving significant ambiguity about the tool's actual effect and return value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so there is no parameter documentation burden. The baseline of 4 applies since the description doesn't need to compensate for schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The title 'Get Shoot Board' clarifies the retrieval intent, and the description identifies the resource ('Uwear Shoot Board') and scope ('session-scoped'). The verb 'hydrate' is somewhat non-standard but still conveys loading the board. It is distinguishable from mutation siblings like mcp_add_context, though 'hydrate' adds jargon.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool vs alternatives such as request_user_context or other getters. The 'App-only' label is a constraint, not a usage trigger, and no exclusions or alternative tools are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcp_list_filesList FilesB
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for uploaded file results
limitNoMaximum number of uploaded files per page

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds context about the 'App-only' scope and the workspace files tab, but does not provide additional behavioral details like pagination behavior or return format. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded with the core action and includes the necessary context ('App-only', 'workspace files tab'). No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple read-only list tool with two optional parameters and no output schema. The description states what it lists but does not describe the return value structure or pagination defaults. Given the low complexity, a brief description is mostly sufficient, but a little more detail (e.g., what fields/objects are returned) would be helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (both 'page' and 'limit' have descriptions). The tool description adds no additional meaning for the parameters, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies the verb 'list' and the resource 'uploaded files', with a clear context ('Uwear MCP workspace files tab'). It distinguishes from sibling list tools by focusing on 'uploaded files' rather than garments, avatars, etc. However, it could be slightly more explicit about what constitutes a 'file'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any explicit guidance on when to use this tool versus alternatives, nor does it mention any exclusions. The 'App-only' prefix is a constraint but not a usage guideline. It gives no indication of when to prefer this over other list_* tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcp_replace_contextReplace Shoot BoardA
DestructiveIdempotent
Inspect

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

ParametersJSON Schema
NameRequiredDescriptionDefault
context_itemsNoShoot Board items that replace the current list when context_state is omitted
context_stateNoComplete Shoot Board state to sanitize and persist; takes precedence over context_items

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey destructive and idempotent behavior. The description adds 'session-scoped' and 'App-only', which narrow the scope and provide context beyond what annotations state. This is meaningful incremental value, though it does not detail side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the action and includes key constraints. It contains no filler and every word contributes meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description, combined with the schema's parameter descriptions, provides sufficient clarity for an agent to understand the tool's purpose, scope, and parameter semantics. The only minor gap is the undefined meaning of 'App-only', but overall it is complete for a replace tool with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters have detailed descriptions, including the precedence relationship between context_items and context_state. The tool description adds no parameter-specific info, so the schema carries the burden, resulting in baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('replace') and the resource ('session-scoped Uwear Shoot Board items'). This distinguishes it from sibling tools like mcp_add_context and mcp_clear_context, which have different operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies replacement semantics compared to add/clear but does not explicitly name alternatives or provide exclusion criteria. The 'App-only' hint offers some context but does not fully guide an agent on when to select this tool over its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mcp_save_retouchSave Retouched ImageAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_nameNoOptional filename for the saved retouched image
mime_typeNoOptional image MIME type; inferred from a data URL or defaults to image/png
operationsNoOptional retouch operation metadata stored with the child result
image_base64YesRetouched image encoded as base64 or an image data URL
parent_generation_result_idYesGeneration result ID of the original image

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false and idempotentHint=false, which align with the write behavior. The description adds context that saves a 'child generation result' and is 'App-only,' clarifying the data model and invocation scope. It could mention return behavior, but annotations cover safety traits adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly worded sentences immediately establish the tool's restricted audience and purpose. No wasted words; every element contributes essential context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool intentionally hidden from host LLMs, the description provides sufficient context for an agent to recognize it as internal. Schema covers required parameters, and the description clarifies the triggering flow. Minor gap: no return value or error behavior described, but given the 'App-only' designation, this is less critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 5 parameters with descriptions, so baseline is 3. The description doesn't add new parameter-level information beyond what's in the schema, though it gives context for image_base64 and parent_generation_result_id through 'user-edited image' and 'child generation result.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'save a user-edited image from the shared ImageDetail retouch editor as a child generation result.' It uses a specific verb and resource, and the 'child generation result' distinguishes it from sibling save tools like save_generated_avatar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: 'after the user presses Save.' Also clearly excludes host LLMs with 'Hidden from host LLMs; the MCP iframe calls this,' providing strong context for invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prepare_local_garment_uploadPrepare Local Garment UploadAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYesLocal image metadata in a stable order. The local paths never leave the client.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses key behavioral traits beyond the annotations: the returned form fields and file_field must be used, local paths must never be sent to Uwear, and a follow-up call is required. This adds essential context about the two-step protocol and response handling, compensating for the lack of an output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence in the description serves a distinct purpose: scoping, prerequisites, execution details, security constraint, exclusions, and next-step instruction. It is dense yet efficient, with no redundant or filler content, and the key action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (two-step upload process) and the absence of an output schema, the description is remarkably complete. It tells the agent exactly what to do with the response, what to avoid, and what to call next, covering all necessary context for successful invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides comprehensive descriptions for each parameter (file_name, content_type, content_length) with constraints like max length and MIME type enums. The description adds no new parameter-level meaning—it only restates the local path rule already embedded in the schema—so the baseline of 3 for high schema coverage is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's role as the first step for uploading garment images from the host's local filesystem, using specific verbs like 'prepare' and identifying the resource. It also differentiates from sibling upload tools by explicitly excluding ChatGPT attachments and public URLs, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit conditions for use: only when the host can read local files and perform direct multipart HTTP uploads. It also states exclusions ('Do not use this for ChatGPT attachments or existing public URLs') and directs the agent to call finish_local_garment_upload afterward, offering clear guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

propose_briefCreate Brief for ApprovalA
Destructive
Inspect

Create a Uwear BriefProposal from canonical generation commands. Every commands[].input is the MCP-safe GenerationIntent fields; 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. Webhook callback configuration is API-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandsYesCanonical generation commands. Each command contains the MCP-safe GenerationIntent fields and a durable source reference. Write each input.prompt as a compact positive scene description (setting, lighting, mood, camera, pose — for video, motion and camera movement); without art_direction_id the prompt is the entire creative direction, so give it the full scene. The attached garment/avatar/reference images carry product appearance, so never pad prompts with restated garment construction details, product-fidelity warnings, or negative 'do not' instruction blocks; styling intent (fit, tuck, drape) is fine. For video commands, attach available full back or side garment assets that the camera may reveal through input.reference_attachments when capacity permits. Do not combine reference_attachments with img_ref_urls; uploaded garment assets are not attached automatically. Webhook callback configuration is API-only.
creative_contextNoRequired 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 direction across the photoshoot, e.g. 'urban summer editorial', 'standard grey e-commerce', or 'sporty studio catalog'. Per-look prompts may differ for garment details, pose, framing, or avatar, but should feel part of the same shoot unless the user explicitly asks for multiple art directions, split concepts, A/B routes, or varied campaign directions. The assistant should explain this art direction to the user after proposing the brief and ask if they want changes.
execute_immediatelyNoSet 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 credits and validation allow; otherwise it falls back to the editable BriefProposal.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (destructiveHint=true, readOnlyHint=false), the description discloses persistence behavior ('commands and immutable plans are persisted without translation'), error-remediation behavior (video_garment_view_not_attached response handling), and the API-only limitation of webhook configuration. It also describes the execute_immediately fallback behavior via the schema. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and long, but every sentence earns its place: core purpose first, then command construction rules, video specifics, error handling, exclusions, and routing to update_brief. It is front-loaded with the primary purpose. Slightly over-long, but well-structured and free of redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with nested command schemas and no output schema, the description is remarkably complete. It covers command construction, required fields, source ID semantics, video asset attachment rules, error-response handling, execute_immediately semantics, creative_context requirements, and routing to update_brief. The only missing piece—exact return value—is mitigated by the description's error-handling guidance and the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds meaningful guidance on top: requiring a concrete model_slug for specific command types, mandating durable command.source IDs, clarifying the role of reference_attachments for video, and explaining when execute_immediately and creative_context should be set. This elevates the semantics beyond the schema's plain descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Create a Uwear BriefProposal from canonical generation commands.' It clearly distinguishes itself from sibling update_brief by stating 'For changes to a visible brief, call update_brief with the complete replacement command list.' The purpose is unambiguous and differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance: when to set execute_immediately ('only when the user explicitly asks to run now'), when creative_context is required, and it names the alternative tool (update_brief) with the condition selecting it. It also gives negative constraints such as 'Never mix reference_attachments with img_ref_urls' and 'do not append recommendations beyond remaining capacity.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

propose_montageCreate Video MontageA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesOrdered list of montage items. Each is either an existing video or an image needing video generation. Min 1, max 10.
aspect_ratioNoOutput aspect ratio (e.g. '9:16', '16:9', '1:1')9:16
base_resolutionNoOutput resolution height in pixels

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral context beyond the annotations: it clarifies that this tool only PROPOSES a montage for user review (not an actual export), that the user can edit/generate/export later, and that export is free while video generation costs credits. It also details how various parameters affect behavior (trim, generation, speed/mute). With annotations already declaring read-only and idempotent, the description enriches the agent's understanding of the propose-first workflow and cost implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence earns its place. It is front-loaded with the critical scoping statement ('ONLY for video montage...'), then systematically covers exclusions, the proposal workflow, per-item semantics, and cost behavior. The structure flows logically from when-to-use to how-to-invoke, and there is no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is complex (nested MontageItemInput with 13 sub-properties, mixed video/image handling), yet the description covers all major aspects: item types, required fields, trim semantics, duration handling for image vs video, audio generation, aspect ratio, resolution, credit costs, and the post-proposal flow. The absence of an output schema is compensated by explaining the proposal-review-confirm sequence. This is as complete as one could expect for such a tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Even though schema coverage is 100%, the description adds meaningfully beyond the schema: it explains how to interpret user requests like '3 seconds each' into setting target_duration: 3 on every item, instructs to tailor per-image motion prompts and avoid generic repeated prompts, and advises inspecting the image with view_image when motion isn't specified. These are practical parameter-usage rules that go beyond the raw field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's sole purpose: video montage/stitching/export workflows, and that it PROPOSES a montage for user review. It explicitly differentiates from sibling tools like propose_brief and mcp_export_montage, and enumerates the exact trigger phrases ('create a montage', 'stitch clips', 'make a reel', etc.). This is a specific verb+resource with strong sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance, including exact user request patterns, and equally explicit when-not-to-use exclusions (photoshoots, lookbooks, product shoots) with the correct alternative path ('request_user_context followed by propose_brief/update_brief'). It also warns against calling the tool merely because images exist in context, and clarifies that photoshoots must first be proposed as a BriefProposal. This is textbook usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

propose_outfitsPropose OutfitsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_outfitsNoMaximum number of outfit proposals to return
instructionsNoOptional styling brief, occasion, season, constraints, or vibe
clothing_item_idsYesAccessible clothing item IDs to combine into outfit proposals

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and idempotentHint=true, so the safety profile is clear. The description adds behavioral value by disclosing return contents ('candidate titles, clothing_item_ids, and short rationales') and the correct follow-up action, which are not present in annotations. It doesn't contradict any annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no redundant phrases. The first sentence introduces the tool's core purpose, and the second provides return details and workflow. Every word contributes essential information, making it efficiently front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose, return payload, and the necessary next step (calling create_outfit_from_garment_ids). Since there is no output schema, describing return contents is essential and handled well. It doesn't detail edge cases or advanced behaviors, but those are unlikely needed for a straightforward proposal tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with all three parameters (clothing_item_ids, max_outfits, instructions) already described in the input schema. The description adds no additional parameter-specific meaning, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'use Uwear's outfit proposer to create styled outfit combinations from selected garments.' It identifies the specific resource (outfit proposals) and action (propose), and distinguishes itself from sibling tools like create_outfit_from_garment_ids by explicitly reserving that tool for a later saving step.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: it tells the agent to call this tool to generate proposals and to call create_outfit_from_garment_ids only after the user chooses one. It doesn't explicitly list alternative tools or say when not to use it, but the workflow guidance is strong enough to guide tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

queue_generation_result_qaRun QA on ResultsA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_qa_retriesNoMaximum QA-triggered retry generations to allow. Retry generations can cost additional generation credits.
generation_result_idsYesGeneration result IDs to QA. Queued or requeued QA costs 1 credit per result.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide destructiveHint=true, readOnlyHint=false, and idempotentHint=false. The description adds valuable context about credit costs (1 credit per result, no charge for already-completed rows) and that 'Retry generations can cost additional generation credits.' It also notes the tool is 'built for scale' and clarifies behavior for large batches. While it doesn't explicitly state destructive outcomes, the credit/retry details give additional transparency beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than typical but every sentence carries information: purpose, usage triggers, exclusions, workflow, costs, scale guidance. It is front-loaded with the core purpose and remains organized and scannable. A slight deduction for being a bit verbose, but it earns its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description should hint at expected outcomes. It does this indirectly by directing the user to call read_generation_result_qa afterward, implying the tool queues QA rather than returning results. It also covers costs, retries, scale, and when to avoid auto-invocation. Missing an explicit statement of what the tool returns (e.g., queue status or IDs), but the follow-up instruction mitigates this gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both generation_result_ids and max_qa_retries have descriptions that already mention credit costs and retry implications. The tool description repeats those cost mentions but does not add new semantic meaning beyond the schema. Since schema does the heavy lifting, baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it is the 'Default tool for generation-result QA' with a specific verb (queue/run QA) and resource (generation results). It clearly distinguishes itself from view_image by explicitly forbidding substitution unless the user asks for manual visual critique. This is a specific verb+resource with sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use criteria ('whenever the user asks to QA, quality check, validate, review, inspect for defects, approve/reject, or assess already-created generation results'), a clear workflow ('First identify the numeric generation_result_ids, then call this tool, then call read_generation_result_qa'), and explicit exclusions ('do not substitute view_image', 'do not queue QA on your own initiative' for small batches). This fully addresses when and when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_generation_result_qaRead QA ResultsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
generation_result_idsYesGeneration result IDs to read QA for

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds value by explaining the tool returns structured QA decision and issues, and advising the agent to summarize rather than give a manual opinion. This extra context about output content and expected behavior goes beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the verb 'Read' and the resource. Every clause provides useful information: purpose, sequencing, and usage guidance. No waste or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read-only tool, the description covers purpose, when to call, what to return, and how to handle the result. Annotations cover safety, and schema covers parameters. No output schema is needed because the description indicates structured data and summarization advice. Complete enough for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter generation_result_ids, with clear description. The tool description does not add significant parameter detail, but the schema already fully describes what the parameter means. Baseline 3 applies because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads official Uwear QA status, decision, and structured QA JSON for existing generation results. It distinguishes itself from siblings by emphasizing 'official' and 'structured' data, and explicitly contrasts with view_image, making the purpose specific and non-ambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage guidance: 'Call this after queue_generation_result_qa when the user asks to QA/check/validate/review generated outputs' and instructs to 'summarize the structured decision and issues, not a manual view_image opinion.' This clearly tells when to use it and what not to do, differentiating it from alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

request_user_contextAsk User to Pick AssetsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesInstruction shown to the user, e.g. 'Select the clothing items you want to use and add them to the Shoot Board'
min_itemsNoMinimum number of items the user must provide
expected_typesYesAccepted item types (match panel tabs): 'clothing', 'models', 'outfits', 'generations', 'files'. Legacy 'file' is accepted as an alias for 'files'.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, but the description adds crucial behavioral context: 'BLOCKS until the user confirms their selection.' It also warns against telling users to drag assets into chat and advises to skip model requests when avatars=0. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is lengthy but every sentence serves a purpose: condition, behavior, exclusions, alternatives, and special cases. It is front-loaded with the primary purpose and subsequent guidance is logically organized. It earns its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and the tool's complexity, the description is remarkably complete. It covers when to call, blocking behavior, no-UI alternatives, fallback upload procedures, and avatar handling. This is more than sufficient for an agent to decide and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are already well-documented. The description adds context about expected_types by explaining when to request models (optional, only if specific person is wanted) and mentions 'garment/outfit IDs or textual selectors' which indirectly relates to prompt construction. This goes slightly beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states this is the 'FIRST tool to call for a new photoshoot' when the user hasn't supplied asset IDs or selectors. It specifies the action: 'Opens the MCP app/gallery so the user can choose assets, add them to the Shoot Board, and press Confirm context.' This distinguishes it from sibling tools by explicitly withholding it when a no-UI path can resolve the request.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit criteria for when to use this tool ('only when the user has not supplied garment/outfit IDs or textual selectors') and when not to use it ('Do not use this when a no-UI path can resolve the request'). It even names alternatives like list_tags/get_items_by_tag/list_garments and upload_garment_from_chat_file, plus avatar fallback options.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_generated_avatarSave Generated AvatarAInspect

Save completed generate_avatar image results as one reusable avatar/model. Pass the identity-anchor result as generation_result_id and optional view results as additional_result_ids; each result fills the slot recorded in its avatar_creator.view metadata. Use only after generation finishes and the user chooses the candidates. Normal text-to-image results are not eligible.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the saved avatar/model
generation_result_idYesCompleted image result ID returned by generate_avatar. Normal text-to-image results are not eligible because they do not contain reopenable avatar-creator inputs.
additional_result_idsNoOther completed generate_avatar result IDs to save into their own avatar_creator.view slots in the same avatar.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are all false, so the description carries the disclosure burden. It adds meaningful behavioral context: each result fills a slot recorded in avatar_creator.view metadata, and only completed generate_avatar results are eligible. It does not discuss side effects like overwriting or reversibility, but for a save operation with no destructive hint, this is reasonably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no wasted words. The lead sentence states the purpose, the second explains parameter roles, and the third adds usage timing and eligibility. Information is front-loaded and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 3 params, no output schema, and no nested objects, the description covers the key operational constraints: when to invoke (after generation, user choice), eligibility (only generate_avatar results), and how results map to slots. It does not state what the response returns (e.g., saved avatar ID), but given lack of output schema, this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by clarifying the roles of generation_result_id as 'identity-anchor result' and additional_result_ids as 'view results' that fill slots in avatar_creator.view metadata. This goes beyond the schema's per-parameter descriptions, which individually explain what the IDs are but not their functional relationship in the saved avatar.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Save') with a specific resource ('completed generate_avatar image results') and outcome ('as one reusable avatar/model'). It clearly distinguishes from sibling tools by restricting to generate_avatar results, unlike upload_avatar_from_chat_file or create_avatar_from_references.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit timing context: 'Use only after generation finishes and the user chooses the candidates.' Also includes an exclusion: 'Normal text-to-image results are not eligible.' While it doesn't name alternative tools, the guidance clearly indicates when to use and when not to use, differentiating from related file-upload or reference-based avatar creation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_reference_file_from_chat_fileSave Reference ImagesAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesNoReference file metadata in the same order as image_file_1, image_file_2, etc. No base64.
file_nameNoSingle recovered display name
image_urlNoSingle resolved download URL used by automatic opaque-file recovery.
mime_typeNoSingle recovered MIME/content type, e.g. image/png
image_file_1NoHost-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_2NoHost-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_3NoHost-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_4NoHost-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_5NoHost-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_6NoHost-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_7NoHost-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_8NoHost-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_9NoHost-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_10NoHost-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.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=false, so the description doesn't need to restate those. The description adds valuable behavioral context: the batch nature of the operation, the ordering requirement between files[] and image_file_N, and the constraint that inputs must be chat file references (no base64, no local paths). It also clarifies the destination ('Files library'). This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with zero waste. The core action and destination are front-loaded, followed by the critical ordering instruction, then the exclusion clause. Every sentence earns its place and the most important operational detail (ordering) is placed early.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 14-parameter batch upload tool with no output schema, the description covers the essential operational semantics: what to pass, how to order it, what not to pass, and when to use it. The only minor gap is that it doesn't describe the return value or success/failure behavior, but with no output schema and the annotations covering safety, this is a minor omission. The description is complete enough for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 14 parameters. The description adds critical cross-parameter semantics: the ordering relationship between files[] and image_file_1..10, and the rule that image_file_N should be used when the matching item has no image_url. It also clarifies that files[] holds metadata while image_file_N holds the actual file references. This is meaningful value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Batch save'), a clear resource ('reference images from chat attachments into the Files library'), and explicitly distinguishes the tool from related upload tools by excluding garments and avatars. It also names the sibling tools it is not (upload_garment_from_chat_file, upload_avatar_from_chat_file) implicitly through the exclusion clause.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use this tool ('Use for mood boards, backgrounds, and other reference images') and when not to use it ('not garments or avatars'). It also provides critical usage instructions: keep metadata in files[] and pass top-level image_file_1, image_file_2, etc. in the same order, and warns against base64 or local paths. This is explicit routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

save_templateSave TemplateA
Destructive
Inspect

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. Templates are single-generation presets. Use Production Workflows in the Automation workspace for reusable multi-step generation. Legacy batch Templates are read-only history and cannot be created, edited, or imported.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesTemplate name
payloadYesVersioned template payload containing canonical generation commands
descriptionNoOptional sentence explaining when to use the template
template_idNoTemplate ID when replacing an existing template
catalog_scopeNoTemplate catalog scope: library or owner_onlylibrary
template_kindYesTemplate kind: generation_preset. Legacy batch_workflow writes are retired.
expected_revisionNoCurrent revision when replacing an existing template; omit for create

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, and the description adds genuinely non-obvious behavior beyond that: 'updates are complete replacements' (full overwrite, not patch), the expected_revision concurrency requirement, and the fact that it 'persists the template and does not generate images.' No contradiction with annotations; the only unstated behaviors are revision-conflict handling and authorization requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five dense sentences with the primary purpose front-loaded. Each sentence earns its place: create/replace semantics, complete-replacement behavior, persistence and non-generation, single-generation scope, and routing to alternatives. Slightly long but zero redundancy with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a create/replace tool with a fully self-documenting schema (100% description coverage) and destructive hint already set, the description covers the critical decision layer: when to use, what the payload must be, what the operation does and does not do, and where the alternatives lie. Remaining gaps are minor — no mention of revision-conflict error behavior or return value, but no output schema exists and these are secondary for a save operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds usage-level meaning by pairing template_id with expected_revision in the replacement path and by framing the payload contract — 'Send typed GenerationCommand objects; updates are complete replacements' — which tells the agent the payload is structured and the operation is wholesale, not incremental.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource pair — 'Create a canonical company template, or replace one by passing template_id with expected_revision' — and further disambiguates from image-generation siblings by stating it 'does not generate images,' and from legacy templates by declaring them read-only history. An agent can distinguish this tool from list_templates, get_template, delete_template, and generation tools without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when/when-not guidance with named alternatives: single-generation presets belong here; 'Use Production Workflows in the Automation workspace for reusable multi-step generation'; and 'Legacy batch Templates are read-only history and cannot be created, edited, or imported.' This is the strongest form of usage guidance — explicit exclusions plus alternative tooling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_uwear_librarySearch LibraryA
Read-onlyIdempotent
Inspect

Universal hybrid retrieval across the user's visible Uwear library: garments, avatars/models, locations, ArtDirections, uploaded files, and generation results. This is a finder, not a recommender. Use short keyword queries (2 to 5 words), one concept per call, or an exact name/SKU/ID. Every word must match for lexical results; long sentences can return no lexical matches. A query describing one garment finds that garment, not complementary garments. Vector results stay close to the best match. Use this before opening the picker, 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 current lexical metadata with maintained vector retrieval. Interactive searches do not refresh the index. indexed_count is always 0 here; it is not index coverage.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of hybrid matches to return
queryYesShort keyword query: 2 to 5 words, one concept per call, or an exact name/SKU/ID. Every word must match for lexical results, so long sentences can return no lexical matches. Describing a garment finds that garment, not pieces to pair with it.
item_typesNoOptional item types to search. Omit to search clothing, avatars/models, locations, art directions, uploaded files, and generation results.
refresh_indexNoDeprecated compatibility input. No index refresh is performed, even when true. Search uses the maintained index and current lexical metadata. Leave false.
exclude_clothing_item_idsNoExclude these garment IDs after ranking and before the result limit; other item types are unaffected.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description discloses important behaviors: lexical matching requires every word to match, vector results stay close to the best match, interactive searches do not refresh the index, and indexed_count is always 0. It also states the shape of returned selection data, which matters because no output schema is present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but dense, front-loading the core purpose and usage before edge-case caveats. Almost every sentence earns its place, though the indexed_count caveat and repeated querying guidance push it toward the longer end of what is ideal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because there is no output schema, the description compensates by explaining that it returns stable typed IDs, ids_by_type, detail_tool/detail_arguments, and selection hints, and by explaining how to use art_direction_id in briefs. It covers query constraints, index behavior, and sibling routing, leaving no critical gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by providing concrete example queries ('SKU 42', 'urban art direction', 'summer denim') and clarifying query formulation behavior beyond the schema's phrasing, such as the one-concept-per-call rule and the exact-name/SKU/ID fallback.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: universal hybrid retrieval across the user's visible Uwear library, and enumerates all covered item types. It also explicitly disambiguates from recommendation tools by saying 'This is a finder, not a recommender' and from outfit workflows by routing to list_outfits/propose_outfits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete when-to-use guidance: short 2-5 word queries, one concept per call, exact name/SKU/ID or before opening the picker, with examples. It names alternatives for saved outfits, instructing the agent to retrieve garments first and then call list_outfits or propose_outfits, which makes tool selection explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

submit_uwear_feedbackSubmit Uwear FeedbackA
Idempotent
Inspect

Submit a bug report or feature request to Uwear and return a private receipt. This creates a support record and can notify Uwear staff. Call it only when the user explicitly asks to submit, send, or report feedback, or after they confirm the exact summary. Never submit automatically because an error occurred, and never include the full conversation, credentials, secrets, raw provider payloads, or private URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesThe report the user explicitly approved. Include useful reproduction details, but never add secrets, credentials, full conversation history, raw provider payloads, or private URLs.
subjectNoShort summary of the confirmed report.
request_idYesStable unique ID for this submission. Reuse the same value only when retrying the same report.
feedback_typeYesUse bug_report for broken behavior or feature_request for an idea or improvement.
related_generation_idNoOptional Uwear generation ID directly related to the report.
related_generation_result_idNoOptional Uwear generation-result ID directly related to the report.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses important side effects beyond annotations: 'This creates a support record and can notify Uwear staff' and 'return a private receipt.' It also adds privacy boundaries (no credentials, secrets, raw payloads, private URLs). Annotations are not contradicted; readOnlyHint=false aligns with 'creates a support record.'

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core purpose, followed by concise and necessary usage constraints. Every sentence adds value without redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, side effects, when to call, and content restrictions, which is comprehensive for a mutation tool with no output schema. However, it only vaguely mentions 'return a private receipt' without specifying the receipt format or further confirmation behavior, leaving slight ambiguity about the return value.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds general constraints about message content ('never include...') but does not provide additional per-parameter meaning beyond the schema's own descriptions. It does not compensate significantly for any coverage gap, but none exists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Submit a bug report or feature request to Uwear and return a private receipt,' which is a specific verb+resource combination and clearly distinguishes this tool from siblings like get_art_direction or create_tag. It also mentions the return behavior, adding useful scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: 'Call it only when the user explicitly asks to submit, send, or report feedback, or after they confirm the exact summary.' It also provides clear when-not-to-use rules: 'Never submit automatically because an error occurred' and forbids including sensitive data. This is thorough and preempts misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_art_directionUpdate Art DirectionA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoUpdated ArtDirection name
art_direction_idYesThe ArtDirection ID to update
content_markdownNoUpdated complete ArtDirection markdown. If editing directly, every reusable alternative that should rotate across generations must live under `## Variation Controls` as `###` controls with `A. Option` lines; do not leave selectable worlds, pose families, or shot-role plans only in prose.
reference_image_attachmentsNoReplacement authoring reference image attachments. These are for iterating the markdown only, not generation-time references.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructiveHint=true, and the description adds valuable context beyond that: system ArtDirections are read-only, and the Variation Controls parser contract must be preserved when editing markdown. This enriches the behavioral profile without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences, each serving a distinct purpose: what the tool does, a critical usage constraint, and the parser-contract rule. No filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers key operational risks (system read-only, markdown parser) and important parameter semantics. However, it does not clarify whether partial updates are allowed (e.g., omitting name leaves it unchanged) or describe the response shape, which is a minor completeness gap given the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents all parameters, so baseline is 3. The description adds meaningful semantics for content_markdown by specifying the exact structure required (## Variation Controls, ### controls, A. Option lines), which goes beyond the schema's general guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Update') and the specific resource ('company ArtDirection'), immediately distinguishing it from create, get, list, or duplicate sibling tools. The additional note about System ArtDirections being read-only further clarifies its target scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear when-not: system ArtDirections are read-only, so this tool is only for company ArtDirections. It also provides context for when editing markdown directly, but does not explicitly name alternatives like create_art_direction or get_art_direction, so it lacks full alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_briefRevise BriefAInspect

Replace the visible Uwear BriefProposal with a complete canonical command list. Edit commands[].input directly using the MCP-safe 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. Webhook callback configuration is API-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandsYesCanonical generation commands. Each command contains the MCP-safe GenerationIntent fields and a durable source reference. Write each input.prompt as a compact positive scene description (setting, lighting, mood, camera, pose — for video, motion and camera movement); without art_direction_id the prompt is the entire creative direction, so give it the full scene. The attached garment/avatar/reference images carry product appearance, so never pad prompts with restated garment construction details, product-fidelity warnings, or negative 'do not' instruction blocks; styling intent (fit, tuck, drape) is fine. For video commands, attach available full back or side garment assets that the camera may reveal through input.reference_attachments when capacity permits. Do not combine reference_attachments with img_ref_urls; uploaded garment assets are not attached automatically. Webhook callback configuration is API-only.
creative_contextNoRequired 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 direction across the photoshoot, e.g. 'urban summer editorial', 'standard grey e-commerce', or 'sporty studio catalog'. Per-look prompts may differ for garment details, pose, framing, or avatar, but should feel part of the same shoot unless the user explicitly asks for multiple art directions, split concepts, A/B routes, or varied campaign directions. The assistant should explain this art direction to the user after proposing the brief and ask if they want changes.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses replacement-not-merge behavior, the requirement to preserve every unchanged field and durable source, the capacity constraints against mixing reference_attachments with img_ref_urls, and the API-only nature of webhook configuration. These are genuinely useful behavioral facts an agent cannot infer from annotations or schema alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action is front-loaded and each following sentence earns its place — editing mechanism, replacement semantics, capacity remediation, and the creative_context requirement are all operationally relevant. It is denser than strictly necessary, but the tool's behavioral complexity justifies the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the rich schema (which already states the no-immediate-execution semantics) and annotations, the description covers the essential invocation facts: what is replaced, how to structure edits, and when to include creative_context. A minor gap is that it never hints at the return value or a follow-up verification step such as get_brief, but nothing critical for a correct call is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the commands array's nested GenerationIntent and creative_context already richly documented (art direction guidance, prompt writing rules, video specifics). The description largely restates schema guidance ('include updated creative_context for photoshoot rewrites') rather than adding new parameter semantics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource pair ('Replace the visible Uwear BriefProposal with a complete canonical command list') and sharpens semantics with 'This is replacement state, not a partial diff.' It clearly distinguishes the tool from siblings like propose_brief or confirm_brief by targeting the visible brief's command list specifically.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides actionable context: include updated creative_context for photoshoot rewrites, apply a precise capacity-aware remediation for video_garment_view_not_attached warnings, and treat webhook callback configuration as API-only. It does not, however, name sibling alternatives or state explicit when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_garmentUpdate GarmentA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoUpdated garment name
assetsNoAsset 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.
genderNoUpdated target gender: male, female, or unisex
categoryNoUpdated canonical garment category
descriptionNoUpdated item-level garment description, or a hint to use when patching images
image_file_1NoGeneric top-level MCP file object for assets[].image_file references
image_file_2NoGeneric top-level MCP file object for assets[].image_file references
image_file_3NoGeneric top-level MCP file object for assets[].image_file references
image_file_4NoGeneric top-level MCP file object for assets[].image_file references
image_file_5NoGeneric top-level MCP file object for assets[].image_file references
image_file_6NoGeneric top-level MCP file object for assets[].image_file references
image_file_7NoGeneric top-level MCP file object for assets[].image_file references
image_file_8NoGeneric top-level MCP file object for assets[].image_file references
image_file_9NoGeneric top-level MCP file object for assets[].image_file references
image_file_10NoGeneric top-level MCP file object for assets[].image_file references
image_file_11NoGeneric top-level MCP file object for assets[].image_file references
image_file_12NoGeneric top-level MCP file object for assets[].image_file references
image_file_13NoGeneric top-level MCP file object for assets[].image_file references
image_file_14NoGeneric top-level MCP file object for assets[].image_file references
image_file_15NoGeneric top-level MCP file object for assets[].image_file references
image_file_16NoGeneric top-level MCP file object for assets[].image_file references
image_file_17NoGeneric top-level MCP file object for assets[].image_file references
image_file_18NoGeneric top-level MCP file object for assets[].image_file references
image_file_19NoGeneric top-level MCP file object for assets[].image_file references
image_file_20NoGeneric top-level MCP file object for assets[].image_file references
clothing_item_idYesThe garment ID to update

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a destructive, non-read-only operation. The description adds valuable behavioral details: front/back assets replace singleton roles, side/detail assets are added, and omitted assets are preserved. This goes beyond the annotations and clarifies mutation semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the main purpose, and each sentence carries meaningful information without fluff. No redundant or vague language.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 26 parameters, the description covers the core actions and asset semantics. It does not explain how to choose between asset_url and image_file, but that is in the schema. No output schema means return value explanation is unnecessary. Overall it is complete enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter is described. The description adds minor value for assets[] by explicitly stating role behavior, but this largely mirrors the schema's assets description (which already says front/back replace, detail added, omitted preserved). No significant extra meaning is added beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates a garment's metadata or patches its product photos, using a specific verb and resource. It also explains the asset roles (front/back/side/detail) which distinguishes it from simple create/upload tools. It does not explicitly name alternatives, but the action is clear enough to infer it operates on existing garments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when updating an existing garment, but does not provide explicit guidance on when not to use it or point to alternatives like upload_garment_from_*. It lacks exclusions or explicit context-setting for sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_montage_proposalUpdate Video MontageA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
mutedNoMute or unmute the selected clip(s).
speedNoPlayback speed multiplier.
promptNoUpdate the motion prompt for image-to-video montage items.
removeNoRemove the selected clip(s) from the proposal.
end_timeNoTrim end time in seconds for legacy trim-range updates.
clear_trimNoFor video clips, remove trim bounds and restore the full clip length in the proposal.
operationsNoOrdered montage patch operations. Preferred over the legacy flat fields below.
start_timeNoTrim start time in seconds for legacy trim-range updates.
clip_numberNo1-based clip number to update. Omit when apply_to_all=true.
video_modelNoUpdate the video model for image-to-video montage items.
apply_to_allNoApply changes to every clip in the current montage proposal.
aspect_ratioNoUpdate the montage output aspect ratio.
clip_numbersNoOptional list of 1-based clip numbers to update together.
generate_audioNoEnable or disable generated audio for image-to-video montage items.
last_frame_urlNoOptional last-frame URL for image-to-video montage items.
base_resolutionNoUpdate the montage output resolution height.
target_durationNoDesired final clip length in seconds.

TDQS

A4.1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description states the tool 'patches' and 'updates' the montage proposal, which clearly implies a mutable side effect. However, annotations declare readOnlyHint: true, which explicitly claims the operation is read-only and has no side effects. This direct contradiction makes the behavioral transparency unreliable, warranting the minimum score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence earns its place: purpose, exclusions, operation preference, ordering semantics, legacy shim, and non-execution scope. It is front-loaded with the core action and avoids repeating schema field descriptions. Structure supports quick consumption despite the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (17 parameters, many operation types), the description provides a complete mental model: what the resource is, when not to use it, how to express edits, ordering behavior, and what the tool does NOT do (export/generation). No output schema exists, so return values need not be described. The description is sufficiently complete for an agent to act on it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema coverage is 100%, so baseline is 3. The description adds meaningful value by naming and grouping all supported operations, explaining that operations are applied in order, and providing natural-language examples for `set_trim_range`. It goes beyond the schema's per-field documentation, though it does not detail every parameter individually since the schema already does.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Patch the latest MontageProposal already shown in the UI', which clearly specifies the verb (patch), resource (MontageProposal), and scope (already shown in the UI). It also explicitly contrasts with update_brief, distinguishing the tool from a likely sibling. This is a specific, well-differentiated purpose statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance ('only for an existing video montage/reel/stitched sequence proposal'), exclusions ('do not use this to modify a photoshoot brief'), and alternatives ('call update_brief instead'). It also advises preferring `operations` over flat fields, with concrete examples for `set_trim_range`. This is exemplary usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_preferencesUpdate PreferencesA
Destructive
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
add_promptNoPrompt to save: {text, category, is_favorite}
preferencesNoPreference 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 backend defaults. Prefer a generation-preset template for reproducible concrete shoot settings and a batch-workflow template for an ordered multi-shot flow. Other fields include default_aspect_ratio, preferred_camera, default_resolution, photoshoot_processes, etc. Processes format: [{name, model, camera, aspect_ratio, resolution, prompt, num_images, pipeline: [{type, editModel, editPrompt, ...}], is_default}]

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations include destructiveHint=true but the description adds valuable context: 'durable' implies persistence, and it explains the nuanced behavior of model fields ('explicit model pins: leave model fields unset for normal backend defaults'). This goes beyond the annotations by clarifying side effects and default handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise but content-rich. It front-loads the core action, then explains model-field behavior, and finally gives template vs. preference guidance. Every sentence contributes meaningful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema and few parameters, but one parameter has a complex nested format. The description covers the key decision points (template vs. preference) and the pinning semantics, making it sufficient for most usage. It could mention overwrite behavior (since destructiveHint=true), but the annotation already signals this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage with descriptive parameter details (e.g., processes format, add_prompt structure). The description adds the high-level distinction between preferences and templates, but doesn't detail individual parameters beyond what the schema provides. Baseline 3 is appropriate given strong schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Update durable user preferences, photoshoot processes, or add a prompt.' It uses a specific verb ('update') and resource, and explicitly differentiates from the sibling tool save_template by describing preferences as durable raw-text guidance rather than concrete shoot setups.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance: 'The preferred way to save how a user generates is a template (save_template)... Use preferences for durable raw-text guidance that is not a concrete shoot setup.' It also instructs when to leave model fields unset, giving clear when-to-use versus when-not-to-use direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_avatar_from_chat_fileUpload Avatars from ChatAInspect

Batch upload reusable avatars/models from person photos the user attached in chat. Each photo becomes the upper_body_front identity anchor. Keep names and optional user-given age_range, build, and height_cm in avatars[], then pass top-level image_file_1, image_file_2, etc. in the same order. Traits are never guessed. No base64, no local paths. Do not use ordinary text-to-image results 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSingle recovered avatar/model name
buildNoOptional concrete physical build. Never inferred.
avatarsNoAvatar/model metadata in the same order as image_file_1, image_file_2, etc. No base64.
age_rangeNoOptional concrete age or age range. Never inferred.
file_nameNoSingle recovered original file name
height_cmNoOptional height in centimeters. Never inferred.
image_urlNoSingle resolved download URL used by automatic opaque-file recovery.
mime_typeNoSingle recovered MIME/content type, e.g. image/png
descriptionNoSingle recovered avatar metadata
image_file_1NoHost-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_2NoHost-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_3NoHost-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_4NoHost-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_5NoHost-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_6NoHost-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_7NoHost-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_8NoHost-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_9NoHost-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_10NoHost-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.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond annotations by adding several behavioral constraints that the annotations do not convey: 'No base64, no local paths' (explicitly banning certain input formats), 'Traits are never guessed' (clarifying that optional fields like age_range and build are not inferred), and 'Keep names and optional user-given... in avatars[]' (explaining ordering behavior). The annotations provide `readOnlyHint: false`, `destructiveHint: false`, and `openWorldHint: true`, but the description adds meaningful operational context. It does not contradict any annotation, so no penalty. A minor gap: it doesn't explain what happens to existing avatars or whether uploads are idempotent, but the added context is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences, all informative, with a clear front-loaded purpose statement ('Batch upload reusable avatars/models...') and important constraints placed early. The sentence 'No base64, no local paths' is concise but conveys a critical constraint. The final sentence 'Use only when the user explicitly wants a specific or consistent person' is a usage condition, which is relevant. It is not overly long for a complex tool with 19 parameters and 10 image file slots. It could be trimmed slightly (e.g., 'Do not use ordinary text-to-image results...' is a bit verbose), but overall it earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (19 parameters, nested objects, 10 image file slots) and the rich input schema, the description covers the essential operational context: what the tool does, input format constraints, ordering semantics, and when to use it. There is no output schema, but the description doesn't explain what the tool returns; this is a minor gap because the schema is complete and the task is an upload (result visibility may be via other tools). It doesn't provide examples, but that would be excessive. The description is complete enough for correct invocation in most cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (signal), and each parameter has a detailed schema description, so baseline is 3. The description adds some semantic clarification above the schema: it explains the mapping between `avatars[]` entries and `image_file_1`, `image_file_2`, etc. ('in the same order'), which is genuinely useful and not fully explicit in the schema. However, the schema already carries most parameter meaning (e.g., 'Never inferred' on fields, 'Host-provided uploaded file reference' for image_file_*). So the description adds marginal value on top of a well-documented schema, consistent with a 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'Batch upload reusable avatars/models from person photos the user attached in chat.' It explains the resource (chat files), the action (upload as avatars), and the mapping (each photo becomes an 'upper_body_front identity anchor'). It also distinguishes itself from siblings: it explicitly contrasts with `generate_avatar` and `save_generated_avatar` ('Do not use ordinary text-to-image results...'), showing it is not the same as generating avatars. This makes it easy to tell apart from the many avatar-related sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'Use only when the user explicitly wants a specific or consistent person.' It also gives a negative directive: 'Do not use ordinary text-to-image results as an upload fallback; use generate_avatar followed by save_generated_avatar for Uwear-created avatars.' This tells the agent when to use this tool and when to use an alternative, which is exactly what the dimension asks for.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_garment_from_chat_fileUpload Garments from ChatAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
garmentsYesGarment 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_1NoTop-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_2NoTop-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_3NoTop-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_4NoTop-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_5NoTop-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_6NoTop-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_7NoTop-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_8NoTop-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_9NoTop-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_10NoTop-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_11NoTop-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_12NoTop-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_13NoTop-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_14NoTop-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_15NoTop-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_16NoTop-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_17NoTop-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_18NoTop-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_19NoTop-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_20NoTop-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.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate readOnlyHint=false, openWorldHint=true, and destructiveHint=false, so the description carries the burden of explaining side effects. It adds meaningful behavioral context: the default background removal, the processing_mode override, the rule that every asset must reference its exact top-level field name, and the constraint 'No base64 and no local paths.' It does not explicitly describe the response shape or error behavior, but it covers the most important quirks that would trip up an agent. The description does not contradict any annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense paragraph, but every sentence carries necessary information. It front-loads the core purpose and then methodically covers file-passing, asset classification rules, and alternatives. It could be improved with bullet points for the constraints, but for the complexity involved, it remains efficient and avoids redundancy. No filler words or tautological statements.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (21 parameters, nested asset structures, multiple rules), the description covers the essential operational details: file referencing, asset pairing, required full-front constraint, processing modes, and exclusions for other sources. It does not mention the maxItems=10 limit, but that is in the schema. There is no output schema, so the description could benefit from stating what a successful upload returns, but that is a minor gap. Overall, an agent has sufficient information to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema itself is highly descriptive, especially for the image_file_N fields which repeat the pairing rule. The description adds value beyond the schema by stating that actual file objects must be passed, clarifying the default for processing_mode, and adding the no-base64/no-local-path constraint. It also explains the pairing principle ('Do not rely on array position') which is not fully captured in the schema's field descriptions. This is above baseline for a schema that already covers the basics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Batch upload garments from ChatGPT attachments.' It clearly distinguishes from siblings by naming the alternatives for URLs and local files. It also notes the default processing mode, which is a specific operational detail. This leaves no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when not to use this tool: 'No image_url here; use upload_garment_from_public_url for URLs' and 'For local filesystem files, use prepare_local_garment_upload instead.' It also provides clear usage guidance on how to pass files and reference them, including the critical rule 'Do not rely on array position to pair assets.' This is exemplary routing and usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_garment_from_public_urlUpload Garments from URLAInspect

Queue a recoverable batch upload from public HTTP(S) image URLs and return an operation immediately. Retry with the exact same arguments to read the stable operation state; retries do not create another upload. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSingle garment name
assetsNoSingle garment full asset set. Use asset_kind/asset_view. Exactly one full front is required; full views are unique and detail views can repeat.
genderNoSingle garment gender: male, female, unisex
garmentsNoGarments to upload from public HTTP(S) URLs. No chat file objects and no base64.
file_nameNoSingle original file name
image_urlNoSingle public HTTP(S) front image URL
mime_typeNoSingle MIME/content type, e.g. image/png
descriptionNoSingle item-level garment description hint
back_image_urlNoSingle optional public HTTP(S) back image URL
side_image_urlNoSingle optional public HTTP(S) side image URL
processing_modeNoOptional image processing. 'background_removal' removes the background (the platform upload default); 'none' stores the image as-is. Omit to use background removal.
detail_image_urlsNoSingle optional public HTTP(S) detail image URLs

TDQS

A4/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description claims 'retries do not create another upload' and tells the caller to retry with the same arguments to read stable operation state, which is an idempotency guarantee. However, the annotations declare idempotentHint=false, directly contradicting that claim. This is an annotation contradiction that undermines the tool's behavioral contract.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five dense sentences, each earning its place: purpose, retry behavior, processing mode default, asset-set rules, and sibling routing. The most important information is front-loaded, and there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter tool with no output schema, the description covers the asynchronous queue behavior, how to poll via retry, required asset shape, and input exclusions. It does not describe the operation status/result shape or failure semantics explicitly, and the idempotency contradiction weakens overall reliability.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds useful cross-parameter semantics: processing_mode defaults to background removal, 'none' stores originals as-is, the asset set must contain exactly one full front with unique full views, and detail views can repeat. These constraints help an agent construct the assets array correctly, going slightly beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action—queue a recoverable batch upload from public HTTP(S) image URLs—and clearly distinguishes it from the chat-file and local-file sibling tools. An agent can immediately tell what resource this operates on and how it differs from upload_garment_from_chat_file and prepare_local_garment_upload.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool versus alternatives: 'For ChatGPT attachments, use upload_garment_from_chat_file instead. For local filesystem files, use prepare_local_garment_upload instead.' It also lists explicit exclusions ('No base64, chat file objects, or local paths'), leaving no ambiguity about appropriate inputs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

view_imageAnalyze ImageA
Read-onlyIdempotent
Inspect

Analyze any image using AI vision for manual inspection, debugging, visual description, or supplemental critique. Provide exactly one source: attachment_type together with attachment_id for a workspace record, generation_result_id for a Shoot Board generation, uploaded_file_id for a Files item, or image_url for a public HTTPS image. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYesWhat 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 queue_generation_result_qa and read_generation_result_qa for QA requests.
image_urlNoPublic HTTPS image URL to analyze. Optional if generation_result_id or uploaded_file_id is provided.
attachment_idNoID of the workspace record to view. Supply together with attachment_type.
attachment_typeNoType of an attached workspace record. Supply together with attachment_id, without another image source.
uploaded_file_idNoID of an uploaded file to analyze. Use for items from the Files library.
generation_result_idNoID of an existing generation result to analyze. Preferred for Shoot Board generation items because the server resolves the HTTPS image URL.

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, covering the safety profile. The description adds some useful context like the exactly-one-source constraint and that generation_result_id lets the server resolve the HTTPS image URL, but it does not add significant behavioral detail beyond what annotations and schema already convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly packed sentences front-load the purpose, then give the source constraint, then provide the critical QA exclusion. There is no fluff or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, source selection, and QA routing thoroughly, and the schema documents all six parameters well. However, since there is no output schema, the description does not state what the tool returns (e.g., a textual answer), which is a minor completeness gap for an AI-vision tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful value by explaining the mutual exclusivity of image sources and why generation_result_id is preferred for Shoot Board generation items. This goes beyond the individual schema field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Analyze any image using AI vision,' followed by concrete use cases (manual inspection, debugging, visual description, supplemental critique). It clearly distinguishes the tool from QA siblings by explicitly excluding QA workflows.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance and names the alternatives for QA requests: queue_generation_result_qa first, then read_generation_result_qa. It also clearly states the 'exactly one source' exclusivity rule, which prevents ambiguous calls.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Changedpropose_brief2 fields changed
      • addedInput schema / $defs / GenerationReferenceAttachmentInput / properties / outfit_id
        Added value: +{
        +  "default": null,
        +  "description": "Outfit reference. The generation uses the front image of every garment in the outfit, as if each were attached as clothing_item.",
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedInput schema / $defs / GenerationReferenceAttachmentInput / properties / type / enum
        Previous value: -[
        -  "uploaded_file",
        -  "generation_result",
        -  "location",
        -  "avatar",
        -  "clothing_item"
        -]New value: +[
        +  "uploaded_file",
        +  "generation_result",
        +  "location",
        +  "avatar",
        +  "clothing_item",
        +  "outfit"
        +]
    • Changedsave_template2 fields changed
      • addedInput schema / $defs / GenerationReferenceAttachmentInput / properties / outfit_id
        Added value: +{
        +  "default": null,
        +  "description": "Outfit reference. The generation uses the front image of every garment in the outfit, as if each were attached as clothing_item.",
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedInput schema / $defs / GenerationReferenceAttachmentInput / properties / type / enum
        Previous value: -[
        -  "uploaded_file",
        -  "generation_result",
        -  "location",
        -  "avatar",
        -  "clothing_item"
        -]New value: +[
        +  "uploaded_file",
        +  "generation_result",
        +  "location",
        +  "avatar",
        +  "clothing_item",
        +  "outfit"
        +]
    • Changedupdate_brief2 fields changed
      • addedInput schema / $defs / GenerationReferenceAttachmentInput / properties / outfit_id
        Added value: +{
        +  "default": null,
        +  "description": "Outfit reference. The generation uses the front image of every garment in the outfit, as if each were attached as clothing_item.",
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedInput schema / $defs / GenerationReferenceAttachmentInput / properties / type / enum
        Previous value: -[
        -  "uploaded_file",
        -  "generation_result",
        -  "location",
        -  "avatar",
        -  "clothing_item"
        -]New value: +[
        +  "uploaded_file",
        +  "generation_result",
        +  "location",
        +  "avatar",
        +  "clothing_item",
        +  "outfit"
        +]
  2. 4 tool updates
    • Changedlist_garments5 fields changed
      • addedInput schema / properties / body_zone
        Added value: +{
        +  "default": null,
        +  "description": "Filter to categories in any of these body zones; OR with category when both are given.",
        +  "items": {
        +    "enum": [
        +      "upper_body",
        +      "lower_body",
        +      "full_body",
        +      "footwear",
        +      "accessory",
        +      "other"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / category / description
        Previous value: -"Filter to garments in any of these canonical categories"New value: +"Filter to garments in any of these canonical categories; OR with body_zone when both are given."
      • addedInput schema / properties / category / items / enum
        Added value: +[
        +  "activewear",
        +  "baby_and_childrens_clothing",
        +  "blouses",
        +  "bodysuits",
        +  "cardigans",
        +  "corset_tops",
        +  "hoodies",
        +  "overshirts",
        +  "polos",
        +  "shirts",
        +  "sweaters",
        +  "sweatshirts",
        +  "t_shirts",
        +  "tank_tops",
        +  "tunics",
        +  "dresses",
        +  "lingerie",
        +  "maternity_clothing",
        +  "mens_undergarments",
        +  "one_pieces",
        +  "outerwear",
        +  "outfit_sets",
        +  "pants",
        +  "shorts",
        +  "skirts",
        +  "skorts",
        +  "sleepwear_and_loungewear",
        +  "socks",
        +  "suits",
        +  "swimwear",
        +  "traditional_and_ceremonial_clothing",
        +  "uniforms_and_workwear",
        +  "wedding_and_bridal_party_dresses",
        +  "clothing_accessories",
        +  "costumes_and_accessories",
        +  "handbag_and_wallet_accessories",
        +  "handbags_wallets_and_cases",
        +  "jewelry",
        +  "shoe_accessories",
        +  "shoes",
        +  "other"
        +]
      • addedInput schema / properties / exclude_clothing_item_ids
        Added value: +{
        +  "default": null,
        +  "description": "Exclude these garment IDs, for example the attached garment.",
        +  "items": {
        +    "type": "integer"
        +  },
        +  "maxItems": 100,
        +  "type": "array"
        +}
      • addedInput schema / properties / include_uncategorized
        Added value: +{
        +  "default": false,
        +  "description": "Also include garments with no category when category and/or body_zone filters are used.",
        +  "type": "boolean"
        +}
    • Changedsearch_uwear_library3 fields changed
      • addedInput schema / properties / exclude_clothing_item_ids
        Added value: +{
        +  "default": null,
        +  "description": "Exclude these garment IDs after ranking and before the result limit; other item types are unaffected.",
        +  "items": {
        +    "type": "integer"
        +  },
        +  "maxItems": 100,
        +  "type": "array"
        +}
      • changedInput schema / properties / query / description
        Previous value: -"Hybrid retrieval query. Handles exact names/SKUs/IDs and natural-language visual or attribute intent."New value: +"Short keyword query: 2 to 5 words, one concept per call, or an exact name/SKU/ID. Every word must match for lexical results, so long sentences can return no lexical matches. Describing a garment finds that garment, not pieces to pair with it."
      • changedInput schema / properties / refresh_index / description
        Previous value: -"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 found."New value: +"Deprecated compatibility input. No index refresh is performed, even when true. Search uses the maintained index and current lexical metadata. Leave false."
    • Changedupdate_garment1 field changed
      • addedInput schema / properties / category / enum
        Added value: +[
        +  "activewear",
        +  "baby_and_childrens_clothing",
        +  "blouses",
        +  "bodysuits",
        +  "cardigans",
        +  "corset_tops",
        +  "hoodies",
        +  "overshirts",
        +  "polos",
        +  "shirts",
        +  "sweaters",
        +  "sweatshirts",
        +  "t_shirts",
        +  "tank_tops",
        +  "tunics",
        +  "dresses",
        +  "lingerie",
        +  "maternity_clothing",
        +  "mens_undergarments",
        +  "one_pieces",
        +  "outerwear",
        +  "outfit_sets",
        +  "pants",
        +  "shorts",
        +  "skirts",
        +  "skorts",
        +  "sleepwear_and_loungewear",
        +  "socks",
        +  "suits",
        +  "swimwear",
        +  "traditional_and_ceremonial_clothing",
        +  "uniforms_and_workwear",
        +  "wedding_and_bridal_party_dresses",
        +  "clothing_accessories",
        +  "costumes_and_accessories",
        +  "handbag_and_wallet_accessories",
        +  "handbags_wallets_and_cases",
        +  "jewelry",
        +  "shoe_accessories",
        +  "shoes",
        +  "other"
        +]
    • Changedview_image2 fields changed
      • addedInput schema / properties / attachment_id
        Added value: +{
        +  "default": null,
        +  "description": "ID of the workspace record to view. Supply together with attachment_type.",
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / attachment_type
        Added value: +{
        +  "default": null,
        +  "description": "Type of an attached workspace record. Supply together with attachment_id, without another image source.",
        +  "enum": [
        +    "uploaded_file",
        +    "generation_result",
        +    "clothing_item",
        +    "outfit"
        +  ],
        +  "type": "string"
        +}
  3. 6 tool updates
    • Removedcreate_credit_checkout_session
    • Removedmcp_create_credit_checkout_session
    • Changedmcp_generate_clip1 field changed
      • changedInput schema / properties / generate_audio / description
        Previous value: -"Whether to generate audio with the video"New value: +"Include audio in the delivered video. False delivers a silent file; fixed-audio providers are muted after generation at the same credits."
    • Changedpropose_brief1 field changed
      • addedInput schema / $defs / GenerationIntent / properties / generate_audio / description
        Added value: +"Include audio in the delivered video. False delivers a file with no audio stream; fixed-audio providers are muted after generation, without reducing native-generation credits."
    • Changedsave_template1 field changed
      • addedInput schema / $defs / GenerationIntent / properties / generate_audio / description
        Added value: +"Include audio in the delivered video. False delivers a file with no audio stream; fixed-audio providers are muted after generation, without reducing native-generation credits."
    • Changedupdate_brief1 field changed
      • addedInput schema / $defs / GenerationIntent / properties / generate_audio / description
        Added value: +"Include audio in the delivered video. False delivers a file with no audio stream; fixed-audio providers are muted after generation, without reducing native-generation credits."
  4. 3 tool updates
    • Changedget_template1 field changed
      • addedInput schema / $defs / TemplateKind / description
        Added value: +"generation_preset is writable; batch_workflow is retained read-only history."
    • Changedlist_templates2 fields changed
      • addedInput schema / $defs / TemplateKind / description
        Added value: +"generation_preset is writable; batch_workflow is retained read-only history."
      • changedInput schema / properties / template_kind / description
        Previous value: -"Filter by generation_preset or batch_workflow"New value: +"Filter generation presets or read-only historical batch_workflow records"
    • Changedsave_template2 fields changed
      • addedInput schema / $defs / TemplateKind / description
        Added value: +"generation_preset is writable; batch_workflow is retained read-only history."
      • changedInput schema / properties / template_kind / description
        Previous value: -"Template kind: generation_preset or batch_workflow"New value: +"Template kind: generation_preset. Legacy batch_workflow writes are retired."
  5. 2 tool updates
    • Addedcopy_template_to_generate_node_config
    • Changedgenerate_avatar1 field changed
      • addedInput schema / properties / expression
        Added value: +{
        +  "default": null,
        +  "description": "Exact expression instruction for a supported reference view. Replaces the configured neutral expression default.",
        +  "maxLength": 500,
        +  "type": "string"
        +}
  6. 9 tool updates
    • Addedapply_backdrop
    • Addedget_connection_identity
    • Addedget_outfit
    • Changedlist_garments1 field changed
      • addedInput schema / properties / category
        Added value: +{
        +  "default": null,
        +  "description": "Filter to garments in any of these canonical categories",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedlist_outfits2 fields changed
      • changedInput schema / properties / sort / description
        Previous value: -"Sort: 'field:direction'. Default: created_at:desc"New value: +"Sort: 'field:direction'. Use 'latest_generation_at:desc' to surface recently generated outfits. Default: created_at:desc"
      • addedInput schema / properties / source
        Added value: +{
        +  "default": null,
        +  "description": "Filter by outfit source.",
        +  "enum": [
        +    "manual",
        +    "auto",
        +    "proposed"
        +  ],
        +  "type": "string"
        +}
    • Changedpropose_brief2 fields changed
      • addedInput schema / $defs / GenerationIntent / properties / audio_ref_urls
        Added value: +{
        +  "default": null,
        +  "description": "Public audio URLs supplied as model references. Only models that declare a positive max_reference_audio capability accept them.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / $defs / GenerationIntent / properties / video_ref_urls
        Added value: +{
        +  "default": null,
        +  "description": "Public video URLs supplied as model references. Only models that declare a positive max_reference_videos capability accept them.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedsave_template2 fields changed
      • addedInput schema / $defs / GenerationIntent / properties / audio_ref_urls
        Added value: +{
        +  "default": null,
        +  "description": "Public audio URLs supplied as model references. Only models that declare a positive max_reference_audio capability accept them.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / $defs / GenerationIntent / properties / video_ref_urls
        Added value: +{
        +  "default": null,
        +  "description": "Public video URLs supplied as model references. Only models that declare a positive max_reference_videos capability accept them.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedupdate_brief2 fields changed
      • addedInput schema / $defs / GenerationIntent / properties / audio_ref_urls
        Added value: +{
        +  "default": null,
        +  "description": "Public audio URLs supplied as model references. Only models that declare a positive max_reference_audio capability accept them.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / $defs / GenerationIntent / properties / video_ref_urls
        Added value: +{
        +  "default": null,
        +  "description": "Public video URLs supplied as model references. Only models that declare a positive max_reference_videos capability accept them.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedupdate_garment1 field changed
      • addedInput schema / properties / category
        Added value: +{
        +  "default": null,
        +  "description": "Updated canonical garment category",
        +  "type": "string"
        +}
  7. 6 tool updates
    • Changedget_generation_results3 fields changed
      • addedInput schema / properties / decision
        Added value: +{
        +  "default": null,
        +  "description": "Filter by the unified result verdict.",
        +  "enum": [
        +    "approved",
        +    "rejected",
        +    "undecided"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / decision_source
        Added value: +{
        +  "default": null,
        +  "description": "Filter by the verdict source.",
        +  "enum": [
        +    "auto",
        +    "human"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / qa_decision
        Removed value: -{
        -  "default": null,
        -  "description": "Filter by QA decision. true = accepted, false = rejected.",
        -  "type": "boolean"
        -}
    • Changedget_template3 fields changed
      • addedInput schema / properties / share_code
        Added value: +{
        +  "default": null,
        +  "description": "Public t-xxxx share code",
        +  "pattern": "^t-[a-z0-9]{4}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / template_id / default
        Added value: +null
      • removedInput schema / required
        Removed value: -[
        -  "template_id"
        -]
    • Changedlist_templates1 field changed
      • addedInput schema / properties / share_code
        Added value: +{
        +  "default": null,
        +  "description": "Return the template assigned this public t-xxxx share code",
        +  "pattern": "^t-[a-z0-9]{4}$",
        +  "type": "string"
        +}
    • Changedpropose_brief1 field changed
      • changedInput schema / $defs / GenerationIntent / properties / prompt / description
        Previous value: -"Scene brief for this shot: setting, lighting, mood, camera/framing, pose — 2-5 compact positive sentences. Without art_direction_id this prompt reaches the image model as-is and is the entire creative direction: carry the shoot's world, lighting, and atmosphere here. With art_direction_id, the saved direction carries reusable style; add only per-shot intent. Supplied garment/avatar/reference images carry product appearance: refer to them semantically ('the supplied jacket'), never by image number — the backend appends the numbered reference map at dispatch. Styling intent (fit, tuck, drape, opening state) belongs here when it matters; re-described garment construction, product-fidelity warnings, and negative 'do not ...' blocks do not — with good references they degrade output. Say what to show, not what to avoid. Video commands: describe motion and camera movement. May be empty for upscale; generation routes validate separately."New value: +"Scene brief for this shot: setting, lighting, mood, camera/framing, pose — 2-5 compact positive sentences. Without art_direction_id this prompt reaches the image model as-is and is the entire creative direction: carry the shoot's world, lighting, and atmosphere here. With art_direction_id, the saved direction carries reusable style; add only per-shot intent. Supplied garment/avatar/reference images carry product appearance: refer to them semantically ('the supplied jacket'), never by image number — the backend appends the numbered reference map at dispatch. Styling intent (fit, tuck, drape, opening state) belongs here when it matters; re-described garment construction, product-fidelity warnings, and negative 'do not ...' blocks do not — with good references they degrade output. Say what to show, not what to avoid. Video commands: describe motion and camera movement. Video does not inherit the source generation's ArtDirection; omit art_direction_id to use only the source frame and this prompt. May be empty for upscale; generation routes validate separately."
    • Changedsave_template1 field changed
      • changedInput schema / $defs / GenerationIntent / properties / prompt / description
        Previous value: -"Scene brief for this shot: setting, lighting, mood, camera/framing, pose — 2-5 compact positive sentences. Without art_direction_id this prompt reaches the image model as-is and is the entire creative direction: carry the shoot's world, lighting, and atmosphere here. With art_direction_id, the saved direction carries reusable style; add only per-shot intent. Supplied garment/avatar/reference images carry product appearance: refer to them semantically ('the supplied jacket'), never by image number — the backend appends the numbered reference map at dispatch. Styling intent (fit, tuck, drape, opening state) belongs here when it matters; re-described garment construction, product-fidelity warnings, and negative 'do not ...' blocks do not — with good references they degrade output. Say what to show, not what to avoid. Video commands: describe motion and camera movement. May be empty for upscale; generation routes validate separately."New value: +"Scene brief for this shot: setting, lighting, mood, camera/framing, pose — 2-5 compact positive sentences. Without art_direction_id this prompt reaches the image model as-is and is the entire creative direction: carry the shoot's world, lighting, and atmosphere here. With art_direction_id, the saved direction carries reusable style; add only per-shot intent. Supplied garment/avatar/reference images carry product appearance: refer to them semantically ('the supplied jacket'), never by image number — the backend appends the numbered reference map at dispatch. Styling intent (fit, tuck, drape, opening state) belongs here when it matters; re-described garment construction, product-fidelity warnings, and negative 'do not ...' blocks do not — with good references they degrade output. Say what to show, not what to avoid. Video commands: describe motion and camera movement. Video does not inherit the source generation's ArtDirection; omit art_direction_id to use only the source frame and this prompt. May be empty for upscale; generation routes validate separately."
    • Changedupdate_brief1 field changed
      • changedInput schema / $defs / GenerationIntent / properties / prompt / description
        Previous value: -"Scene brief for this shot: setting, lighting, mood, camera/framing, pose — 2-5 compact positive sentences. Without art_direction_id this prompt reaches the image model as-is and is the entire creative direction: carry the shoot's world, lighting, and atmosphere here. With art_direction_id, the saved direction carries reusable style; add only per-shot intent. Supplied garment/avatar/reference images carry product appearance: refer to them semantically ('the supplied jacket'), never by image number — the backend appends the numbered reference map at dispatch. Styling intent (fit, tuck, drape, opening state) belongs here when it matters; re-described garment construction, product-fidelity warnings, and negative 'do not ...' blocks do not — with good references they degrade output. Say what to show, not what to avoid. Video commands: describe motion and camera movement. May be empty for upscale; generation routes validate separately."New value: +"Scene brief for this shot: setting, lighting, mood, camera/framing, pose — 2-5 compact positive sentences. Without art_direction_id this prompt reaches the image model as-is and is the entire creative direction: carry the shoot's world, lighting, and atmosphere here. With art_direction_id, the saved direction carries reusable style; add only per-shot intent. Supplied garment/avatar/reference images carry product appearance: refer to them semantically ('the supplied jacket'), never by image number — the backend appends the numbered reference map at dispatch. Styling intent (fit, tuck, drape, opening state) belongs here when it matters; re-described garment construction, product-fidelity warnings, and negative 'do not ...' blocks do not — with good references they degrade output. Say what to show, not what to avoid. Video commands: describe motion and camera movement. Video does not inherit the source generation's ArtDirection; omit art_direction_id to use only the source frame and this prompt. May be empty for upscale; generation routes validate separately."
  8. 13 tool updates
    • Addedadd_avatar_reference
    • Changedauthor_art_direction3 fields changed
      • addedInput schema / $defs / ArtDirectionAuthoringSourceInput
        Added value: +{
        +  "properties": {
        +    "image_url": {
        +      "default": null,
        +      "maxLength": 2048,
        +      "type": "string"
        +    },
        +    "reference_image_attachment": {
        +      "$ref": "#/$defs/ArtDirectionReferenceImage",
        +      "default": null
        +    },
        +    "source_type": {
        +      "$ref": "#/$defs/ArtDirectionAuthoringSourceType"
        +    },
        +    "text": {
        +      "default": null,
        +      "maxLength": 50000,
        +      "type": "string"
        +    },
        +    "uploaded_file_id": {
        +      "default": null,
        +      "minimum": 1,
        +      "type": "integer"
        +    },
        +    "url": {
        +      "default": null,
        +      "maxLength": 2048,
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source_type"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / $defs / ArtDirectionAuthoringSourceType
        Added value: +{
        +  "enum": [
        +    "text",
        +    "image_url",
        +    "reference_image_attachment",
        +    "public_url",
        +    "uploaded_file",
        +    "website_crawl"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / sources
        Added value: +{
        +  "description": "Supported authoring sources such as text, public URLs, image URLs, uploaded files, or durable reference image attachments",
        +  "items": {
        +    "$ref": "#/$defs/ArtDirectionAuthoringSourceInput"
        +  },
        +  "maxItems": 50,
        +  "type": "array"
        +}
    • Addedcreate_avatar_from_references
    • Removeddownload_generation_results
    • Changedgenerate_avatar8 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / age_range / description
        Previous value: -"Optional concrete age or age range for the avatar footer."New value: +"Optional concrete age or age range. Never inferred."
      • addedInput schema / properties / avatar_id
        Added value: +{
        +  "default": null,
        +  "description": "Optional existing avatar whose anchor fixes identity for a slot view. Not required when identity_reference_urls are supplied.",
        +  "exclusiveMinimum": 0,
        +  "type": "integer"
        +}
      • changedInput schema / properties / build / description
        Previous value: -"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."New value: +"Optional concrete physical build. Never inferred."
      • addedInput schema / properties / height_cm
        Added value: +{
        +  "default": null,
        +  "description": "Optional height in centimeters. Never inferred.",
        +  "maximum": 220,
        +  "minimum": 40,
        +  "type": "integer"
        +}
      • addedInput schema / properties / identity_reference_urls
        Added value: +{
        +  "default": null,
        +  "description": "Person-image URLs that fix identity for a slot view. In a draft flow, pass the generated bust URL here before the avatar has been saved.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 5,
        +  "type": "array"
        +}
      • changedInput schema / properties / prompt / description
        Previous value: -"Description of the person to render as a reusable avatar design sheet"New value: +"Description of the person to render as a reusable avatar reference"
      • addedInput schema / properties / view
        Added value: +{
        +  "default": "upper_body_front",
        +  "description": "Reference view to generate. Defaults to the upper-body identity anchor.",
        +  "enum": [
        +    "upper_body_front",
        +    "full_body_front",
        +    "full_body_side",
        +    "full_body_back",
        +    "detail_eyes",
        +    "detail_skin"
        +  ],
        +  "type": "string"
        +}
    • Addediterate_art_direction
    • Changedpropose_brief1 field changed
      • addedInput schema / $defs / GenerationIntent / properties / last_frame_attachment
        Added value: +{
        +  "$ref": "#/$defs/GenerationReferenceAttachmentInput",
        +  "default": null,
        +  "description": "Durable reference to the photo the clip closes on, resolved to a URL at dispatch. The durable form of last_frame_url, for callers that hold an id rather than a link — a workflow wiring a step's output into a later step's last frame cannot know the URL when the graph is authored."
        +}
    • Changedsave_generated_avatar4 fields changed
      • addedInput schema / properties / additional_result_ids
        Added value: +{
        +  "default": null,
        +  "description": "Other completed generate_avatar result IDs to save into their own avatar_creator.view slots in the same avatar.",
        +  "items": {
        +    "type": "integer"
        +  },
        +  "maxItems": 5,
        +  "type": "array"
        +}
      • removedInput schema / properties / description
        Removed value: -{
        -  "additionalProperties": true,
        -  "default": null,
        -  "description": "Optional avatar metadata. If omitted, the system can analyze the image.",
        -  "type": "object"
        -}
      • removedInput schema / properties / enhance_description
        Removed value: -{
        -  "default": true,
        -  "description": "Analyze the image to create avatar metadata when description is omitted",
        -  "type": "boolean"
        -}
      • addedInput schema / properties / generation_result_id / exclusiveMinimum
        Added value: +0
    • Changedsave_template1 field changed
      • addedInput schema / $defs / GenerationIntent / properties / last_frame_attachment
        Added value: +{
        +  "$ref": "#/$defs/GenerationReferenceAttachmentInput",
        +  "default": null,
        +  "description": "Durable reference to the photo the clip closes on, resolved to a URL at dispatch. The durable form of last_frame_url, for callers that hold an id rather than a link — a workflow wiring a step's output into a later step's last frame cannot know the URL when the graph is authored."
        +}
    • Addedsubmit_uwear_feedback
    • Changedupdate_brief1 field changed
      • addedInput schema / $defs / GenerationIntent / properties / last_frame_attachment
        Added value: +{
        +  "$ref": "#/$defs/GenerationReferenceAttachmentInput",
        +  "default": null,
        +  "description": "Durable reference to the photo the clip closes on, resolved to a URL at dispatch. The durable form of last_frame_url, for callers that hold an id rather than a link — a workflow wiring a step's output into a later step's last frame cannot know the URL when the graph is authored."
        +}
    • Changedupload_avatar_from_chat_file8 fields changed
      • addedInput schema / $defs / AvatarChatFileUploadItem / additionalProperties
        Added value: +false
      • addedInput schema / $defs / AvatarChatFileUploadItem / properties / age_range
        Added value: +{
        +  "default": null,
        +  "description": "Optional concrete age or age range. Never inferred.",
        +  "maxLength": 20,
        +  "type": "string"
        +}
      • addedInput schema / $defs / AvatarChatFileUploadItem / properties / build
        Added value: +{
        +  "default": null,
        +  "description": "Optional concrete physical build. Never inferred.",
        +  "maxLength": 100,
        +  "type": "string"
        +}
      • addedInput schema / $defs / AvatarChatFileUploadItem / properties / height_cm
        Added value: +{
        +  "default": null,
        +  "description": "Optional height in centimeters. Never inferred.",
        +  "maximum": 220,
        +  "minimum": 40,
        +  "type": "integer"
        +}
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / age_range
        Added value: +{
        +  "default": null,
        +  "description": "Optional concrete age or age range. Never inferred.",
        +  "maxLength": 20,
        +  "type": "string"
        +}
      • addedInput schema / properties / build
        Added value: +{
        +  "default": null,
        +  "description": "Optional concrete physical build. Never inferred.",
        +  "maxLength": 100,
        +  "type": "string"
        +}
      • addedInput schema / properties / height_cm
        Added value: +{
        +  "default": null,
        +  "description": "Optional height in centimeters. Never inferred.",
        +  "maximum": 220,
        +  "minimum": 40,
        +  "type": "integer"
        +}
    • Changedview_image5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / generation_result_id / minimum
        Added value: +1
      • addedInput schema / properties / question / maxLength
        Added value: +4000
      • addedInput schema / properties / question / minLength
        Added value: +1
      • addedInput schema / properties / uploaded_file_id / minimum
        Added value: +1
  9. 23 tool updates
    • Removedarchive_production_workflow
    • Removedcreate_production_workflow
    • Removedcreate_production_workflow_version
    • Removedget_production_workflow
    • Removedget_production_workflow_control
    • Removedget_production_workflow_run
    • Removedget_production_workflow_version
    • Removedlist_production_workflow_runs
    • Removedlist_production_workflow_versions
    • Removedlist_production_workflows
    • Changedpropose_brief5 fields changed
      • changedInput schema / $defs / GenerationIntent / description
        Previous value: -"Caller-owned model-generation intent shared by every public adapter.\n\nAuthentication-derived identity deliberately does not belong here. REST,\nAgent, MCP, batch, and integrations all submit this exact contract; the\ncommand planner combines it with server-owned execution context later."New value: +"Caller-owned model-generation intent shared by every public adapter.\n\nAuthentication-derived identity deliberately does not belong here. REST,\nAgent, MCP, batch, and integrations all submit this exact contract; the\ncommand planner combines it with server-owned execution context later. MCP omits webhook callback configuration, which remains API-only."
      • removedInput schema / $defs / GenerationIntent / properties / webhook_events
        Removed value: -{
        -  "default": null,
        -  "items": {
        -    "enum": [
        -      "generation.completed",
        -      "generation.failed"
        -    ],
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / $defs / GenerationIntent / properties / webhook_secret
        Removed value: -{
        -  "default": null,
        -  "description": "Optional HMAC signing secret for customer callbacks.",
        -  "type": "string",
        -  "ui": {
        -    "sensitive": true
        -  }
        -}
      • removedInput schema / $defs / GenerationIntent / properties / webhook_url
        Removed value: -{
        -  "default": null,
        -  "type": "string"
        -}
      • changedInput schema / properties / commands / description
        Previous value: -"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, lighting, mood, camera, pose — for video, motion and camera movement); without art_direction_id the prompt is the entire creative direction, so give it the full scene. The attached garment/avatar/reference images carry product appearance, so never pad prompts with restated garment construction details, product-fidelity warnings, or negative 'do not' instruction blocks; styling intent (fit, tuck, drape) is fine. For video commands, attach available full back or side garment assets that the camera may reveal through input.reference_attachments when capacity permits. Do not combine reference_attachments with img_ref_urls; uploaded garment assets are not attached automatically."New value: +"Canonical generation commands. Each command contains the MCP-safe GenerationIntent fields and a durable source reference. Write each input.prompt as a compact positive scene description (setting, lighting, mood, camera, pose — for video, motion and camera movement); without art_direction_id the prompt is the entire creative direction, so give it the full scene. The attached garment/avatar/reference images carry product appearance, so never pad prompts with restated garment construction details, product-fidelity warnings, or negative 'do not' instruction blocks; styling intent (fit, tuck, drape) is fine. For video commands, attach available full back or side garment assets that the camera may reveal through input.reference_attachments when capacity permits. Do not combine reference_attachments with img_ref_urls; uploaded garment assets are not attached automatically. Webhook callback configuration is API-only."
    • Removedpublish_production_workflow_version
    • Changedsave_reference_file_from_chat_file32 fields changed
      • removedInput schema / $defs / MCPFileReference
        Removed value: -{
        -  "additionalProperties": true,
        -  "description": "Host-provided MCP file reference for user-uploaded images.",
        -  "properties": {
        -    "content_type": {
        -      "default": null,
        -      "description": "File content type, e.g. image/png",
        -      "type": "string"
        -    },
        -    "download_url": {
        -      "default": null,
        -      "description": "Temporary host-authorized download URL for this file",
        -      "type": "string"
        -    },
        -    "file_id": {
        -      "default": null,
        -      "description": "Host file ID",
        -      "type": "string"
        -    },
        -    "file_name": {
        -      "default": null,
        -      "description": "Original uploaded file name",
        -      "type": "string"
        -    },
        -    "mime_type": {
        -      "default": null,
        -      "description": "File MIME type, e.g. image/png",
        -      "type": "string"
        -    },
        -    "name": {
        -      "default": null,
        -      "description": "Original uploaded file name when the host uses name",
        -      "type": "string"
        -    },
        -    "uri": {
        -      "default": null,
        -      "description": "Host file URI when available",
        -      "type": "string"
        -    },
        -    "url": {
        -      "default": null,
        -      "description": "Temporary/public file URL when the host exposes one",
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
      • addedInput schema / $defs / OpenAIFile
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "download_url": {
        +      "type": "string"
        +    },
        +    "file_id": {
        +      "type": "string"
        +    },
        +    "file_name": {
        +      "type": "string"
        +    },
        +    "mime_type": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "download_url",
        +    "file_id"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / image_file_1 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_1 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_1 / default
        Removed value: -null
      • addedInput schema / properties / image_file_10 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_10 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_10 / default
        Removed value: -null
      • addedInput schema / properties / image_file_2 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_2 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_2 / default
        Removed value: -null
      • addedInput schema / properties / image_file_3 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_3 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_3 / default
        Removed value: -null
      • addedInput schema / properties / image_file_4 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_4 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_4 / default
        Removed value: -null
      • addedInput schema / properties / image_file_5 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_5 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_5 / default
        Removed value: -null
      • addedInput schema / properties / image_file_6 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_6 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_6 / default
        Removed value: -null
      • addedInput schema / properties / image_file_7 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_7 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_7 / default
        Removed value: -null
      • addedInput schema / properties / image_file_8 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_8 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_8 / default
        Removed value: -null
      • addedInput schema / properties / image_file_9 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_9 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_9 / default
        Removed value: -null
    • Changedsave_template4 fields changed
      • changedInput schema / $defs / GenerationIntent / description
        Previous value: -"Caller-owned model-generation intent shared by every public adapter.\n\nAuthentication-derived identity deliberately does not belong here. REST,\nAgent, MCP, batch, and integrations all submit this exact contract; the\ncommand planner combines it with server-owned execution context later."New value: +"Caller-owned model-generation intent shared by every public adapter.\n\nAuthentication-derived identity deliberately does not belong here. REST,\nAgent, MCP, batch, and integrations all submit this exact contract; the\ncommand planner combines it with server-owned execution context later. MCP omits webhook callback configuration, which remains API-only."
      • removedInput schema / $defs / GenerationIntent / properties / webhook_events
        Removed value: -{
        -  "default": null,
        -  "items": {
        -    "enum": [
        -      "generation.completed",
        -      "generation.failed"
        -    ],
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / $defs / GenerationIntent / properties / webhook_secret
        Removed value: -{
        -  "default": null,
        -  "description": "Optional HMAC signing secret for customer callbacks.",
        -  "type": "string",
        -  "ui": {
        -    "sensitive": true
        -  }
        -}
      • removedInput schema / $defs / GenerationIntent / properties / webhook_url
        Removed value: -{
        -  "default": null,
        -  "type": "string"
        -}
    • Removedstart_production_workflow_run
    • Removedstart_production_workflow_run_batch
    • Changedupdate_brief5 fields changed
      • changedInput schema / $defs / GenerationIntent / description
        Previous value: -"Caller-owned model-generation intent shared by every public adapter.\n\nAuthentication-derived identity deliberately does not belong here. REST,\nAgent, MCP, batch, and integrations all submit this exact contract; the\ncommand planner combines it with server-owned execution context later."New value: +"Caller-owned model-generation intent shared by every public adapter.\n\nAuthentication-derived identity deliberately does not belong here. REST,\nAgent, MCP, batch, and integrations all submit this exact contract; the\ncommand planner combines it with server-owned execution context later. MCP omits webhook callback configuration, which remains API-only."
      • removedInput schema / $defs / GenerationIntent / properties / webhook_events
        Removed value: -{
        -  "default": null,
        -  "items": {
        -    "enum": [
        -      "generation.completed",
        -      "generation.failed"
        -    ],
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / $defs / GenerationIntent / properties / webhook_secret
        Removed value: -{
        -  "default": null,
        -  "description": "Optional HMAC signing secret for customer callbacks.",
        -  "type": "string",
        -  "ui": {
        -    "sensitive": true
        -  }
        -}
      • removedInput schema / $defs / GenerationIntent / properties / webhook_url
        Removed value: -{
        -  "default": null,
        -  "type": "string"
        -}
      • changedInput schema / properties / commands / description
        Previous value: -"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, lighting, mood, camera, pose — for video, motion and camera movement); without art_direction_id the prompt is the entire creative direction, so give it the full scene. The attached garment/avatar/reference images carry product appearance, so never pad prompts with restated garment construction details, product-fidelity warnings, or negative 'do not' instruction blocks; styling intent (fit, tuck, drape) is fine. For video commands, attach available full back or side garment assets that the camera may reveal through input.reference_attachments when capacity permits. Do not combine reference_attachments with img_ref_urls; uploaded garment assets are not attached automatically."New value: +"Canonical generation commands. Each command contains the MCP-safe GenerationIntent fields and a durable source reference. Write each input.prompt as a compact positive scene description (setting, lighting, mood, camera, pose — for video, motion and camera movement); without art_direction_id the prompt is the entire creative direction, so give it the full scene. The attached garment/avatar/reference images carry product appearance, so never pad prompts with restated garment construction details, product-fidelity warnings, or negative 'do not' instruction blocks; styling intent (fit, tuck, drape) is fine. For video commands, attach available full back or side garment assets that the camera may reveal through input.reference_attachments when capacity permits. Do not combine reference_attachments with img_ref_urls; uploaded garment assets are not attached automatically. Webhook callback configuration is API-only."
    • Changedupdate_garment41 fields changed
      • addedInput schema / $defs / OpenAIFile
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "download_url": {
        +      "type": "string"
        +    },
        +    "file_id": {
        +      "type": "string"
        +    },
        +    "file_name": {
        +      "type": "string"
        +    },
        +    "mime_type": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "download_url",
        +    "file_id"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / image_file_1 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_1 / default
        Removed value: -null
      • addedInput schema / properties / image_file_10 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_10 / default
        Removed value: -null
      • addedInput schema / properties / image_file_11 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_11 / default
        Removed value: -null
      • addedInput schema / properties / image_file_12 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_12 / default
        Removed value: -null
      • addedInput schema / properties / image_file_13 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_13 / default
        Removed value: -null
      • addedInput schema / properties / image_file_14 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_14 / default
        Removed value: -null
      • addedInput schema / properties / image_file_15 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_15 / default
        Removed value: -null
      • addedInput schema / properties / image_file_16 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_16 / default
        Removed value: -null
      • addedInput schema / properties / image_file_17 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_17 / default
        Removed value: -null
      • addedInput schema / properties / image_file_18 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_18 / default
        Removed value: -null
      • addedInput schema / properties / image_file_19 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_19 / default
        Removed value: -null
      • addedInput schema / properties / image_file_2 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_2 / default
        Removed value: -null
      • addedInput schema / properties / image_file_20 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_20 / default
        Removed value: -null
      • addedInput schema / properties / image_file_3 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_3 / default
        Removed value: -null
      • addedInput schema / properties / image_file_4 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_4 / default
        Removed value: -null
      • addedInput schema / properties / image_file_5 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_5 / default
        Removed value: -null
      • addedInput schema / properties / image_file_6 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_6 / default
        Removed value: -null
      • addedInput schema / properties / image_file_7 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_7 / default
        Removed value: -null
      • addedInput schema / properties / image_file_8 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_8 / default
        Removed value: -null
      • addedInput schema / properties / image_file_9 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_9 / default
        Removed value: -null
    • Removedupdate_production_workflow
    • Removedupdate_production_workflow_control
    • Removedupdate_production_workflow_version
    • Changedupload_avatar_from_chat_file32 fields changed
      • removedInput schema / $defs / MCPFileReference
        Removed value: -{
        -  "additionalProperties": true,
        -  "description": "Host-provided MCP file reference for user-uploaded images.",
        -  "properties": {
        -    "content_type": {
        -      "default": null,
        -      "description": "File content type, e.g. image/png",
        -      "type": "string"
        -    },
        -    "download_url": {
        -      "default": null,
        -      "description": "Temporary host-authorized download URL for this file",
        -      "type": "string"
        -    },
        -    "file_id": {
        -      "default": null,
        -      "description": "Host file ID",
        -      "type": "string"
        -    },
        -    "file_name": {
        -      "default": null,
        -      "description": "Original uploaded file name",
        -      "type": "string"
        -    },
        -    "mime_type": {
        -      "default": null,
        -      "description": "File MIME type, e.g. image/png",
        -      "type": "string"
        -    },
        -    "name": {
        -      "default": null,
        -      "description": "Original uploaded file name when the host uses name",
        -      "type": "string"
        -    },
        -    "uri": {
        -      "default": null,
        -      "description": "Host file URI when available",
        -      "type": "string"
        -    },
        -    "url": {
        -      "default": null,
        -      "description": "Temporary/public file URL when the host exposes one",
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
      • addedInput schema / $defs / OpenAIFile
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "download_url": {
        +      "type": "string"
        +    },
        +    "file_id": {
        +      "type": "string"
        +    },
        +    "file_name": {
        +      "type": "string"
        +    },
        +    "mime_type": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "download_url",
        +    "file_id"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / image_file_1 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_1 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_1 / default
        Removed value: -null
      • addedInput schema / properties / image_file_10 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_10 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_10 / default
        Removed value: -null
      • addedInput schema / properties / image_file_2 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_2 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_2 / default
        Removed value: -null
      • addedInput schema / properties / image_file_3 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_3 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_3 / default
        Removed value: -null
      • addedInput schema / properties / image_file_4 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_4 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_4 / default
        Removed value: -null
      • addedInput schema / properties / image_file_5 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_5 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_5 / default
        Removed value: -null
      • addedInput schema / properties / image_file_6 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_6 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_6 / default
        Removed value: -null
      • addedInput schema / properties / image_file_7 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_7 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_7 / default
        Removed value: -null
      • addedInput schema / properties / image_file_8 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_8 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_8 / default
        Removed value: -null
      • addedInput schema / properties / image_file_9 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_9 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_9 / default
        Removed value: -null
    • Changedupload_garment_from_chat_file62 fields changed
      • removedInput schema / $defs / MCPFileReference
        Removed value: -{
        -  "additionalProperties": true,
        -  "description": "Host-provided MCP file reference for user-uploaded images.",
        -  "properties": {
        -    "content_type": {
        -      "default": null,
        -      "description": "File content type, e.g. image/png",
        -      "type": "string"
        -    },
        -    "download_url": {
        -      "default": null,
        -      "description": "Temporary host-authorized download URL for this file",
        -      "type": "string"
        -    },
        -    "file_id": {
        -      "default": null,
        -      "description": "Host file ID",
        -      "type": "string"
        -    },
        -    "file_name": {
        -      "default": null,
        -      "description": "Original uploaded file name",
        -      "type": "string"
        -    },
        -    "mime_type": {
        -      "default": null,
        -      "description": "File MIME type, e.g. image/png",
        -      "type": "string"
        -    },
        -    "name": {
        -      "default": null,
        -      "description": "Original uploaded file name when the host uses name",
        -      "type": "string"
        -    },
        -    "uri": {
        -      "default": null,
        -      "description": "Host file URI when available",
        -      "type": "string"
        -    },
        -    "url": {
        -      "default": null,
        -      "description": "Temporary/public file URL when the host exposes one",
        -      "type": "string"
        -    }
        -  },
        -  "type": "object"
        -}
      • addedInput schema / $defs / OpenAIFile
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "download_url": {
        +      "type": "string"
        +    },
        +    "file_id": {
        +      "type": "string"
        +    },
        +    "file_name": {
        +      "type": "string"
        +    },
        +    "mime_type": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "download_url",
        +    "file_id"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / image_file_1 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_1 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_1 / default
        Removed value: -null
      • addedInput schema / properties / image_file_10 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_10 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_10 / default
        Removed value: -null
      • addedInput schema / properties / image_file_11 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_11 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_11 / default
        Removed value: -null
      • addedInput schema / properties / image_file_12 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_12 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_12 / default
        Removed value: -null
      • addedInput schema / properties / image_file_13 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_13 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_13 / default
        Removed value: -null
      • addedInput schema / properties / image_file_14 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_14 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_14 / default
        Removed value: -null
      • addedInput schema / properties / image_file_15 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_15 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_15 / default
        Removed value: -null
      • addedInput schema / properties / image_file_16 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_16 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_16 / default
        Removed value: -null
      • addedInput schema / properties / image_file_17 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_17 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_17 / default
        Removed value: -null
      • addedInput schema / properties / image_file_18 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_18 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_18 / default
        Removed value: -null
      • addedInput schema / properties / image_file_19 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_19 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_19 / default
        Removed value: -null
      • addedInput schema / properties / image_file_2 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_2 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_2 / default
        Removed value: -null
      • addedInput schema / properties / image_file_20 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_20 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_20 / default
        Removed value: -null
      • addedInput schema / properties / image_file_3 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_3 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_3 / default
        Removed value: -null
      • addedInput schema / properties / image_file_4 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_4 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_4 / default
        Removed value: -null
      • addedInput schema / properties / image_file_5 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_5 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_5 / default
        Removed value: -null
      • addedInput schema / properties / image_file_6 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_6 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_6 / default
        Removed value: -null
      • addedInput schema / properties / image_file_7 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_7 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_7 / default
        Removed value: -null
      • addedInput schema / properties / image_file_8 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_8 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_8 / default
        Removed value: -null
      • addedInput schema / properties / image_file_9 / $ref
        Added value: +"#/$defs/OpenAIFile"
      • removedInput schema / properties / image_file_9 / anyOf
        Removed value: -[
        -  {
        -    "$ref": "#/$defs/MCPFileReference"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • removedInput schema / properties / image_file_9 / default
        Removed value: -null
  10. 21 tool updates
    • Changedarchive_production_workflow14 fields changed
      • removedInput schema / properties / workflow_id / title
        Removed value: -"Workflow Id"
      • removedInput schema / title
        Removed value: -"WorkflowIdentityInput"
      • removedOutput schema / properties / archived / title
        Removed value: -"Archived"
      • removedOutput schema / properties / company_id / title
        Removed value: -"Company Id"
      • removedOutput schema / properties / created_at / title
        Removed value: -"Created At"
      • removedOutput schema / properties / created_by_profile_id / title
        Removed value: -"Created By Profile Id"
      • removedOutput schema / properties / enabled / title
        Removed value: -"Enabled"
      • removedOutput schema / properties / enabled_version_id / title
        Removed value: -"Enabled Version Id"
      • removedOutput schema / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / properties / name / title
        Removed value: -"Name"
      • removedOutput schema / properties / run_time_slot_kinds / title
        Removed value: -"Run Time Slot Kinds"
      • removedOutput schema / properties / updated_at / title
        Removed value: -"Updated At"
      • removedOutput schema / properties / updated_by_profile_id / title
        Removed value: -"Updated By Profile Id"
      • removedOutput schema / title
        Removed value: -"WorkflowResourceRead"
    • Changedcreate_production_workflow16 fields changed
      • removedInput schema / $defs / WorkflowCreate / properties / enabled / title
        Removed value: -"Enabled"
      • removedInput schema / $defs / WorkflowCreate / properties / name / title
        Removed value: -"Name"
      • removedInput schema / $defs / WorkflowCreate / title
        Removed value: -"WorkflowCreate"
      • removedInput schema / title
        Removed value: -"CreateWorkflowInput"
      • removedOutput schema / properties / archived / title
        Removed value: -"Archived"
      • removedOutput schema / properties / company_id / title
        Removed value: -"Company Id"
      • removedOutput schema / properties / created_at / title
        Removed value: -"Created At"
      • removedOutput schema / properties / created_by_profile_id / title
        Removed value: -"Created By Profile Id"
      • removedOutput schema / properties / enabled / title
        Removed value: -"Enabled"
      • removedOutput schema / properties / enabled_version_id / title
        Removed value: -"Enabled Version Id"
      • removedOutput schema / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / properties / name / title
        Removed value: -"Name"
      • removedOutput schema / properties / run_time_slot_kinds / title
        Removed value: -"Run Time Slot Kinds"
      • removedOutput schema / properties / updated_at / title
        Removed value: -"Updated At"
      • removedOutput schema / properties / updated_by_profile_id / title
        Removed value: -"Updated By Profile Id"
      • removedOutput schema / title
        Removed value: -"WorkflowResourceRead"
    • Changedcreate_production_workflow_version8 fields changed
      • removedInput schema / $defs
        Removed value: -{
        -  "AiModelInputConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "model_slug": {
        -        "anyOf": [
        -          {
        -            "maxLength": 100,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Model Slug"
        -      }
        -    },
        -    "title": "AiModelInputConfig",
        -    "type": "object"
        -  },
        -  "AiModelInputNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/AiModelInputConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "input.ai_model",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "type",
        -      "config"
        -    ],
        -    "title": "AiModelInputNodeInput",
        -    "type": "object"
        -  },
        -  "ArtDirectionInputConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "art_direction_id": {
        -        "anyOf": [
        -          {
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Art Direction Id"
        -      },
        -      "ask_at_run_time": {
        -        "default": false,
        -        "title": "Ask At Run Time",
        -        "type": "boolean"
        -      }
        -    },
        -    "title": "ArtDirectionInputConfig",
        -    "type": "object"
        -  },
        -  "ArtDirectionInputNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/ArtDirectionInputConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "input.art_direction",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "type",
        -      "config"
        -    ],
        -    "title": "ArtDirectionInputNodeInput",
        -    "type": "object"
        -  },
        -  "AvatarInputConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "ask_at_run_time": {
        -        "default": false,
        -        "title": "Ask At Run Time",
        -        "type": "boolean"
        -      },
        -      "avatar_id": {
        -        "anyOf": [
        -          {
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Avatar Id"
        -      }
        -    },
        -    "title": "AvatarInputConfig",
        -    "type": "object"
        -  },
        -  "AvatarInputNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/AvatarInputConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "input.avatar",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "type",
        -      "config"
        -    ],
        -    "title": "AvatarInputNodeInput",
        -    "type": "object"
        -  },
        -  "BranchNodeConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "cases": {
        -        "additionalProperties": {
        -          "enum": [
        -            "accepted",
        -            "rejected",
        -            "error"
        -          ],
        -          "type": "string"
        -        },
        -        "minProperties": 1,
        -        "propertyNames": {
        -          "enum": [
        -            "accepted",
        -            "rejected",
        -            "error"
        -          ]
        -        },
        -        "title": "Cases",
        -        "type": "object"
        -      },
        -      "condition_type": {
        -        "const": "qa_decision",
        -        "title": "Condition Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "condition_type",
        -      "cases"
        -    ],
        -    "title": "BranchNodeConfig",
        -    "type": "object"
        -  },
        -  "BranchNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/BranchNodeConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "infrastructure_retry": {
        -        "$ref": "#/$defs/InfrastructureRetryInput"
        -      },
        -      "readiness": {
        -        "$ref": "#/$defs/ReadinessInput"
        -      },
        -      "type": {
        -        "const": "branch",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "readiness",
        -      "infrastructure_retry",
        -      "type",
        -      "config"
        -    ],
        -    "title": "BranchNodeInput",
        -    "type": "object"
        -  },
        -  "ClothingInputConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "ask_at_run_time": {
        -        "default": false,
        -        "title": "Ask At Run Time",
        -        "type": "boolean"
        -      },
        -      "clothing_item_id": {
        -        "anyOf": [
        -          {
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Clothing Item Id"
        -      }
        -    },
        -    "title": "ClothingInputConfig",
        -    "type": "object"
        -  },
        -  "ClothingInputNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/ClothingInputConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "input.clothing",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "type",
        -      "config"
        -    ],
        -    "title": "ClothingInputNodeInput",
        -    "type": "object"
        -  },
        -  "DeliverTagDestination": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "tag_ids": {
        -        "items": {
        -          "type": "integer"
        -        },
        -        "maxItems": 50,
        -        "minItems": 1,
        -        "title": "Tag Ids",
        -        "type": "array"
        -      },
        -      "type": {
        -        "const": "tag",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "tag_ids"
        -    ],
        -    "title": "DeliverTagDestination",
        -    "type": "object"
        -  },
        -  "DeliverWebhookDestination": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "event_type": {
        -        "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -        "title": "Event Type",
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "webhook",
        -        "title": "Type",
        -        "type": "string"
        -      },
        -      "webhook_id": {
        -        "format": "uuid",
        -        "title": "Webhook Id",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "webhook_id",
        -      "event_type"
        -    ],
        -    "title": "DeliverWebhookDestination",
        -    "type": "object"
        -  },
        -  "EdgeBindingInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "mode": {
        -        "enum": [
        -          "single",
        -          "collect"
        -        ],
        -        "title": "Mode",
        -        "type": "string"
        -      },
        -      "required": {
        -        "title": "Required",
        -        "type": "boolean"
        -      },
        -      "role": {
        -        "anyOf": [
        -          {
        -            "enum": [
        -              "background",
        -              "style"
        -            ],
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Role"
        -      }
        -    },
        -    "required": [
        -      "mode",
        -      "required"
        -    ],
        -    "title": "EdgeBindingInput",
        -    "type": "object"
        -  },
        -  "EdgeEndpointInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "node_id": {
        -        "format": "uuid",
        -        "title": "Node Id",
        -        "type": "string"
        -      },
        -      "port": {
        -        "maxLength": 100,
        -        "minLength": 1,
        -        "title": "Port",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "node_id",
        -      "port"
        -    ],
        -    "title": "EdgeEndpointInput",
        -    "type": "object"
        -  },
        -  "GenerateNodeConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "model_slug": {
        -        "maxLength": 100,
        -        "minLength": 1,
        -        "title": "Model Slug",
        -        "type": "string"
        -      },
        -      "parameters": {
        -        "additionalProperties": true,
        -        "title": "Parameters",
        -        "type": "object"
        -      },
        -      "variant": {
        -        "enum": [
        -          "generate",
        -          "edit",
        -          "text_to_image"
        -        ],
        -        "title": "Variant",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "variant",
        -      "model_slug",
        -      "parameters"
        -    ],
        -    "title": "GenerateNodeConfig",
        -    "type": "object"
        -  },
        -  "GenerateNodeConfigV1_2": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "model_slug": {
        -        "maxLength": 100,
        -        "minLength": 1,
        -        "title": "Model Slug",
        -        "type": "string"
        -      },
        -      "parameters": {
        -        "additionalProperties": true,
        -        "title": "Parameters",
        -        "type": "object"
        -      },
        -      "variant": {
        -        "enum": [
        -          "generate",
        -          "edit",
        -          "text_to_image",
        -          "video"
        -        ],
        -        "title": "Variant",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "variant",
        -      "model_slug",
        -      "parameters"
        -    ],
        -    "title": "GenerateNodeConfigV1_2",
        -    "type": "object"
        -  },
        -  "GenerateNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "anyOf": [
        -          {
        -            "$ref": "#/$defs/GenerateNodeConfig"
        -          },
        -          {
        -            "$ref": "#/$defs/GenerateNodeConfigV1_2"
        -          }
        -        ],
        -        "title": "Config"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "infrastructure_retry": {
        -        "$ref": "#/$defs/InfrastructureRetryInput"
        -      },
        -      "readiness": {
        -        "$ref": "#/$defs/ReadinessInput"
        -      },
        -      "type": {
        -        "const": "generate",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "readiness",
        -      "infrastructure_retry",
        -      "type",
        -      "config"
        -    ],
        -    "title": "GenerateNodeInput",
        -    "type": "object"
        -  },
        -  "ImageInputConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "ask_at_run_time": {
        -        "default": false,
        -        "title": "Ask At Run Time",
        -        "type": "boolean"
        -      },
        -      "generation_result_id": {
        -        "anyOf": [
        -          {
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Generation Result Id"
        -      }
        -    },
        -    "title": "ImageInputConfig",
        -    "type": "object"
        -  },
        -  "ImageInputNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/ImageInputConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "input.image",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "type",
        -      "config"
        -    ],
        -    "title": "ImageInputNodeInput",
        -    "type": "object"
        -  },
        -  "InfrastructureRetryInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "initial_backoff_seconds": {
        -        "maximum": 86400,
        -        "minimum": 0,
        -        "title": "Initial Backoff Seconds",
        -        "type": "integer"
        -      },
        -      "max_attempts": {
        -        "maximum": 20,
        -        "minimum": 1,
        -        "title": "Max Attempts",
        -        "type": "integer"
        -      },
        -      "max_backoff_seconds": {
        -        "maximum": 86400,
        -        "minimum": 0,
        -        "title": "Max Backoff Seconds",
        -        "type": "integer"
        -      }
        -    },
        -    "required": [
        -      "max_attempts",
        -      "initial_backoff_seconds",
        -      "max_backoff_seconds"
        -    ],
        -    "title": "InfrastructureRetryInput",
        -    "type": "object"
        -  },
        -  "LocationInputConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "ask_at_run_time": {
        -        "default": false,
        -        "title": "Ask At Run Time",
        -        "type": "boolean"
        -      },
        -      "location_id": {
        -        "anyOf": [
        -          {
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Location Id"
        -      }
        -    },
        -    "title": "LocationInputConfig",
        -    "type": "object"
        -  },
        -  "LocationInputNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/LocationInputConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "input.location",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "type",
        -      "config"
        -    ],
        -    "title": "LocationInputNodeInput",
        -    "type": "object"
        -  },
        -  "NotifyNodeConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "event_type": {
        -        "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -        "title": "Event Type",
        -        "type": "string"
        -      },
        -      "webhook_id": {
        -        "format": "uuid",
        -        "title": "Webhook Id",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "webhook_id",
        -      "event_type"
        -    ],
        -    "title": "NotifyNodeConfig",
        -    "type": "object"
        -  },
        -  "NotifyNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/NotifyNodeConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "infrastructure_retry": {
        -        "$ref": "#/$defs/InfrastructureRetryInput"
        -      },
        -      "readiness": {
        -        "$ref": "#/$defs/ReadinessInput"
        -      },
        -      "type": {
        -        "const": "notify",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "readiness",
        -      "infrastructure_retry",
        -      "type",
        -      "config"
        -    ],
        -    "title": "NotifyNodeInput",
        -    "type": "object"
        -  },
        -  "OutputNodeConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "projection": {
        -        "items": {
        -          "enum": [
        -            "artifacts",
        -            "qa",
        -            "billing",
        -            "provenance"
        -          ],
        -          "type": "string"
        -        },
        -        "minItems": 1,
        -        "title": "Projection",
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "projection"
        -    ],
        -    "title": "OutputNodeConfig",
        -    "type": "object"
        -  },
        -  "OutputNodeConfigV1_2": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "projection": {
        -        "items": {
        -          "enum": [
        -            "artifacts",
        -            "qa",
        -            "billing",
        -            "provenance"
        -          ],
        -          "type": "string"
        -        },
        -        "minItems": 1,
        -        "title": "Projection",
        -        "type": "array"
        -      }
        -    },
        -    "title": "OutputNodeConfigV1_2",
        -    "type": "object"
        -  },
        -  "OutputNodeConfigV1_3": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "destinations": {
        -        "items": {
        -          "discriminator": {
        -            "mapping": {
        -              "tag": "#/$defs/DeliverTagDestination",
        -              "webhook": "#/$defs/DeliverWebhookDestination"
        -            },
        -            "propertyName": "type"
        -          },
        -          "oneOf": [
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "tag_ids": {
        -                  "items": {
        -                    "type": "integer"
        -                  },
        -                  "maxItems": 50,
        -                  "minItems": 1,
        -                  "title": "Tag Ids",
        -                  "type": "array"
        -                },
        -                "type": {
        -                  "const": "tag",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "type",
        -                "tag_ids"
        -              ],
        -              "title": "DeliverTagDestination",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "event_type": {
        -                  "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -                  "title": "Event Type",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "webhook",
        -                  "title": "Type",
        -                  "type": "string"
        -                },
        -                "webhook_id": {
        -                  "format": "uuid",
        -                  "title": "Webhook Id",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "type",
        -                "webhook_id",
        -                "event_type"
        -              ],
        -              "title": "DeliverWebhookDestination",
        -              "type": "object"
        -            }
        -          ],
        -          "properties": {
        -            "event_type": {
        -              "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -              "title": "Event Type",
        -              "type": "string"
        -            },
        -            "tag_ids": {
        -              "items": {
        -                "type": "integer"
        -              },
        -              "maxItems": 50,
        -              "minItems": 1,
        -              "title": "Tag Ids",
        -              "type": "array"
        -            },
        -            "type": {
        -              "enum": [
        -                "tag",
        -                "webhook"
        -              ],
        -              "type": "string"
        -            },
        -            "webhook_id": {
        -              "format": "uuid",
        -              "title": "Webhook Id",
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "maxItems": 20,
        -        "title": "Destinations",
        -        "type": "array"
        -      },
        -      "projection": {
        -        "anyOf": [
        -          {
        -            "items": {
        -              "enum": [
        -                "artifacts",
        -                "qa",
        -                "billing",
        -                "provenance"
        -              ],
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Projection"
        -      }
        -    },
        -    "title": "OutputNodeConfigV1_3",
        -    "type": "object"
        -  },
        -  "OutputNodeConfigV1_4": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "destinations": {
        -        "items": {
        -          "discriminator": {
        -            "mapping": {
        -              "tag": "#/$defs/DeliverTagDestination",
        -              "webhook": "#/$defs/DeliverWebhookDestination"
        -            },
        -            "propertyName": "type"
        -          },
        -          "oneOf": [
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "tag_ids": {
        -                  "items": {
        -                    "type": "integer"
        -                  },
        -                  "maxItems": 50,
        -                  "minItems": 1,
        -                  "title": "Tag Ids",
        -                  "type": "array"
        -                },
        -                "type": {
        -                  "const": "tag",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "type",
        -                "tag_ids"
        -              ],
        -              "title": "DeliverTagDestination",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "event_type": {
        -                  "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -                  "title": "Event Type",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "webhook",
        -                  "title": "Type",
        -                  "type": "string"
        -                },
        -                "webhook_id": {
        -                  "format": "uuid",
        -                  "title": "Webhook Id",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "type",
        -                "webhook_id",
        -                "event_type"
        -              ],
        -              "title": "DeliverWebhookDestination",
        -              "type": "object"
        -            }
        -          ],
        -          "properties": {
        -            "event_type": {
        -              "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -              "title": "Event Type",
        -              "type": "string"
        -            },
        -            "tag_ids": {
        -              "items": {
        -                "type": "integer"
        -              },
        -              "maxItems": 50,
        -              "minItems": 1,
        -              "title": "Tag Ids",
        -              "type": "array"
        -            },
        -            "type": {
        -              "enum": [
        -                "tag",
        -                "webhook"
        -              ],
        -              "type": "string"
        -            },
        -            "webhook_id": {
        -              "format": "uuid",
        -              "title": "Webhook Id",
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "maxItems": 20,
        -        "title": "Destinations",
        -        "type": "array"
        -      }
        -    },
        -    "title": "OutputNodeConfigV1_4",
        -    "type": "object"
        -  },
        -  "OutputNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "anyOf": [
        -          {
        -            "$ref": "#/$defs/OutputNodeConfig"
        -          },
        -          {
        -            "$ref": "#/$defs/OutputNodeConfigV1_2"
        -          },
        -          {
        -            "$ref": "#/$defs/OutputNodeConfigV1_3"
        -          },
        -          {
        -            "$ref": "#/$defs/OutputNodeConfigV1_4"
        -          }
        -        ],
        -        "title": "Config"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "infrastructure_retry": {
        -        "$ref": "#/$defs/InfrastructureRetryInput"
        -      },
        -      "readiness": {
        -        "$ref": "#/$defs/ReadinessInput"
        -      },
        -      "type": {
        -        "const": "output",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "readiness",
        -      "infrastructure_retry",
        -      "type",
        -      "config"
        -    ],
        -    "title": "OutputNodeInput",
        -    "type": "object"
        -  },
        -  "PromptInputConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "ask_at_run_time": {
        -        "default": false,
        -        "title": "Ask At Run Time",
        -        "type": "boolean"
        -      },
        -      "text": {
        -        "anyOf": [
        -          {
        -            "maxLength": 10000,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Text"
        -      }
        -    },
        -    "title": "PromptInputConfig",
        -    "type": "object"
        -  },
        -  "PromptInputNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/PromptInputConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "input.prompt",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "type",
        -      "config"
        -    ],
        -    "title": "PromptInputNodeInput",
        -    "type": "object"
        -  },
        -  "QaGateNodeConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "max_content_retries": {
        -        "maximum": 20,
        -        "minimum": 0,
        -        "title": "Max Content Retries",
        -        "type": "integer"
        -      },
        -      "policy": {
        -        "maxLength": 100,
        -        "minLength": 1,
        -        "title": "Policy",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "policy",
        -      "max_content_retries"
        -    ],
        -    "title": "QaGateNodeConfig",
        -    "type": "object"
        -  },
        -  "QaGateNodeConfigV1_2": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "graph_retry": {
        -        "anyOf": [
        -          {
        -            "$ref": "#/$defs/QaGraphRetryConfig"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "max_content_retries": {
        -        "maximum": 20,
        -        "minimum": 0,
        -        "title": "Max Content Retries",
        -        "type": "integer"
        -      },
        -      "policy": {
        -        "maxLength": 100,
        -        "minLength": 1,
        -        "title": "Policy",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "policy",
        -      "max_content_retries"
        -    ],
        -    "title": "QaGateNodeConfigV1_2",
        -    "type": "object"
        -  },
        -  "QaGateNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "anyOf": [
        -          {
        -            "$ref": "#/$defs/QaGateNodeConfig"
        -          },
        -          {
        -            "$ref": "#/$defs/QaGateNodeConfigV1_2"
        -          }
        -        ],
        -        "title": "Config"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "infrastructure_retry": {
        -        "$ref": "#/$defs/InfrastructureRetryInput"
        -      },
        -      "readiness": {
        -        "$ref": "#/$defs/ReadinessInput"
        -      },
        -      "type": {
        -        "const": "qa_gate",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "readiness",
        -      "infrastructure_retry",
        -      "type",
        -      "config"
        -    ],
        -    "title": "QaGateNodeInput",
        -    "type": "object"
        -  },
        -  "QaGraphRetryConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "max_retries": {
        -        "maximum": 20,
        -        "minimum": 1,
        -        "title": "Max Retries",
        -        "type": "integer"
        -      },
        -      "retry_from_node_id": {
        -        "format": "uuid",
        -        "title": "Retry From Node Id",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "retry_from_node_id",
        -      "max_retries"
        -    ],
        -    "title": "QaGraphRetryConfig",
        -    "type": "object"
        -  },
        -  "ReadinessInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "mode": {
        -        "enum": [
        -          "all_required",
        -          "all_terminal"
        -        ],
        -        "title": "Mode",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "mode"
        -    ],
        -    "title": "ReadinessInput",
        -    "type": "object"
        -  },
        -  "TriggerNodeConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "settings": {
        -        "additionalProperties": true,
        -        "title": "Settings",
        -        "type": "object"
        -      },
        -      "source": {
        -        "pattern": "^[a-z][a-z0-9_-]*(\\.[a-z][a-z0-9_-]*)+$",
        -        "title": "Source",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "source",
        -      "settings"
        -    ],
        -    "title": "TriggerNodeConfig",
        -    "type": "object"
        -  },
        -  "TriggerNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/TriggerNodeConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "trigger",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "type",
        -      "config"
        -    ],
        -    "title": "TriggerNodeInput",
        -    "type": "object"
        -  },
        -  "WorkflowEdgeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "binding": {
        -        "$ref": "#/$defs/EdgeBindingInput"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "source": {
        -        "$ref": "#/$defs/EdgeEndpointInput"
        -      },
        -      "target": {
        -        "$ref": "#/$defs/EdgeEndpointInput"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "source",
        -      "target",
        -      "binding"
        -    ],
        -    "title": "WorkflowEdgeInput",
        -    "type": "object"
        -  },
        -  "WorkflowFailurePolicy": {
        -    "enum": [
        -      "fail_fast",
        -      "continue_independent"
        -    ],
        -    "title": "WorkflowFailurePolicy",
        -    "type": "string"
        -  },
        -  "WorkflowVersionCreate": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "base_version_id": {
        -        "anyOf": [
        -          {
        -            "format": "uuid",
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Base Version Id"
        -      },
        -      "contract_version": {
        -        "default": "1.0",
        -        "enum": [
        -          "1.0",
        -          "1.1",
        -          "1.2",
        -          "1.3",
        -          "1.4",
        -          "1.5"
        -        ],
        -        "title": "Contract Version",
        -        "type": "string"
        -      },
        -      "edges": {
        -        "items": {
        -          "$ref": "#/$defs/WorkflowEdgeInput"
        -        },
        -        "minItems": 1,
        -        "title": "Edges",
        -        "type": "array"
        -      },
        -      "failure_policy": {
        -        "$ref": "#/$defs/WorkflowFailurePolicy"
        -      },
        -      "nodes": {
        -        "items": {
        -          "discriminator": {
        -            "mapping": {
        -              "branch": "#/$defs/BranchNodeInput",
        -              "generate": "#/$defs/GenerateNodeInput",
        -              "input.ai_model": "#/$defs/AiModelInputNodeInput",
        -              "input.art_direction": "#/$defs/ArtDirectionInputNodeInput",
        -              "input.avatar": "#/$defs/AvatarInputNodeInput",
        -              "input.clothing": "#/$defs/ClothingInputNodeInput",
        -              "input.image": "#/$defs/ImageInputNodeInput",
        -              "input.location": "#/$defs/LocationInputNodeInput",
        -              "input.prompt": "#/$defs/PromptInputNodeInput",
        -              "notify": "#/$defs/NotifyNodeInput",
        -              "output": "#/$defs/OutputNodeInput",
        -              "qa_gate": "#/$defs/QaGateNodeInput",
        -              "trigger": "#/$defs/TriggerNodeInput"
        -            },
        -            "propertyName": "type"
        -          },
        -          "oneOf": [
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "settings": {
        -                      "additionalProperties": true,
        -                      "title": "Settings",
        -                      "type": "object"
        -                    },
        -                    "source": {
        -                      "pattern": "^[a-z][a-z0-9_-]*(\\.[a-z][a-z0-9_-]*)+$",
        -                      "title": "Source",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "source",
        -                    "settings"
        -                  ],
        -                  "title": "TriggerNodeConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "trigger",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "type",
        -                "config"
        -              ],
        -              "title": "TriggerNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "anyOf": [
        -                    {
        -                      "additionalProperties": false,
        -                      "properties": {
        -                        "model_slug": {
        -                          "maxLength": 100,
        -                          "minLength": 1,
        -                          "title": "Model Slug",
        -                          "type": "string"
        -                        },
        -                        "parameters": {
        -                          "additionalProperties": true,
        -                          "title": "Parameters",
        -                          "type": "object"
        -                        },
        -                        "variant": {
        -                          "enum": [
        -                            "generate",
        -                            "edit",
        -                            "text_to_image"
        -                          ],
        -                          "title": "Variant",
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "variant",
        -                        "model_slug",
        -                        "parameters"
        -                      ],
        -                      "title": "GenerateNodeConfig",
        -                      "type": "object"
        -                    },
        -                    {
        -                      "additionalProperties": false,
        -                      "properties": {
        -                        "model_slug": {
        -                          "maxLength": 100,
        -                          "minLength": 1,
        -                          "title": "Model Slug",
        -                          "type": "string"
        -                        },
        -                        "parameters": {
        -                          "additionalProperties": true,
        -                          "title": "Parameters",
        -                          "type": "object"
        -                        },
        -                        "variant": {
        -                          "enum": [
        -                            "generate",
        -                            "edit",
        -                            "text_to_image",
        -                            "video"
        -                          ],
        -                          "title": "Variant",
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "variant",
        -                        "model_slug",
        -                        "parameters"
        -                      ],
        -                      "title": "GenerateNodeConfigV1_2",
        -                      "type": "object"
        -                    }
        -                  ],
        -                  "title": "Config"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "infrastructure_retry": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "initial_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Initial Backoff Seconds",
        -                      "type": "integer"
        -                    },
        -                    "max_attempts": {
        -                      "maximum": 20,
        -                      "minimum": 1,
        -                      "title": "Max Attempts",
        -                      "type": "integer"
        -                    },
        -                    "max_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Max Backoff Seconds",
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "max_attempts",
        -                    "initial_backoff_seconds",
        -                    "max_backoff_seconds"
        -                  ],
        -                  "title": "InfrastructureRetryInput",
        -                  "type": "object"
        -                },
        -                "readiness": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "mode": {
        -                      "enum": [
        -                        "all_required",
        -                        "all_terminal"
        -                      ],
        -                      "title": "Mode",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "mode"
        -                  ],
        -                  "title": "ReadinessInput",
        -                  "type": "object"
        -                },
        -                "type": {
        -                  "const": "generate",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "readiness",
        -                "infrastructure_retry",
        -                "type",
        -                "config"
        -              ],
        -              "title": "GenerateNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "anyOf": [
        -                    {
        -                      "additionalProperties": false,
        -                      "properties": {
        -                        "max_content_retries": {
        -                          "maximum": 20,
        -                          "minimum": 0,
        -                          "title": "Max Content Retries",
        -                          "type": "integer"
        -                        },
        -                        "policy": {
        -                          "maxLength": 100,
        -                          "minLength": 1,
        -                          "title": "Policy",
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "policy",
        -                        "max_content_retries"
        -                      ],
        -                      "title": "QaGateNodeConfig",
        -                      "type": "object"
        -                    },
        -                    {
        -                      "additionalProperties": false,
        -                      "properties": {
        -                        "graph_retry": {
        -                          "anyOf": [
        -                            {
        -                              "additionalProperties": false,
        -                              "properties": {
        -                                "max_retries": {
        -                                  "maximum": 20,
        -                                  "minimum": 1,
        -                                  "title": "Max Retries",
        -                                  "type": "integer"
        -                                },
        -                                "retry_from_node_id": {
        -                                  "format": "uuid",
        -                                  "title": "Retry From Node Id",
        -                                  "type": "string"
        -                                }
        -                              },
        -                              "required": [
        -                                "retry_from_node_id",
        -                                "max_retries"
        -                              ],
        -                              "title": "QaGraphRetryConfig",
        -                              "type": "object"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "max_content_retries": {
        -                          "maximum": 20,
        -                          "minimum": 0,
        -                          "title": "Max Content Retries",
        -                          "type": "integer"
        -                        },
        -                        "policy": {
        -                          "maxLength": 100,
        -                          "minLength": 1,
        -                          "title": "Policy",
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "policy",
        -                        "max_content_retries"
        -                      ],
        -                      "title": "QaGateNodeConfigV1_2",
        -                      "type": "object"
        -                    }
        -                  ],
        -                  "title": "Config"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "infrastructure_retry": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "initial_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Initial Backoff Seconds",
        -                      "type": "integer"
        -                    },
        -                    "max_attempts": {
        -                      "maximum": 20,
        -                      "minimum": 1,
        -                      "title": "Max Attempts",
        -                      "type": "integer"
        -                    },
        -                    "max_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Max Backoff Seconds",
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "max_attempts",
        -                    "initial_backoff_seconds",
        -                    "max_backoff_seconds"
        -                  ],
        -                  "title": "InfrastructureRetryInput",
        -                  "type": "object"
        -                },
        -                "readiness": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "mode": {
        -                      "enum": [
        -                        "all_required",
        -                        "all_terminal"
        -                      ],
        -                      "title": "Mode",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "mode"
        -                  ],
        -                  "title": "ReadinessInput",
        -                  "type": "object"
        -                },
        -                "type": {
        -                  "const": "qa_gate",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "readiness",
        -                "infrastructure_retry",
        -                "type",
        -                "config"
        -              ],
        -              "title": "QaGateNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "cases": {
        -                      "additionalProperties": {
        -                        "enum": [
        -                          "accepted",
        -                          "rejected",
        -                          "error"
        -                        ],
        -                        "type": "string"
        -                      },
        -                      "minProperties": 1,
        -                      "propertyNames": {
        -                        "enum": [
        -                          "accepted",
        -                          "rejected",
        -                          "error"
        -                        ]
        -                      },
        -                      "title": "Cases",
        -                      "type": "object"
        -                    },
        -                    "condition_type": {
        -                      "const": "qa_decision",
        -                      "title": "Condition Type",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "condition_type",
        -                    "cases"
        -                  ],
        -                  "title": "BranchNodeConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "infrastructure_retry": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "initial_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Initial Backoff Seconds",
        -                      "type": "integer"
        -                    },
        -                    "max_attempts": {
        -                      "maximum": 20,
        -                      "minimum": 1,
        -                      "title": "Max Attempts",
        -                      "type": "integer"
        -                    },
        -                    "max_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Max Backoff Seconds",
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "max_attempts",
        -                    "initial_backoff_seconds",
        -                    "max_backoff_seconds"
        -                  ],
        -                  "title": "InfrastructureRetryInput",
        -                  "type": "object"
        -                },
        -                "readiness": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "mode": {
        -                      "enum": [
        -                        "all_required",
        -                        "all_terminal"
        -                      ],
        -                      "title": "Mode",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "mode"
        -                  ],
        -                  "title": "ReadinessInput",
        -                  "type": "object"
        -                },
        -                "type": {
        -                  "const": "branch",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "readiness",
        -                "infrastructure_retry",
        -                "type",
        -                "config"
        -              ],
        -              "title": "BranchNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "anyOf": [
        -                    {
        -                      "additionalProperties": false,
        -                      "properties": {
        -                        "projection": {
        -                          "items": {
        -                            "enum": [
        -                              "artifacts",
        -                              "qa",
        -                              "billing",
        -                              "provenance"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "minItems": 1,
        -                          "title": "Projection",
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "projection"
        -                      ],
        -                      "title": "OutputNodeConfig",
        -                      "type": "object"
        -                    },
        -                    {
        -                      "additionalProperties": false,
        -                      "properties": {
        -                        "projection": {
        -                          "items": {
        -                            "enum": [
        -                              "artifacts",
        -                              "qa",
        -                              "billing",
        -                              "provenance"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "minItems": 1,
        -                          "title": "Projection",
        -                          "type": "array"
        -                        }
        -                      },
        -                      "title": "OutputNodeConfigV1_2",
        -                      "type": "object"
        -                    },
        -                    {
        -                      "additionalProperties": false,
        -                      "properties": {
        -                        "destinations": {
        -                          "items": {
        -                            "discriminator": {
        -                              "mapping": {
        -                                "tag": "#/$defs/DeliverTagDestination",
        -                                "webhook": "#/$defs/DeliverWebhookDestination"
        -                              },
        -                              "propertyName": "type"
        -                            },
        -                            "oneOf": [
        -                              {
        -                                "additionalProperties": false,
        -                                "properties": {
        -                                  "tag_ids": {
        -                                    "items": {
        -                                      "type": "integer"
        -                                    },
        -                                    "maxItems": 50,
        -                                    "minItems": 1,
        -                                    "title": "Tag Ids",
        -                                    "type": "array"
        -                                  },
        -                                  "type": {
        -                                    "const": "tag",
        -                                    "title": "Type",
        -                                    "type": "string"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "type",
        -                                  "tag_ids"
        -                                ],
        -                                "title": "DeliverTagDestination",
        -                                "type": "object"
        -                              },
        -                              {
        -                                "additionalProperties": false,
        -                                "properties": {
        -                                  "event_type": {
        -                                    "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -                                    "title": "Event Type",
        -                                    "type": "string"
        -                                  },
        -                                  "type": {
        -                                    "const": "webhook",
        -                                    "title": "Type",
        -                                    "type": "string"
        -                                  },
        -                                  "webhook_id": {
        -                                    "format": "uuid",
        -                                    "title": "Webhook Id",
        -                                    "type": "string"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "type",
        -                                  "webhook_id",
        -                                  "event_type"
        -                                ],
        -                                "title": "DeliverWebhookDestination",
        -                                "type": "object"
        -                              }
        -                            ],
        -                            "properties": {
        -                              "event_type": {
        -                                "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -                                "title": "Event Type",
        -                                "type": "string"
        -                              },
        -                              "tag_ids": {
        -                                "items": {
        -                                  "type": "integer"
        -                                },
        -                                "maxItems": 50,
        -                                "minItems": 1,
        -                                "title": "Tag Ids",
        -                                "type": "array"
        -                              },
        -                              "type": {
        -                                "enum": [
        -                                  "tag",
        -                                  "webhook"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "webhook_id": {
        -                                "format": "uuid",
        -                                "title": "Webhook Id",
        -                                "type": "string"
        -                              }
        -                            },
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "title": "Destinations",
        -                          "type": "array"
        -                        },
        -                        "projection": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "enum": [
        -                                  "artifacts",
        -                                  "qa",
        -                                  "billing",
        -                                  "provenance"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null,
        -                          "title": "Projection"
        -                        }
        -                      },
        -                      "title": "OutputNodeConfigV1_3",
        -                      "type": "object"
        -                    },
        -                    {
        -                      "additionalProperties": false,
        -                      "properties": {
        -                        "destinations": {
        -                          "items": {
        -                            "discriminator": {
        -                              "mapping": {
        -                                "tag": "#/$defs/DeliverTagDestination",
        -                                "webhook": "#/$defs/DeliverWebhookDestination"
        -                              },
        -                              "propertyName": "type"
        -                            },
        -                            "oneOf": [
        -                              {
        -                                "additionalProperties": false,
        -                                "properties": {
        -                                  "tag_ids": {
        -                                    "items": {
        -                                      "type": "integer"
        -                                    },
        -                                    "maxItems": 50,
        -                                    "minItems": 1,
        -                                    "title": "Tag Ids",
        -                                    "type": "array"
        -                                  },
        -                                  "type": {
        -                                    "const": "tag",
        -                                    "title": "Type",
        -                                    "type": "string"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "type",
        -                                  "tag_ids"
        -                                ],
        -                                "title": "DeliverTagDestination",
        -                                "type": "object"
        -                              },
        -                              {
        -                                "additionalProperties": false,
        -                                "properties": {
        -                                  "event_type": {
        -                                    "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -                                    "title": "Event Type",
        -                                    "type": "string"
        -                                  },
        -                                  "type": {
        -                                    "const": "webhook",
        -                                    "title": "Type",
        -                                    "type": "string"
        -                                  },
        -                                  "webhook_id": {
        -                                    "format": "uuid",
        -                                    "title": "Webhook Id",
        -                                    "type": "string"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "type",
        -                                  "webhook_id",
        -                                  "event_type"
        -                                ],
        -                                "title": "DeliverWebhookDestination",
        -                                "type": "object"
        -                              }
        -                            ],
        -                            "properties": {
        -                              "event_type": {
        -                                "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -                                "title": "Event Type",
        -                                "type": "string"
        -                              },
        -                              "tag_ids": {
        -                                "items": {
        -                                  "type": "integer"
        -                                },
        -                                "maxItems": 50,
        -                                "minItems": 1,
        -                                "title": "Tag Ids",
        -                                "type": "array"
        -                              },
        -                              "type": {
        -                                "enum": [
        -                                  "tag",
        -                                  "webhook"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "webhook_id": {
        -                                "format": "uuid",
        -                                "title": "Webhook Id",
        -                                "type": "string"
        -                              }
        -                            },
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "title": "Destinations",
        -                          "type": "array"
        -                        }
        -                      },
        -                      "title": "OutputNodeConfigV1_4",
        -                      "type": "object"
        -                    }
        -                  ],
        -                  "title": "Config"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "infrastructure_retry": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "initial_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Initial Backoff Seconds",
        -                      "type": "integer"
        -                    },
        -                    "max_attempts": {
        -                      "maximum": 20,
        -                      "minimum": 1,
        -                      "title": "Max Attempts",
        -                      "type": "integer"
        -                    },
        -                    "max_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Max Backoff Seconds",
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "max_attempts",
        -                    "initial_backoff_seconds",
        -                    "max_backoff_seconds"
        -                  ],
        -                  "title": "InfrastructureRetryInput",
        -                  "type": "object"
        -                },
        -                "readiness": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "mode": {
        -                      "enum": [
        -                        "all_required",
        -                        "all_terminal"
        -                      ],
        -                      "title": "Mode",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "mode"
        -                  ],
        -                  "title": "ReadinessInput",
        -                  "type": "object"
        -                },
        -                "type": {
        -                  "const": "output",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "readiness",
        -                "infrastructure_retry",
        -                "type",
        -                "config"
        -              ],
        -              "title": "OutputNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "event_type": {
        -                      "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -                      "title": "Event Type",
        -                      "type": "string"
        -                    },
        -                    "webhook_id": {
        -                      "format": "uuid",
        -                      "title": "Webhook Id",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "webhook_id",
        -                    "event_type"
        -                  ],
        -                  "title": "NotifyNodeConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "infrastructure_retry": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "initial_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Initial Backoff Seconds",
        -                      "type": "integer"
        -                    },
        -                    "max_attempts": {
        -                      "maximum": 20,
        -                      "minimum": 1,
        -                      "title": "Max Attempts",
        -                      "type": "integer"
        -                    },
        -                    "max_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Max Backoff Seconds",
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "max_attempts",
        -                    "initial_backoff_seconds",
        -                    "max_backoff_seconds"
        -                  ],
        -                  "title": "InfrastructureRetryInput",
        -                  "type": "object"
        -                },
        -                "readiness": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "mode": {
        -                      "enum": [
        -                        "all_required",
        -                        "all_terminal"
        -                      ],
        -                      "title": "Mode",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "mode"
        -                  ],
        -                  "title": "ReadinessInput",
        -                  "type": "object"
        -                },
        -                "type": {
        -                  "const": "notify",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "readiness",
        -                "infrastructure_retry",
        -                "type",
        -                "config"
        -              ],
        -              "title": "NotifyNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "ask_at_run_time": {
        -                      "default": false,
        -                      "title": "Ask At Run Time",
        -                      "type": "boolean"
        -                    },
        -                    "avatar_id": {
        -                      "anyOf": [
        -                        {
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null,
        -                      "title": "Avatar Id"
        -                    }
        -                  },
        -                  "title": "AvatarInputConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "input.avatar",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "type",
        -                "config"
        -              ],
        -              "title": "AvatarInputNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "ask_at_run_time": {
        -                      "default": false,
        -                      "title": "Ask At Run Time",
        -                      "type": "boolean"
        -                    },
        -                    "clothing_item_id": {
        -                      "anyOf": [
        -                        {
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null,
        -                      "title": "Clothing Item Id"
        -                    }
        -                  },
        -                  "title": "ClothingInputConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "input.clothing",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "type",
        -                "config"
        -              ],
        -              "title": "ClothingInputNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "ask_at_run_time": {
        -                      "default": false,
        -                      "title": "Ask At Run Time",
        -                      "type": "boolean"
        -                    },
        -                    "location_id": {
        -                      "anyOf": [
        -                        {
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null,
        -                      "title": "Location Id"
        -                    }
        -                  },
        -                  "title": "LocationInputConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "input.location",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "type",
        -                "config"
        -              ],
        -              "title": "LocationInputNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "art_direction_id": {
        -                      "anyOf": [
        -                        {
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null,
        -                      "title": "Art Direction Id"
        -                    },
        -                    "ask_at_run_time": {
        -                      "default": false,
        -                      "title": "Ask At Run Time",
        -                      "type": "boolean"
        -                    }
        -                  },
        -                  "title": "ArtDirectionInputConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "input.art_direction",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "type",
        -                "config"
        -              ],
        -              "title": "ArtDirectionInputNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "ask_at_run_time": {
        -                      "default": false,
        -                      "title": "Ask At Run Time",
        -                      "type": "boolean"
        -                    },
        -                    "text": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 10000,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null,
        -                      "title": "Text"
        -                    }
        -                  },
        -                  "title": "PromptInputConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "input.prompt",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "type",
        -                "config"
        -              ],
        -              "title": "PromptInputNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "ask_at_run_time": {
        -                      "default": false,
        -                      "title": "Ask At Run Time",
        -                      "type": "boolean"
        -                    },
        -                    "generation_result_id": {
        -                      "anyOf": [
        -                        {
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null,
        -                      "title": "Generation Result Id"
        -                    }
        -                  },
        -                  "title": "ImageInputConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "input.image",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "type",
        -                "config"
        -              ],
        -              "title": "ImageInputNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "model_slug": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null,
        -                      "title": "Model Slug"
        -                    }
        -                  },
        -                  "title": "AiModelInputConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "input.ai_model",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "type",
        -                "config"
        -              ],
        -              "title": "AiModelInputNodeInput",
        -              "type": "object"
        -            }
        -          ],
        -          "properties": {
        -            "config": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "settings": {
        -                  "additionalProperties": true,
        -                  "title": "Settings",
        -                  "type": "object"
        -                },
        -                "source": {
        -                  "pattern": "^[a-z][a-z0-9_-]*(\\.[a-z][a-z0-9_-]*)+$",
        -                  "title": "Source",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "source",
        -                "settings"
        -              ],
        -              "title": "TriggerNodeConfig",
        -              "type": "object"
        -            },
        -            "id": {
        -              "format": "uuid",
        -              "title": "Id",
        -              "type": "string"
        -            },
        -            "infrastructure_retry": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "initial_backoff_seconds": {
        -                  "maximum": 86400,
        -                  "minimum": 0,
        -                  "title": "Initial Backoff Seconds",
        -                  "type": "integer"
        -                },
        -                "max_attempts": {
        -                  "maximum": 20,
        -                  "minimum": 1,
        -                  "title": "Max Attempts",
        -                  "type": "integer"
        -                },
        -                "max_backoff_seconds": {
        -                  "maximum": 86400,
        -                  "minimum": 0,
        -                  "title": "Max Backoff Seconds",
        -                  "type": "integer"
        -                }
        -              },
        -              "required": [
        -                "max_attempts",
        -                "initial_backoff_seconds",
        -                "max_backoff_seconds"
        -              ],
        -              "title": "InfrastructureRetryInput",
        -              "type": "object"
        -            },
        -            "readiness": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "mode": {
        -                  "enum": [
        -                    "all_required",
        -                    "all_terminal"
        -                  ],
        -                  "title": "Mode",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "mode"
        -              ],
        -              "title": "ReadinessInput",
        -              "type": "object"
        -            },
        -            "type": {
        -              "enum": [
        -                "trigger",
        -                "generate",
        -                "qa_gate",
        -                "branch",
        -                "output",
        -                "notify",
        -                "input.avatar",
        -                "input.clothing",
        -                "input.location",
        -                "input.art_direction",
        -                "input.prompt",
        -                "input.image",
        -                "input.ai_model"
        -              ],
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "minItems": 2,
        -        "title": "Nodes",
        -        "type": "array"
        -      },
        -      "result_projection": {
        -        "items": {
        -          "enum": [
        -            "artifacts",
        -            "qa",
        -            "billing",
        -            "provenance"
        -          ],
        -          "type": "string"
        -        },
        -        "minItems": 1,
        -        "title": "Result Projection",
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "failure_policy",
        -      "nodes",
        -      "edges"
        -    ],
        -    "title": "WorkflowVersionCreate",
        -    "type": "object"
        -  }
        -}
      • removedInput schema / properties / definition / $ref
        Removed value: -"#/$defs/WorkflowVersionCreate"
      • addedInput schema / properties / definition / additionalProperties
        Added value: +false
      • addedInput schema / properties / definition / properties
        Added value: +{
        +  "base_version_id": {
        +    "anyOf": [
        +      {
        +        "format": "uuid",
        +        "type": "string"
        +      },
        +      {
        +        "type": "null"
        +      }
        +    ],
        +    "default": null
        +  },
        +  "contract_version": {
        +    "default": "1.0",
        +    "enum": [
        +      "1.0",
        +      "1.1",
        +      "1.2",
        +      "1.3",
        +      "1.4",
        +      "1.5"
        +    ],
        +    "type": "string"
        +  },
        +  "edges": {
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "binding": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "mode": {
        +              "enum": [
        +                "single",
        +                "collect"
        +              ],
        +              "type": "string"
        +            },
        +            "required": {
        +              "type": "boolean"
        +            },
        +            "role": {
        +              "anyOf": [
        +                {
        +                  "enum": [
        +                    "background",
        +                    "style"
        +                  ],
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            }
        +          },
        +          "required": [
        +            "mode",
        +            "required"
        +          ],
        +          "type": "object"
        +        },
        +        "id": {
        +          "format": "uuid",
        +          "type": "string"
        +        },
        +        "source": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "node_id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "port": {
        +              "maxLength": 100,
        +              "minLength": 1,
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "node_id",
        +            "port"
        +          ],
        +          "type": "object"
        +        },
        +        "target": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "node_id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "port": {
        +              "maxLength": 100,
        +              "minLength": 1,
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "node_id",
        +            "port"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "source",
        +        "target",
        +        "binding"
        +      ],
        +      "type": "object"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  },
        +  "failure_policy": {
        +    "enum": [
        +      "fail_fast",
        +      "continue_independent"
        +    ],
        +    "type": "string"
        +  },
        +  "nodes": {
        +    "items": {
        +      "discriminator": {
        +        "propertyName": "type"
        +      },
        +      "oneOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "settings": {
        +                  "additionalProperties": true,
        +                  "type": "object"
        +                },
        +                "source": {
        +                  "pattern": "^[a-z][a-z0-9_-]*(\\.[a-z][a-z0-9_-]*)+$",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "source",
        +                "settings"
        +              ],
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "trigger",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "model_slug": {
        +                      "maxLength": 100,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "parameters": {
        +                      "additionalProperties": true,
        +                      "type": "object"
        +                    },
        +                    "variant": {
        +                      "enum": [
        +                        "generate",
        +                        "edit",
        +                        "text_to_image"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "variant",
        +                    "model_slug",
        +                    "parameters"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "model_slug": {
        +                      "maxLength": 100,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "parameters": {
        +                      "additionalProperties": true,
        +                      "type": "object"
        +                    },
        +                    "variant": {
        +                      "enum": [
        +                        "generate",
        +                        "edit",
        +                        "text_to_image",
        +                        "video"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "variant",
        +                    "model_slug",
        +                    "parameters"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "infrastructure_retry": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "initial_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "max_attempts": {
        +                  "maximum": 20,
        +                  "minimum": 1,
        +                  "type": "integer"
        +                },
        +                "max_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "max_attempts",
        +                "initial_backoff_seconds",
        +                "max_backoff_seconds"
        +              ],
        +              "type": "object"
        +            },
        +            "readiness": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "mode": {
        +                  "enum": [
        +                    "all_required",
        +                    "all_terminal"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "mode"
        +              ],
        +              "type": "object"
        +            },
        +            "type": {
        +              "const": "generate",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "readiness",
        +            "infrastructure_retry",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "max_content_retries": {
        +                      "maximum": 20,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    },
        +                    "policy": {
        +                      "maxLength": 100,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "policy",
        +                    "max_content_retries"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "graph_retry": {
        +                      "anyOf": [
        +                        {
        +                          "additionalProperties": false,
        +                          "properties": {
        +                            "max_retries": {
        +                              "maximum": 20,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            "retry_from_node_id": {
        +                              "format": "uuid",
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "retry_from_node_id",
        +                            "max_retries"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "max_content_retries": {
        +                      "maximum": 20,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    },
        +                    "policy": {
        +                      "maxLength": 100,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "policy",
        +                    "max_content_retries"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "infrastructure_retry": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "initial_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "max_attempts": {
        +                  "maximum": 20,
        +                  "minimum": 1,
        +                  "type": "integer"
        +                },
        +                "max_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "max_attempts",
        +                "initial_backoff_seconds",
        +                "max_backoff_seconds"
        +              ],
        +              "type": "object"
        +            },
        +            "readiness": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "mode": {
        +                  "enum": [
        +                    "all_required",
        +                    "all_terminal"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "mode"
        +              ],
        +              "type": "object"
        +            },
        +            "type": {
        +              "const": "qa_gate",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "readiness",
        +            "infrastructure_retry",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "cases": {
        +                  "additionalProperties": {
        +                    "enum": [
        +                      "accepted",
        +                      "rejected",
        +                      "error"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "minProperties": 1,
        +                  "propertyNames": {
        +                    "enum": [
        +                      "accepted",
        +                      "rejected",
        +                      "error"
        +                    ]
        +                  },
        +                  "type": "object"
        +                },
        +                "condition_type": {
        +                  "const": "qa_decision",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "condition_type",
        +                "cases"
        +              ],
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "infrastructure_retry": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "initial_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "max_attempts": {
        +                  "maximum": 20,
        +                  "minimum": 1,
        +                  "type": "integer"
        +                },
        +                "max_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "max_attempts",
        +                "initial_backoff_seconds",
        +                "max_backoff_seconds"
        +              ],
        +              "type": "object"
        +            },
        +            "readiness": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "mode": {
        +                  "enum": [
        +                    "all_required",
        +                    "all_terminal"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "mode"
        +              ],
        +              "type": "object"
        +            },
        +            "type": {
        +              "const": "branch",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "readiness",
        +            "infrastructure_retry",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "projection": {
        +                      "items": {
        +                        "enum": [
        +                          "artifacts",
        +                          "qa",
        +                          "billing",
        +                          "provenance"
        +                        ],
        +                        "type": "string"
        +                      },
        +                      "minItems": 1,
        +                      "type": "array"
        +                    }
        +                  },
        +                  "required": [
        +                    "projection"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "projection": {
        +                      "items": {
        +                        "enum": [
        +                          "artifacts",
        +                          "qa",
        +                          "billing",
        +                          "provenance"
        +                        ],
        +                        "type": "string"
        +                      },
        +                      "minItems": 1,
        +                      "type": "array"
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "destinations": {
        +                      "items": {
        +                        "discriminator": {
        +                          "propertyName": "type"
        +                        },
        +                        "oneOf": [
        +                          {
        +                            "additionalProperties": false,
        +                            "properties": {
        +                              "tag_ids": {
        +                                "items": {
        +                                  "type": "integer"
        +                                },
        +                                "maxItems": 50,
        +                                "minItems": 1,
        +                                "type": "array"
        +                              },
        +                              "type": {
        +                                "const": "tag",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "type",
        +                              "tag_ids"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "additionalProperties": false,
        +                            "properties": {
        +                              "event_type": {
        +                                "pattern": "^workflow\\.[a-z0-9_.-]+$",
        +                                "type": "string"
        +                              },
        +                              "type": {
        +                                "const": "webhook",
        +                                "type": "string"
        +                              },
        +                              "webhook_id": {
        +                                "format": "uuid",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "type",
        +                              "webhook_id",
        +                              "event_type"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ],
        +                        "properties": {
        +                          "event_type": {
        +                            "pattern": "^workflow\\.[a-z0-9_.-]+$",
        +                            "type": "string"
        +                          },
        +                          "tag_ids": {
        +                            "items": {
        +                              "type": "integer"
        +                            },
        +                            "maxItems": 50,
        +                            "minItems": 1,
        +                            "type": "array"
        +                          },
        +                          "type": {
        +                            "enum": [
        +                              "tag",
        +                              "webhook"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "webhook_id": {
        +                            "format": "uuid",
        +                            "type": "string"
        +                          }
        +                        },
        +                        "type": "object"
        +                      },
        +                      "maxItems": 20,
        +                      "type": "array"
        +                    },
        +                    "projection": {
        +                      "anyOf": [
        +                        {
        +                          "items": {
        +                            "enum": [
        +                              "artifacts",
        +                              "qa",
        +                              "billing",
        +                              "provenance"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "destinations": {
        +                      "items": {
        +                        "discriminator": {
        +                          "propertyName": "type"
        +                        },
        +                        "oneOf": [
        +                          {
        +                            "additionalProperties": false,
        +                            "properties": {
        +                              "tag_ids": {
        +                                "items": {
        +                                  "type": "integer"
        +                                },
        +                                "maxItems": 50,
        +                                "minItems": 1,
        +                                "type": "array"
        +                              },
        +                              "type": {
        +                                "const": "tag",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "type",
        +                              "tag_ids"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "additionalProperties": false,
        +                            "properties": {
        +                              "event_type": {
        +                                "pattern": "^workflow\\.[a-z0-9_.-]+$",
        +                                "type": "string"
        +                              },
        +                              "type": {
        +                                "const": "webhook",
        +                                "type": "string"
        +                              },
        +                              "webhook_id": {
        +                                "format": "uuid",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "type",
        +                              "webhook_id",
        +                              "event_type"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ],
        +                        "properties": {
        +                          "event_type": {
        +                            "pattern": "^workflow\\.[a-z0-9_.-]+$",
        +                            "type": "string"
        +                          },
        +                          "tag_ids": {
        +                            "items": {
        +                              "type": "integer"
        +                            },
        +                            "maxItems": 50,
        +                            "minItems": 1,
        +                            "type": "array"
        +                          },
        +                          "type": {
        +                            "enum": [
        +                              "tag",
        +                              "webhook"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "webhook_id": {
        +                            "format": "uuid",
        +                            "type": "string"
        +                          }
        +                        },
        +                        "type": "object"
        +                      },
        +                      "maxItems": 20,
        +                      "type": "array"
        +                    }
        +                  },
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "infrastructure_retry": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "initial_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "max_attempts": {
        +                  "maximum": 20,
        +                  "minimum": 1,
        +                  "type": "integer"
        +                },
        +                "max_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "max_attempts",
        +                "initial_backoff_seconds",
        +                "max_backoff_seconds"
        +              ],
        +              "type": "object"
        +            },
        +            "readiness": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "mode": {
        +                  "enum": [
        +                    "all_required",
        +                    "all_terminal"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "mode"
        +              ],
        +              "type": "object"
        +            },
        +            "type": {
        +              "const": "output",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "readiness",
        +            "infrastructure_retry",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "event_type": {
        +                  "pattern": "^workflow\\.[a-z0-9_.-]+$",
        +                  "type": "string"
        +                },
        +                "webhook_id": {
        +                  "format": "uuid",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "webhook_id",
        +                "event_type"
        +              ],
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "infrastructure_retry": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "initial_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "max_attempts": {
        +                  "maximum": 20,
        +                  "minimum": 1,
        +                  "type": "integer"
        +                },
        +                "max_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "max_attempts",
        +                "initial_backoff_seconds",
        +                "max_backoff_seconds"
        +              ],
        +              "type": "object"
        +            },
        +            "readiness": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "mode": {
        +                  "enum": [
        +                    "all_required",
        +                    "all_terminal"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "mode"
        +              ],
        +              "type": "object"
        +            },
        +            "type": {
        +              "const": "notify",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "readiness",
        +            "infrastructure_retry",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "ask_at_run_time": {
        +                  "default": false,
        +                  "type": "boolean"
        +                },
        +                "avatar_id": {
        +                  "anyOf": [
        +                    {
        +                      "minimum": 1,
        +                      "type": "integer"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ],
        +                  "default": null
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "input.avatar",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "ask_at_run_time": {
        +                  "default": false,
        +                  "type": "boolean"
        +                },
        +                "clothing_item_id": {
        +                  "anyOf": [
        +                    {
        +                      "minimum": 1,
        +                      "type": "integer"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ],
        +                  "default": null
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "input.clothing",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "ask_at_run_time": {
        +                  "default": false,
        +                  "type": "boolean"
        +                },
        +                "location_id": {
        +                  "anyOf": [
        +                    {
        +                      "minimum": 1,
        +                      "type": "integer"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ],
        +                  "default": null
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "input.location",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "art_direction_id": {
        +                  "anyOf": [
        +                    {
        +                      "minimum": 1,
        +                      "type": "integer"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ],
        +                  "default": null
        +                },
        +                "ask_at_run_time": {
        +                  "default": false,
        +                  "type": "boolean"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "input.art_direction",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "ask_at_run_time": {
        +                  "default": false,
        +                  "type": "boolean"
        +                },
        +                "text": {
        +                  "anyOf": [
        +                    {
        +                      "maxLength": 10000,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ],
        +                  "default": null
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "input.prompt",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "ask_at_run_time": {
        +                  "default": false,
        +                  "type": "boolean"
        +                },
        +                "generation_result_id": {
        +                  "anyOf": [
        +                    {
        +                      "minimum": 1,
        +                      "type": "integer"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ],
        +                  "default": null
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "input.image",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "model_slug": {
        +                  "anyOf": [
        +                    {
        +                      "maxLength": 100,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ],
        +                  "default": null
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "input.ai_model",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        }
        +      ],
        +      "properties": {
        +        "config": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "settings": {
        +              "additionalProperties": true,
        +              "type": "object"
        +            },
        +            "source": {
        +              "pattern": "^[a-z][a-z0-9_-]*(\\.[a-z][a-z0-9_-]*)+$",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "source",
        +            "settings"
        +          ],
        +          "type": "object"
        +        },
        +        "id": {
        +          "format": "uuid",
        +          "type": "string"
        +        },
        +        "infrastructure_retry": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "initial_backoff_seconds": {
        +              "maximum": 86400,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "max_attempts": {
        +              "maximum": 20,
        +              "minimum": 1,
        +              "type": "integer"
        +            },
        +            "max_backoff_seconds": {
        +              "maximum": 86400,
        +              "minimum": 0,
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "max_attempts",
        +            "initial_backoff_seconds",
        +            "max_backoff_seconds"
        +          ],
        +          "type": "object"
        +        },
        +        "readiness": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "mode": {
        +              "enum": [
        +                "all_required",
        +                "all_terminal"
        +              ],
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "mode"
        +          ],
        +          "type": "object"
        +        },
        +        "type": {
        +          "enum": [
        +            "trigger",
        +            "generate",
        +            "qa_gate",
        +            "branch",
        +            "output",
        +            "notify",
        +            "input.avatar",
        +            "input.clothing",
        +            "input.location",
        +            "input.art_direction",
        +            "input.prompt",
        +            "input.image",
        +            "input.ai_model"
        +          ],
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "minItems": 2,
        +    "type": "array"
        +  },
        +  "result_projection": {
        +    "items": {
        +      "enum": [
        +        "artifacts",
        +        "qa",
        +        "billing",
        +        "provenance"
        +      ],
        +      "type": "string"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +}
      • addedInput schema / properties / definition / required
        Added value: +[
        +  "failure_policy",
        +  "nodes",
        +  "edges"
        +]
      • addedInput schema / properties / definition / type
        Added value: +"object"
      • removedInput schema / properties / workflow_id / title
        Removed value: -"Workflow Id"
      • removedInput schema / title
        Removed value: -"CreateWorkflowVersionInput"
    • Changedfinish_local_garment_upload1 field changed
      • removedInput schema / $defs
        Removed value: -{
        -  "GarmentLocalUploadAssetInput": {
        -    "additionalProperties": false,
        -    "description": "One classified garment asset previously prepared and uploaded directly.",
        -    "properties": {
        -      "asset_kind": {
        -        "default": null,
        -        "description": "Asset kind: full garment view or detail crop.",
        -        "enum": [
        -          "full",
        -          "detail"
        -        ],
        -        "type": "string"
        -      },
        -      "asset_role": {
        -        "default": null,
        -        "deprecated": true,
        -        "description": "Deprecated role-only adapter. Prefer asset_kind and asset_view.",
        -        "enum": [
        -          "front",
        -          "back",
        -          "side",
        -          "detail"
        -        ],
        -        "type": "string"
        -      },
        -      "asset_view": {
        -        "default": null,
        -        "description": "Visible garment view. New detail uploads require front, back, or side.",
        -        "enum": [
        -          "front",
        -          "back",
        -          "side",
        -          "unspecified"
        -        ],
        -        "type": "string"
        -      },
        -      "upload_handle": {
        -        "description": "Owned upload handle returned by prepare_local_garment_upload",
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "upload_handle"
        -    ],
        -    "type": "object"
        -  },
        -  "GarmentLocalUploadItem": {
        -    "additionalProperties": false,
        -    "description": "One garment assembled from directly uploaded local assets.",
        -    "properties": {
        -      "assets": {
        -        "description": "Uploaded garment assets. Exactly one full front is required; full front/back/side views are unique and detail views can repeat.",
        -        "items": {
        -          "additionalProperties": false,
        -          "description": "One classified garment asset previously prepared and uploaded directly.",
        -          "properties": {
        -            "asset_kind": {
        -              "default": null,
        -              "description": "Asset kind: full garment view or detail crop.",
        -              "enum": [
        -                "full",
        -                "detail"
        -              ],
        -              "type": "string"
        -            },
        -            "asset_role": {
        -              "default": null,
        -              "deprecated": true,
        -              "description": "Deprecated role-only adapter. Prefer asset_kind and asset_view.",
        -              "enum": [
        -                "front",
        -                "back",
        -                "side",
        -                "detail"
        -              ],
        -              "type": "string"
        -            },
        -            "asset_view": {
        -              "default": null,
        -              "description": "Visible garment view. New detail uploads require front, back, or side.",
        -              "enum": [
        -                "front",
        -                "back",
        -                "side",
        -                "unspecified"
        -              ],
        -              "type": "string"
        -            },
        -            "upload_handle": {
        -              "description": "Owned upload handle returned by prepare_local_garment_upload",
        -              "minLength": 1,
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "upload_handle"
        -          ],
        -          "type": "object"
        -        },
        -        "minItems": 1,
        -        "type": "array"
        -      },
        -      "description": {
        -        "default": null,
        -        "description": "Optional item-level garment description hint",
        -        "type": "string"
        -      },
        -      "gender": {
        -        "default": null,
        -        "description": "Target gender: male, female, unisex",
        -        "type": "string"
        -      },
        -      "name": {
        -        "default": null,
        -        "description": "Name for the garment. If omitted, derived from the front image filename.",
        -        "type": "string"
        -      },
        -      "processing_mode": {
        -        "default": null,
        -        "description": "Optional image processing. 'background_removal' removes the background (the platform upload default); 'none' stores the image as-is. Omit to use background removal.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "assets"
        -    ],
        -    "type": "object"
        -  }
        -}
    • Changedget_production_workflow33 fields changed
      • removedInput schema / properties / versions_items_per_page / title
        Removed value: -"Versions Items Per Page"
      • removedInput schema / properties / versions_page / title
        Removed value: -"Versions Page"
      • removedInput schema / properties / workflow_id / title
        Removed value: -"Workflow Id"
      • removedInput schema / title
        Removed value: -"GetWorkflowInput"
      • removedOutput schema / $defs / WorkflowVersionState / title
        Removed value: -"WorkflowVersionState"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / base_version_id / title
        Removed value: -"Base Version Id"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / contract_version / title
        Removed value: -"Contract Version"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / created_at / title
        Removed value: -"Created At"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / created_by_profile_id / title
        Removed value: -"Created By Profile Id"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / definition_hash / title
        Removed value: -"Definition Hash"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / estimated_credit_units / title
        Removed value: -"Estimated Credit Units"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / number / title
        Removed value: -"Number"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / published_at / title
        Removed value: -"Published At"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / published_by_profile_id / title
        Removed value: -"Published By Profile Id"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / updated_at / title
        Removed value: -"Updated At"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / title
        Removed value: -"WorkflowVersionSummaryRead"
      • removedOutput schema / properties / archived / title
        Removed value: -"Archived"
      • removedOutput schema / properties / company_id / title
        Removed value: -"Company Id"
      • removedOutput schema / properties / created_at / title
        Removed value: -"Created At"
      • removedOutput schema / properties / created_by_profile_id / title
        Removed value: -"Created By Profile Id"
      • removedOutput schema / properties / enabled / title
        Removed value: -"Enabled"
      • removedOutput schema / properties / enabled_version_id / title
        Removed value: -"Enabled Version Id"
      • removedOutput schema / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / properties / name / title
        Removed value: -"Name"
      • removedOutput schema / properties / run_time_slot_kinds / title
        Removed value: -"Run Time Slot Kinds"
      • removedOutput schema / properties / updated_at / title
        Removed value: -"Updated At"
      • removedOutput schema / properties / updated_by_profile_id / title
        Removed value: -"Updated By Profile Id"
      • removedOutput schema / properties / versions / title
        Removed value: -"Versions"
      • removedOutput schema / properties / versions_items_per_page / title
        Removed value: -"Versions Items Per Page"
      • removedOutput schema / properties / versions_page / title
        Removed value: -"Versions Page"
      • removedOutput schema / properties / versions_total_count / title
        Removed value: -"Versions Total Count"
      • removedOutput schema / title
        Removed value: -"WorkflowDetailRead"
    • Changedget_production_workflow_control9 fields changed
      • removedInput schema / title
        Removed value: -"_ToolInput"
      • removedOutput schema / properties / changed_at / title
        Removed value: -"Changed At"
      • removedOutput schema / properties / changed_by_profile_id / title
        Removed value: -"Changed By Profile Id"
      • removedOutput schema / properties / company_id / title
        Removed value: -"Company Id"
      • removedOutput schema / properties / contract_version / title
        Removed value: -"Contract Version"
      • removedOutput schema / properties / reason / title
        Removed value: -"Reason"
      • removedOutput schema / properties / resource_type / title
        Removed value: -"Resource Type"
      • removedOutput schema / properties / stopped / title
        Removed value: -"Stopped"
      • removedOutput schema / title
        Removed value: -"WorkflowControlRead"
    • Changedget_production_workflow_run130 fields changed
      • removedInput schema / properties / workflow_run_id / title
        Removed value: -"Workflow Run Id"
      • removedInput schema / title
        Removed value: -"WorkflowRunIdentityInput"
      • removedOutput schema / $defs / WorkflowArtifactRead / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / WorkflowArtifactRead / properties / media_type / title
        Removed value: -"Media Type"
      • removedOutput schema / $defs / WorkflowArtifactRead / properties / role / title
        Removed value: -"Role"
      • removedOutput schema / $defs / WorkflowArtifactRead / properties / thumbnail_url / title
        Removed value: -"Thumbnail Url"
      • removedOutput schema / $defs / WorkflowArtifactRead / properties / url / title
        Removed value: -"Url"
      • removedOutput schema / $defs / WorkflowArtifactRead / title
        Removed value: -"WorkflowArtifactRead"
      • removedOutput schema / $defs / WorkflowBillingMovementRead / properties / external_charge_id / title
        Removed value: -"External Charge Id"
      • removedOutput schema / $defs / WorkflowBillingMovementRead / properties / kind / title
        Removed value: -"Kind"
      • removedOutput schema / $defs / WorkflowBillingMovementRead / properties / units / title
        Removed value: -"Units"
      • removedOutput schema / $defs / WorkflowBillingMovementRead / title
        Removed value: -"WorkflowBillingMovementRead"
      • removedOutput schema / $defs / WorkflowBillingRead / properties / debited_units / title
        Removed value: -"Debited Units"
      • removedOutput schema / $defs / WorkflowBillingRead / properties / estimated_units / title
        Removed value: -"Estimated Units"
      • removedOutput schema / $defs / WorkflowBillingRead / properties / movements / title
        Removed value: -"Movements"
      • removedOutput schema / $defs / WorkflowBillingRead / properties / net_units / title
        Removed value: -"Net Units"
      • removedOutput schema / $defs / WorkflowBillingRead / properties / refunded_units / title
        Removed value: -"Refunded Units"
      • removedOutput schema / $defs / WorkflowBillingRead / title
        Removed value: -"WorkflowBillingRead"
      • removedOutput schema / $defs / WorkflowContentAttemptRead / properties / artifacts / title
        Removed value: -"Artifacts"
      • removedOutput schema / $defs / WorkflowContentAttemptRead / properties / billed_units / title
        Removed value: -"Billed Units"
      • removedOutput schema / $defs / WorkflowContentAttemptRead / properties / error / title
        Removed value: -"Error"
      • removedOutput schema / $defs / WorkflowContentAttemptRead / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / WorkflowContentAttemptRead / properties / number / title
        Removed value: -"Number"
      • removedOutput schema / $defs / WorkflowContentAttemptRead / properties / primitive_bindings / title
        Removed value: -"Primitive Bindings"
      • removedOutput schema / $defs / WorkflowContentAttemptRead / properties / refunded_units / title
        Removed value: -"Refunded Units"
      • removedOutput schema / $defs / WorkflowContentAttemptRead / properties / status / title
        Removed value: -"Status"
      • removedOutput schema / $defs / WorkflowContentAttemptRead / title
        Removed value: -"WorkflowContentAttemptRead"
      • removedOutput schema / $defs / WorkflowInfrastructureAttemptRead / properties / error / title
        Removed value: -"Error"
      • removedOutput schema / $defs / WorkflowInfrastructureAttemptRead / properties / finished_at / title
        Removed value: -"Finished At"
      • removedOutput schema / $defs / WorkflowInfrastructureAttemptRead / properties / number / title
        Removed value: -"Number"
      • removedOutput schema / $defs / WorkflowInfrastructureAttemptRead / properties / started_at / title
        Removed value: -"Started At"
      • removedOutput schema / $defs / WorkflowInfrastructureAttemptRead / properties / status / title
        Removed value: -"Status"
      • removedOutput schema / $defs / WorkflowInfrastructureAttemptRead / title
        Removed value: -"WorkflowInfrastructureAttemptRead"
      • removedOutput schema / $defs / WorkflowMissingInputRead / properties / edge_id / title
        Removed value: -"Edge Id"
      • removedOutput schema / $defs / WorkflowMissingInputRead / properties / reason / title
        Removed value: -"Reason"
      • removedOutput schema / $defs / WorkflowMissingInputRead / properties / required / title
        Removed value: -"Required"
      • removedOutput schema / $defs / WorkflowMissingInputRead / properties / source_node_id / title
        Removed value: -"Source Node Id"
      • removedOutput schema / $defs / WorkflowMissingInputRead / properties / source_port / title
        Removed value: -"Source Port"
      • removedOutput schema / $defs / WorkflowMissingInputRead / properties / state / title
        Removed value: -"State"
      • removedOutput schema / $defs / WorkflowMissingInputRead / properties / target_port / title
        Removed value: -"Target Port"
      • removedOutput schema / $defs / WorkflowMissingInputRead / title
        Removed value: -"WorkflowMissingInputRead"
      • removedOutput schema / $defs / WorkflowNodeRunRead / properties / artifacts / title
        Removed value: -"Artifacts"
      • removedOutput schema / $defs / WorkflowNodeRunRead / properties / content_attempts / title
        Removed value: -"Content Attempts"
      • removedOutput schema / $defs / WorkflowNodeRunRead / properties / error / title
        Removed value: -"Error"
      • removedOutput schema / $defs / WorkflowNodeRunRead / properties / execution_iteration / title
        Removed value: -"Execution Iteration"
      • removedOutput schema / $defs / WorkflowNodeRunRead / properties / finished_at / title
        Removed value: -"Finished At"
      • removedOutput schema / $defs / WorkflowNodeRunRead / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / WorkflowNodeRunRead / properties / infrastructure_attempts / title
        Removed value: -"Infrastructure Attempts"
      • removedOutput schema / $defs / WorkflowNodeRunRead / properties / inputs / title
        Removed value: -"Inputs"
      • removedOutput schema / $defs / WorkflowNodeRunRead / properties / missing_inputs / title
        Removed value: -"Missing Inputs"
      • removedOutput schema / $defs / WorkflowNodeRunRead / properties / node_id / title
        Removed value: -"Node Id"
      • removedOutput schema / $defs / WorkflowNodeRunRead / properties / outputs / title
        Removed value: -"Outputs"
      • removedOutput schema / $defs / WorkflowNodeRunRead / properties / primitive_bindings / title
        Removed value: -"Primitive Bindings"
      • removedOutput schema / $defs / WorkflowNodeRunRead / properties / skip_reason / title
        Removed value: -"Skip Reason"
      • removedOutput schema / $defs / WorkflowNodeRunRead / properties / started_at / title
        Removed value: -"Started At"
      • removedOutput schema / $defs / WorkflowNodeRunRead / properties / status / title
        Removed value: -"Status"
      • removedOutput schema / $defs / WorkflowNodeRunRead / title
        Removed value: -"WorkflowNodeRunRead"
      • removedOutput schema / $defs / WorkflowNodeType / title
        Removed value: -"WorkflowNodeType"
      • removedOutput schema / $defs / WorkflowPortValueRead / properties / declared_type / title
        Removed value: -"Declared Type"
      • removedOutput schema / $defs / WorkflowPortValueRead / properties / port / title
        Removed value: -"Port"
      • removedOutput schema / $defs / WorkflowPortValueRead / properties / value / title
        Removed value: -"Value"
      • removedOutput schema / $defs / WorkflowPortValueRead / title
        Removed value: -"WorkflowPortValueRead"
      • removedOutput schema / $defs / WorkflowPrimitiveBindingRead / properties / primitive_id / title
        Removed value: -"Primitive Id"
      • removedOutput schema / $defs / WorkflowPrimitiveBindingRead / properties / primitive_type / title
        Removed value: -"Primitive Type"
      • removedOutput schema / $defs / WorkflowPrimitiveBindingRead / properties / role / title
        Removed value: -"Role"
      • removedOutput schema / $defs / WorkflowPrimitiveBindingRead / title
        Removed value: -"WorkflowPrimitiveBindingRead"
      • removedOutput schema / $defs / WorkflowResultArtifactRead / properties / kind / title
        Removed value: -"Kind"
      • removedOutput schema / $defs / WorkflowResultArtifactRead / properties / media_type / title
        Removed value: -"Media Type"
      • removedOutput schema / $defs / WorkflowResultArtifactRead / properties / thumbnail_url / title
        Removed value: -"Thumbnail Url"
      • removedOutput schema / $defs / WorkflowResultArtifactRead / properties / url / title
        Removed value: -"Url"
      • removedOutput schema / $defs / WorkflowResultArtifactRead / title
        Removed value: -"WorkflowResultArtifactRead"
      • removedOutput schema / $defs / WorkflowResultBillingRead / properties / debited_units / title
        Removed value: -"Debited Units"
      • removedOutput schema / $defs / WorkflowResultBillingRead / properties / estimated_units / title
        Removed value: -"Estimated Units"
      • removedOutput schema / $defs / WorkflowResultBillingRead / properties / net_units / title
        Removed value: -"Net Units"
      • removedOutput schema / $defs / WorkflowResultBillingRead / properties / refunded_units / title
        Removed value: -"Refunded Units"
      • removedOutput schema / $defs / WorkflowResultBillingRead / title
        Removed value: -"WorkflowResultBillingRead"
      • removedOutput schema / $defs / WorkflowResultOriginRead / properties / asset_sha256 / title
        Removed value: -"Asset Sha256"
      • removedOutput schema / $defs / WorkflowResultOriginRead / properties / compliance_version / title
        Removed value: -"Compliance Version"
      • removedOutput schema / $defs / WorkflowResultOriginRead / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / WorkflowResultOriginRead / properties / model_slug / title
        Removed value: -"Model Slug"
      • removedOutput schema / $defs / WorkflowResultOriginRead / properties / provenance_id / title
        Removed value: -"Provenance Id"
      • removedOutput schema / $defs / WorkflowResultOriginRead / properties / provider / title
        Removed value: -"Provider"
      • removedOutput schema / $defs / WorkflowResultOriginRead / properties / status / title
        Removed value: -"Status"
      • removedOutput schema / $defs / WorkflowResultOriginRead / properties / uwear_c2pa_applied / title
        Removed value: -"Uwear C2Pa Applied"
      • removedOutput schema / $defs / WorkflowResultOriginRead / properties / uwear_watermark_applied / title
        Removed value: -"Uwear Watermark Applied"
      • removedOutput schema / $defs / WorkflowResultOriginRead / properties / watermark_method / title
        Removed value: -"Watermark Method"
      • removedOutput schema / $defs / WorkflowResultOriginRead / properties / watermark_strength / title
        Removed value: -"Watermark Strength"
      • removedOutput schema / $defs / WorkflowResultOriginRead / properties / watermark_version / title
        Removed value: -"Watermark Version"
      • removedOutput schema / $defs / WorkflowResultOriginRead / title
        Removed value: -"WorkflowResultOriginRead"
      • removedOutput schema / $defs / WorkflowResultProvenanceRead / properties / generation_id / title
        Removed value: -"Generation Id"
      • removedOutput schema / $defs / WorkflowResultProvenanceRead / properties / generation_result_id / title
        Removed value: -"Generation Result Id"
      • removedOutput schema / $defs / WorkflowResultProvenanceRead / title
        Removed value: -"WorkflowResultProvenanceRead"
      • removedOutput schema / $defs / WorkflowResultQaRead / properties / decision / title
        Removed value: -"Decision"
      • removedOutput schema / $defs / WorkflowResultQaRead / properties / error / title
        Removed value: -"Error"
      • removedOutput schema / $defs / WorkflowResultQaRead / properties / status / title
        Removed value: -"Status"
      • removedOutput schema / $defs / WorkflowResultQaRead / title
        Removed value: -"WorkflowResultQaRead"
      • removedOutput schema / $defs / WorkflowResultRead / properties / generation_result_id / title
        Removed value: -"Generation Result Id"
      • removedOutput schema / $defs / WorkflowResultRead / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / WorkflowResultRead / title
        Removed value: -"WorkflowResultRead"
      • removedOutput schema / $defs / WorkflowRunStatus / title
        Removed value: -"WorkflowRunStatus"
      • removedOutput schema / $defs / WorkflowTriggerActorRead / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / WorkflowTriggerActorRead / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / WorkflowTriggerActorRead / title
        Removed value: -"WorkflowTriggerActorRead"
      • removedOutput schema / $defs / WorkflowTriggerEventRead / properties / company_id / title
        Removed value: -"Company Id"
      • removedOutput schema / $defs / WorkflowTriggerEventRead / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / WorkflowTriggerEventRead / properties / payload / title
        Removed value: -"Payload"
      • removedOutput schema / $defs / WorkflowTriggerEventRead / properties / received_at / title
        Removed value: -"Received At"
      • removedOutput schema / $defs / WorkflowTriggerEventRead / title
        Removed value: -"WorkflowTriggerEventRead"
      • removedOutput schema / $defs / WorkflowTriggerIdentityRead / properties / external_event_id / title
        Removed value: -"External Event Id"
      • removedOutput schema / $defs / WorkflowTriggerIdentityRead / properties / original_trigger_event_id / title
        Removed value: -"Original Trigger Event Id"
      • removedOutput schema / $defs / WorkflowTriggerIdentityRead / properties / payload_hash / title
        Removed value: -"Payload Hash"
      • removedOutput schema / $defs / WorkflowTriggerIdentityRead / properties / replay_id / title
        Removed value: -"Replay Id"
      • removedOutput schema / $defs / WorkflowTriggerIdentityRead / properties / source / title
        Removed value: -"Source"
      • removedOutput schema / $defs / WorkflowTriggerIdentityRead / title
        Removed value: -"WorkflowTriggerIdentityRead"
      • removedOutput schema / $defs / WorkflowTriggerObjectRead / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / WorkflowTriggerObjectRead / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / WorkflowTriggerObjectRead / title
        Removed value: -"WorkflowTriggerObjectRead"
      • removedOutput schema / properties / contract_version / title
        Removed value: -"Contract Version"
      • removedOutput schema / properties / created_at / title
        Removed value: -"Created At"
      • removedOutput schema / properties / definition_hash / title
        Removed value: -"Definition Hash"
      • removedOutput schema / properties / finished_at / title
        Removed value: -"Finished At"
      • removedOutput schema / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / properties / is_test / title
        Removed value: -"Is Test"
      • removedOutput schema / properties / node_runs / title
        Removed value: -"Node Runs"
      • removedOutput schema / properties / resource_type / title
        Removed value: -"Resource Type"
      • removedOutput schema / properties / results / title
        Removed value: -"Results"
      • removedOutput schema / properties / started_at / title
        Removed value: -"Started At"
      • removedOutput schema / properties / workflow_id / title
        Removed value: -"Workflow Id"
      • removedOutput schema / properties / workflow_version_id / title
        Removed value: -"Workflow Version Id"
      • removedOutput schema / title
        Removed value: -"WorkflowRunDetailRead"
    • Changedget_production_workflow_version149 fields changed
      • removedInput schema / properties / version_id / title
        Removed value: -"Version Id"
      • removedInput schema / properties / workflow_id / title
        Removed value: -"Workflow Id"
      • removedInput schema / title
        Removed value: -"WorkflowVersionIdentityInput"
      • removedOutput schema / $defs / AiModelInputConfig / properties / model_slug / title
        Removed value: -"Model Slug"
      • removedOutput schema / $defs / AiModelInputConfig / title
        Removed value: -"AiModelInputConfig"
      • removedOutput schema / $defs / AiModelInputNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / AiModelInputNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / AiModelInputNodeInput / title
        Removed value: -"AiModelInputNodeInput"
      • removedOutput schema / $defs / ArtDirectionInputConfig / properties / art_direction_id / title
        Removed value: -"Art Direction Id"
      • removedOutput schema / $defs / ArtDirectionInputConfig / properties / ask_at_run_time / title
        Removed value: -"Ask At Run Time"
      • removedOutput schema / $defs / ArtDirectionInputConfig / title
        Removed value: -"ArtDirectionInputConfig"
      • removedOutput schema / $defs / ArtDirectionInputNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / ArtDirectionInputNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / ArtDirectionInputNodeInput / title
        Removed value: -"ArtDirectionInputNodeInput"
      • removedOutput schema / $defs / AvatarInputConfig / properties / ask_at_run_time / title
        Removed value: -"Ask At Run Time"
      • removedOutput schema / $defs / AvatarInputConfig / properties / avatar_id / title
        Removed value: -"Avatar Id"
      • removedOutput schema / $defs / AvatarInputConfig / title
        Removed value: -"AvatarInputConfig"
      • removedOutput schema / $defs / AvatarInputNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / AvatarInputNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / AvatarInputNodeInput / title
        Removed value: -"AvatarInputNodeInput"
      • removedOutput schema / $defs / BranchNodeConfig / properties / cases / title
        Removed value: -"Cases"
      • removedOutput schema / $defs / BranchNodeConfig / properties / condition_type / title
        Removed value: -"Condition Type"
      • removedOutput schema / $defs / BranchNodeConfig / title
        Removed value: -"BranchNodeConfig"
      • removedOutput schema / $defs / BranchNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / BranchNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / BranchNodeInput / title
        Removed value: -"BranchNodeInput"
      • removedOutput schema / $defs / ClothingInputConfig / properties / ask_at_run_time / title
        Removed value: -"Ask At Run Time"
      • removedOutput schema / $defs / ClothingInputConfig / properties / clothing_item_id / title
        Removed value: -"Clothing Item Id"
      • removedOutput schema / $defs / ClothingInputConfig / title
        Removed value: -"ClothingInputConfig"
      • removedOutput schema / $defs / ClothingInputNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / ClothingInputNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / ClothingInputNodeInput / title
        Removed value: -"ClothingInputNodeInput"
      • removedOutput schema / $defs / DeliverTagDestination / properties / tag_ids / title
        Removed value: -"Tag Ids"
      • removedOutput schema / $defs / DeliverTagDestination / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / DeliverTagDestination / title
        Removed value: -"DeliverTagDestination"
      • removedOutput schema / $defs / DeliverWebhookDestination / properties / event_type / title
        Removed value: -"Event Type"
      • removedOutput schema / $defs / DeliverWebhookDestination / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / DeliverWebhookDestination / properties / webhook_id / title
        Removed value: -"Webhook Id"
      • removedOutput schema / $defs / DeliverWebhookDestination / title
        Removed value: -"DeliverWebhookDestination"
      • removedOutput schema / $defs / EdgeBindingInput / properties / mode / title
        Removed value: -"Mode"
      • removedOutput schema / $defs / EdgeBindingInput / properties / required / title
        Removed value: -"Required"
      • removedOutput schema / $defs / EdgeBindingInput / properties / role / title
        Removed value: -"Role"
      • removedOutput schema / $defs / EdgeBindingInput / title
        Removed value: -"EdgeBindingInput"
      • removedOutput schema / $defs / EdgeEndpointInput / properties / node_id / title
        Removed value: -"Node Id"
      • removedOutput schema / $defs / EdgeEndpointInput / properties / port / title
        Removed value: -"Port"
      • removedOutput schema / $defs / EdgeEndpointInput / title
        Removed value: -"EdgeEndpointInput"
      • removedOutput schema / $defs / GenerateNodeConfig / properties / model_slug / title
        Removed value: -"Model Slug"
      • removedOutput schema / $defs / GenerateNodeConfig / properties / parameters / title
        Removed value: -"Parameters"
      • removedOutput schema / $defs / GenerateNodeConfig / properties / variant / title
        Removed value: -"Variant"
      • removedOutput schema / $defs / GenerateNodeConfig / title
        Removed value: -"GenerateNodeConfig"
      • removedOutput schema / $defs / GenerateNodeConfigV1_2 / properties / model_slug / title
        Removed value: -"Model Slug"
      • removedOutput schema / $defs / GenerateNodeConfigV1_2 / properties / parameters / title
        Removed value: -"Parameters"
      • removedOutput schema / $defs / GenerateNodeConfigV1_2 / properties / variant / title
        Removed value: -"Variant"
      • removedOutput schema / $defs / GenerateNodeConfigV1_2 / title
        Removed value: -"GenerateNodeConfigV1_2"
      • removedOutput schema / $defs / GenerateNodeInput / properties / config / title
        Removed value: -"Config"
      • removedOutput schema / $defs / GenerateNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / GenerateNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / GenerateNodeInput / title
        Removed value: -"GenerateNodeInput"
      • removedOutput schema / $defs / ImageInputConfig / properties / ask_at_run_time / title
        Removed value: -"Ask At Run Time"
      • removedOutput schema / $defs / ImageInputConfig / properties / generation_result_id / title
        Removed value: -"Generation Result Id"
      • removedOutput schema / $defs / ImageInputConfig / title
        Removed value: -"ImageInputConfig"
      • removedOutput schema / $defs / ImageInputNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / ImageInputNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / ImageInputNodeInput / title
        Removed value: -"ImageInputNodeInput"
      • removedOutput schema / $defs / InfrastructureRetryInput / properties / initial_backoff_seconds / title
        Removed value: -"Initial Backoff Seconds"
      • removedOutput schema / $defs / InfrastructureRetryInput / properties / max_attempts / title
        Removed value: -"Max Attempts"
      • removedOutput schema / $defs / InfrastructureRetryInput / properties / max_backoff_seconds / title
        Removed value: -"Max Backoff Seconds"
      • removedOutput schema / $defs / InfrastructureRetryInput / title
        Removed value: -"InfrastructureRetryInput"
      • removedOutput schema / $defs / LocationInputConfig / properties / ask_at_run_time / title
        Removed value: -"Ask At Run Time"
      • removedOutput schema / $defs / LocationInputConfig / properties / location_id / title
        Removed value: -"Location Id"
      • removedOutput schema / $defs / LocationInputConfig / title
        Removed value: -"LocationInputConfig"
      • removedOutput schema / $defs / LocationInputNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / LocationInputNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / LocationInputNodeInput / title
        Removed value: -"LocationInputNodeInput"
      • removedOutput schema / $defs / NotifyNodeConfig / properties / event_type / title
        Removed value: -"Event Type"
      • removedOutput schema / $defs / NotifyNodeConfig / properties / webhook_id / title
        Removed value: -"Webhook Id"
      • removedOutput schema / $defs / NotifyNodeConfig / title
        Removed value: -"NotifyNodeConfig"
      • removedOutput schema / $defs / NotifyNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / NotifyNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / NotifyNodeInput / title
        Removed value: -"NotifyNodeInput"
      • removedOutput schema / $defs / OutputNodeConfig / properties / projection / title
        Removed value: -"Projection"
      • removedOutput schema / $defs / OutputNodeConfig / title
        Removed value: -"OutputNodeConfig"
      • removedOutput schema / $defs / OutputNodeConfigV1_2 / properties / projection / title
        Removed value: -"Projection"
      • removedOutput schema / $defs / OutputNodeConfigV1_2 / title
        Removed value: -"OutputNodeConfigV1_2"
      • removedOutput schema / $defs / OutputNodeConfigV1_3 / properties / destinations / title
        Removed value: -"Destinations"
      • removedOutput schema / $defs / OutputNodeConfigV1_3 / properties / projection / title
        Removed value: -"Projection"
      • removedOutput schema / $defs / OutputNodeConfigV1_3 / title
        Removed value: -"OutputNodeConfigV1_3"
      • removedOutput schema / $defs / OutputNodeConfigV1_4 / properties / destinations / title
        Removed value: -"Destinations"
      • removedOutput schema / $defs / OutputNodeConfigV1_4 / title
        Removed value: -"OutputNodeConfigV1_4"
      • removedOutput schema / $defs / OutputNodeInput / properties / config / title
        Removed value: -"Config"
      • removedOutput schema / $defs / OutputNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / OutputNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / OutputNodeInput / title
        Removed value: -"OutputNodeInput"
      • removedOutput schema / $defs / PromptInputConfig / properties / ask_at_run_time / title
        Removed value: -"Ask At Run Time"
      • removedOutput schema / $defs / PromptInputConfig / properties / text / title
        Removed value: -"Text"
      • removedOutput schema / $defs / PromptInputConfig / title
        Removed value: -"PromptInputConfig"
      • removedOutput schema / $defs / PromptInputNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / PromptInputNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / PromptInputNodeInput / title
        Removed value: -"PromptInputNodeInput"
      • removedOutput schema / $defs / QaGateNodeConfig / properties / max_content_retries / title
        Removed value: -"Max Content Retries"
      • removedOutput schema / $defs / QaGateNodeConfig / properties / policy / title
        Removed value: -"Policy"
      • removedOutput schema / $defs / QaGateNodeConfig / title
        Removed value: -"QaGateNodeConfig"
      • removedOutput schema / $defs / QaGateNodeConfigV1_2 / properties / max_content_retries / title
        Removed value: -"Max Content Retries"
      • removedOutput schema / $defs / QaGateNodeConfigV1_2 / properties / policy / title
        Removed value: -"Policy"
      • removedOutput schema / $defs / QaGateNodeConfigV1_2 / title
        Removed value: -"QaGateNodeConfigV1_2"
      • removedOutput schema / $defs / QaGateNodeInput / properties / config / title
        Removed value: -"Config"
      • removedOutput schema / $defs / QaGateNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / QaGateNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / QaGateNodeInput / title
        Removed value: -"QaGateNodeInput"
      • removedOutput schema / $defs / QaGraphRetryConfig / properties / max_retries / title
        Removed value: -"Max Retries"
      • removedOutput schema / $defs / QaGraphRetryConfig / properties / retry_from_node_id / title
        Removed value: -"Retry From Node Id"
      • removedOutput schema / $defs / QaGraphRetryConfig / title
        Removed value: -"QaGraphRetryConfig"
      • removedOutput schema / $defs / ReadinessInput / properties / mode / title
        Removed value: -"Mode"
      • removedOutput schema / $defs / ReadinessInput / title
        Removed value: -"ReadinessInput"
      • removedOutput schema / $defs / TriggerNodeConfig / properties / settings / title
        Removed value: -"Settings"
      • removedOutput schema / $defs / TriggerNodeConfig / properties / source / title
        Removed value: -"Source"
      • removedOutput schema / $defs / TriggerNodeConfig / title
        Removed value: -"TriggerNodeConfig"
      • removedOutput schema / $defs / TriggerNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / TriggerNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / TriggerNodeInput / title
        Removed value: -"TriggerNodeInput"
      • removedOutput schema / $defs / WorkflowDefinitionVersionRead / properties / base_version_id / title
        Removed value: -"Base Version Id"
      • removedOutput schema / $defs / WorkflowDefinitionVersionRead / properties / contract_version / title
        Removed value: -"Contract Version"
      • removedOutput schema / $defs / WorkflowDefinitionVersionRead / properties / created_at / title
        Removed value: -"Created At"
      • removedOutput schema / $defs / WorkflowDefinitionVersionRead / properties / created_by_profile_id / title
        Removed value: -"Created By Profile Id"
      • removedOutput schema / $defs / WorkflowDefinitionVersionRead / properties / definition_hash / title
        Removed value: -"Definition Hash"
      • removedOutput schema / $defs / WorkflowDefinitionVersionRead / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / WorkflowDefinitionVersionRead / properties / number / title
        Removed value: -"Number"
      • removedOutput schema / $defs / WorkflowDefinitionVersionRead / properties / published_at / title
        Removed value: -"Published At"
      • removedOutput schema / $defs / WorkflowDefinitionVersionRead / title
        Removed value: -"WorkflowDefinitionVersionRead"
      • removedOutput schema / $defs / WorkflowDefinitionWorkflowRead / properties / archived / title
        Removed value: -"Archived"
      • removedOutput schema / $defs / WorkflowDefinitionWorkflowRead / properties / company_id / title
        Removed value: -"Company Id"
      • removedOutput schema / $defs / WorkflowDefinitionWorkflowRead / properties / created_by_profile_id / title
        Removed value: -"Created By Profile Id"
      • removedOutput schema / $defs / WorkflowDefinitionWorkflowRead / properties / enabled / title
        Removed value: -"Enabled"
      • removedOutput schema / $defs / WorkflowDefinitionWorkflowRead / properties / enabled_version_id / title
        Removed value: -"Enabled Version Id"
      • removedOutput schema / $defs / WorkflowDefinitionWorkflowRead / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / WorkflowDefinitionWorkflowRead / properties / name / title
        Removed value: -"Name"
      • removedOutput schema / $defs / WorkflowDefinitionWorkflowRead / properties / updated_by_profile_id / title
        Removed value: -"Updated By Profile Id"
      • removedOutput schema / $defs / WorkflowDefinitionWorkflowRead / title
        Removed value: -"WorkflowDefinitionWorkflowRead"
      • removedOutput schema / $defs / WorkflowEdgeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / WorkflowEdgeInput / title
        Removed value: -"WorkflowEdgeInput"
      • removedOutput schema / $defs / WorkflowFailurePolicy / title
        Removed value: -"WorkflowFailurePolicy"
      • removedOutput schema / $defs / WorkflowVersionState / title
        Removed value: -"WorkflowVersionState"
      • removedOutput schema / properties / contract_version / title
        Removed value: -"Contract Version"
      • removedOutput schema / properties / edges / title
        Removed value: -"Edges"
      • removedOutput schema / properties / estimated_credit_units / title
        Removed value: -"Estimated Credit Units"
      • removedOutput schema / properties / nodes / title
        Removed value: -"Nodes"
      • removedOutput schema / properties / resource_type / title
        Removed value: -"Resource Type"
      • removedOutput schema / properties / result_projection / title
        Removed value: -"Result Projection"
      • removedOutput schema / title
        Removed value: -"WorkflowDefinitionRead"
    • Changedlist_production_workflow_runs29 fields changed
      • removedInput schema / $defs / WorkflowRunStatus / title
        Removed value: -"WorkflowRunStatus"
      • removedInput schema / properties / items_per_page / title
        Removed value: -"Items Per Page"
      • removedInput schema / properties / page / title
        Removed value: -"Page"
      • removedInput schema / properties / workflow_id / title
        Removed value: -"Workflow Id"
      • removedInput schema / title
        Removed value: -"ListWorkflowRunsInput"
      • removedOutput schema / $defs / WorkflowRunStatus / title
        Removed value: -"WorkflowRunStatus"
      • removedOutput schema / $defs / WorkflowRunSummaryRead / properties / contract_version / title
        Removed value: -"Contract Version"
      • removedOutput schema / $defs / WorkflowRunSummaryRead / properties / created_at / title
        Removed value: -"Created At"
      • removedOutput schema / $defs / WorkflowRunSummaryRead / properties / debited_credit_units / title
        Removed value: -"Debited Credit Units"
      • removedOutput schema / $defs / WorkflowRunSummaryRead / properties / definition_hash / title
        Removed value: -"Definition Hash"
      • removedOutput schema / $defs / WorkflowRunSummaryRead / properties / estimated_credit_units / title
        Removed value: -"Estimated Credit Units"
      • removedOutput schema / $defs / WorkflowRunSummaryRead / properties / finished_at / title
        Removed value: -"Finished At"
      • removedOutput schema / $defs / WorkflowRunSummaryRead / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / WorkflowRunSummaryRead / properties / is_test / title
        Removed value: -"Is Test"
      • removedOutput schema / $defs / WorkflowRunSummaryRead / properties / net_credit_units / title
        Removed value: -"Net Credit Units"
      • removedOutput schema / $defs / WorkflowRunSummaryRead / properties / refunded_credit_units / title
        Removed value: -"Refunded Credit Units"
      • removedOutput schema / $defs / WorkflowRunSummaryRead / properties / resource_type / title
        Removed value: -"Resource Type"
      • removedOutput schema / $defs / WorkflowRunSummaryRead / properties / started_at / title
        Removed value: -"Started At"
      • removedOutput schema / $defs / WorkflowRunSummaryRead / properties / trigger_object_id / title
        Removed value: -"Trigger Object Id"
      • removedOutput schema / $defs / WorkflowRunSummaryRead / properties / trigger_object_type / title
        Removed value: -"Trigger Object Type"
      • removedOutput schema / $defs / WorkflowRunSummaryRead / properties / trigger_source / title
        Removed value: -"Trigger Source"
      • removedOutput schema / $defs / WorkflowRunSummaryRead / properties / workflow_id / title
        Removed value: -"Workflow Id"
      • removedOutput schema / $defs / WorkflowRunSummaryRead / properties / workflow_version_id / title
        Removed value: -"Workflow Version Id"
      • removedOutput schema / $defs / WorkflowRunSummaryRead / title
        Removed value: -"WorkflowRunSummaryRead"
      • removedOutput schema / properties / data / title
        Removed value: -"Data"
      • removedOutput schema / properties / items_per_page / title
        Removed value: -"Items Per Page"
      • removedOutput schema / properties / page / title
        Removed value: -"Page"
      • removedOutput schema / properties / total_count / title
        Removed value: -"Total Count"
      • removedOutput schema / title
        Removed value: -"PaginatedWorkflowRunRead"
    • Changedlist_production_workflow_versions22 fields changed
      • removedInput schema / properties / items_per_page / title
        Removed value: -"Items Per Page"
      • removedInput schema / properties / page / title
        Removed value: -"Page"
      • removedInput schema / properties / workflow_id / title
        Removed value: -"Workflow Id"
      • removedInput schema / title
        Removed value: -"ListWorkflowVersionsInput"
      • removedOutput schema / $defs / WorkflowVersionState / title
        Removed value: -"WorkflowVersionState"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / base_version_id / title
        Removed value: -"Base Version Id"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / contract_version / title
        Removed value: -"Contract Version"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / created_at / title
        Removed value: -"Created At"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / created_by_profile_id / title
        Removed value: -"Created By Profile Id"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / definition_hash / title
        Removed value: -"Definition Hash"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / estimated_credit_units / title
        Removed value: -"Estimated Credit Units"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / number / title
        Removed value: -"Number"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / published_at / title
        Removed value: -"Published At"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / published_by_profile_id / title
        Removed value: -"Published By Profile Id"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / properties / updated_at / title
        Removed value: -"Updated At"
      • removedOutput schema / $defs / WorkflowVersionSummaryRead / title
        Removed value: -"WorkflowVersionSummaryRead"
      • removedOutput schema / properties / data / title
        Removed value: -"Data"
      • removedOutput schema / properties / items_per_page / title
        Removed value: -"Items Per Page"
      • removedOutput schema / properties / page / title
        Removed value: -"Page"
      • removedOutput schema / properties / total_count / title
        Removed value: -"Total Count"
      • removedOutput schema / title
        Removed value: -"WorkflowVersionListRead"
    • Changedlist_production_workflows19 fields changed
      • removedInput schema / properties / include_archived / title
        Removed value: -"Include Archived"
      • removedInput schema / properties / items_per_page / title
        Removed value: -"Items Per Page"
      • removedInput schema / properties / page / title
        Removed value: -"Page"
      • removedInput schema / title
        Removed value: -"ListWorkflowsInput"
      • removedOutput schema / $defs / WorkflowResourceRead / properties / archived / title
        Removed value: -"Archived"
      • removedOutput schema / $defs / WorkflowResourceRead / properties / company_id / title
        Removed value: -"Company Id"
      • removedOutput schema / $defs / WorkflowResourceRead / properties / created_at / title
        Removed value: -"Created At"
      • removedOutput schema / $defs / WorkflowResourceRead / properties / created_by_profile_id / title
        Removed value: -"Created By Profile Id"
      • removedOutput schema / $defs / WorkflowResourceRead / properties / enabled / title
        Removed value: -"Enabled"
      • removedOutput schema / $defs / WorkflowResourceRead / properties / enabled_version_id / title
        Removed value: -"Enabled Version Id"
      • removedOutput schema / $defs / WorkflowResourceRead / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / WorkflowResourceRead / properties / name / title
        Removed value: -"Name"
      • removedOutput schema / $defs / WorkflowResourceRead / properties / run_time_slot_kinds / title
        Removed value: -"Run Time Slot Kinds"
      • removedOutput schema / $defs / WorkflowResourceRead / properties / updated_at / title
        Removed value: -"Updated At"
      • removedOutput schema / $defs / WorkflowResourceRead / properties / updated_by_profile_id / title
        Removed value: -"Updated By Profile Id"
      • removedOutput schema / $defs / WorkflowResourceRead / title
        Removed value: -"WorkflowResourceRead"
      • removedOutput schema / properties / data / title
        Removed value: -"Data"
      • removedOutput schema / properties / total_count / title
        Removed value: -"Total Count"
      • removedOutput schema / title
        Removed value: -"PaginatedWorkflowRead"
    • Changedprepare_local_garment_upload1 field changed
      • removedInput schema / $defs
        Removed value: -{
        -  "LocalGarmentUploadFileInput": {
        -    "additionalProperties": false,
        -    "description": "Metadata for one client-local image that will be uploaded directly.",
        -    "properties": {
        -      "content_length": {
        -        "description": "Exact local image size in bytes; maximum 25 MB",
        -        "exclusiveMinimum": 0,
        -        "maximum": 26214400,
        -        "type": "integer"
        -      },
        -      "content_type": {
        -        "description": "Image MIME type used by the direct upload",
        -        "enum": [
        -          "image/jpeg",
        -          "image/png",
        -          "image/webp",
        -          "image/avif",
        -          "image/gif",
        -          "image/bmp",
        -          "image/tiff"
        -        ],
        -        "type": "string"
        -      },
        -      "file_name": {
        -        "description": "Local image filename only; never include its filesystem path",
        -        "maxLength": 255,
        -        "minLength": 1,
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "file_name",
        -      "content_type",
        -      "content_length"
        -    ],
        -    "type": "object"
        -  }
        -}
    • Changedpropose_brief5 fields changed
      • removedInput schema / $defs / GenerationCommand / properties / source / discriminator / mapping
        Removed value: -{
        -  "generation_result": "#/$defs/GenerationResultCommandSource",
        -  "pipeline_step": "#/$defs/PipelineStepCommandSource",
        -  "public_url": "#/$defs/PublicUrlCommandSource",
        -  "uploaded_file": "#/$defs/UploadedFileCommandSource"
        -}
      • removedInput schema / $defs / GenerationResultCommandSource
        Removed value: -{
        -  "properties": {
        -    "generation_result_id": {
        -      "minimum": 1,
        -      "type": "integer"
        -    },
        -    "type": {
        -      "const": "generation_result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "type",
        -    "generation_result_id"
        -  ],
        -  "type": "object"
        -}
      • removedInput schema / $defs / PipelineStepCommandSource
        Removed value: -{
        -  "description": "Durable identity for a source produced by an earlier pipeline step.",
        -  "properties": {
        -    "output_index": {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    "post_claim_reference": {
        -      "minLength": 1,
        -      "type": "string"
        -    },
        -    "step_index": {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    "type": {
        -      "const": "pipeline_step",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "type",
        -    "post_claim_reference",
        -    "step_index",
        -    "output_index"
        -  ],
        -  "type": "object"
        -}
      • removedInput schema / $defs / PublicUrlCommandSource
        Removed value: -{
        -  "properties": {
        -    "image_url": {
        -      "minLength": 1,
        -      "type": "string"
        -    },
        -    "type": {
        -      "const": "public_url",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "type",
        -    "image_url"
        -  ],
        -  "type": "object"
        -}
      • removedInput schema / $defs / UploadedFileCommandSource
        Removed value: -{
        -  "properties": {
        -    "type": {
        -      "const": "uploaded_file",
        -      "type": "string"
        -    },
        -    "uploaded_file_id": {
        -      "minimum": 1,
        -      "type": "integer"
        -    }
        -  },
        -  "required": [
        -    "type",
        -    "uploaded_file_id"
        -  ],
        -  "type": "object"
        -}
    • Changedpublish_production_workflow_version149 fields changed
      • removedInput schema / properties / version_id / title
        Removed value: -"Version Id"
      • removedInput schema / properties / workflow_id / title
        Removed value: -"Workflow Id"
      • removedInput schema / title
        Removed value: -"WorkflowVersionIdentityInput"
      • removedOutput schema / $defs / AiModelInputConfig / properties / model_slug / title
        Removed value: -"Model Slug"
      • removedOutput schema / $defs / AiModelInputConfig / title
        Removed value: -"AiModelInputConfig"
      • removedOutput schema / $defs / AiModelInputNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / AiModelInputNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / AiModelInputNodeInput / title
        Removed value: -"AiModelInputNodeInput"
      • removedOutput schema / $defs / ArtDirectionInputConfig / properties / art_direction_id / title
        Removed value: -"Art Direction Id"
      • removedOutput schema / $defs / ArtDirectionInputConfig / properties / ask_at_run_time / title
        Removed value: -"Ask At Run Time"
      • removedOutput schema / $defs / ArtDirectionInputConfig / title
        Removed value: -"ArtDirectionInputConfig"
      • removedOutput schema / $defs / ArtDirectionInputNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / ArtDirectionInputNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / ArtDirectionInputNodeInput / title
        Removed value: -"ArtDirectionInputNodeInput"
      • removedOutput schema / $defs / AvatarInputConfig / properties / ask_at_run_time / title
        Removed value: -"Ask At Run Time"
      • removedOutput schema / $defs / AvatarInputConfig / properties / avatar_id / title
        Removed value: -"Avatar Id"
      • removedOutput schema / $defs / AvatarInputConfig / title
        Removed value: -"AvatarInputConfig"
      • removedOutput schema / $defs / AvatarInputNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / AvatarInputNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / AvatarInputNodeInput / title
        Removed value: -"AvatarInputNodeInput"
      • removedOutput schema / $defs / BranchNodeConfig / properties / cases / title
        Removed value: -"Cases"
      • removedOutput schema / $defs / BranchNodeConfig / properties / condition_type / title
        Removed value: -"Condition Type"
      • removedOutput schema / $defs / BranchNodeConfig / title
        Removed value: -"BranchNodeConfig"
      • removedOutput schema / $defs / BranchNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / BranchNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / BranchNodeInput / title
        Removed value: -"BranchNodeInput"
      • removedOutput schema / $defs / ClothingInputConfig / properties / ask_at_run_time / title
        Removed value: -"Ask At Run Time"
      • removedOutput schema / $defs / ClothingInputConfig / properties / clothing_item_id / title
        Removed value: -"Clothing Item Id"
      • removedOutput schema / $defs / ClothingInputConfig / title
        Removed value: -"ClothingInputConfig"
      • removedOutput schema / $defs / ClothingInputNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / ClothingInputNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / ClothingInputNodeInput / title
        Removed value: -"ClothingInputNodeInput"
      • removedOutput schema / $defs / DeliverTagDestination / properties / tag_ids / title
        Removed value: -"Tag Ids"
      • removedOutput schema / $defs / DeliverTagDestination / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / DeliverTagDestination / title
        Removed value: -"DeliverTagDestination"
      • removedOutput schema / $defs / DeliverWebhookDestination / properties / event_type / title
        Removed value: -"Event Type"
      • removedOutput schema / $defs / DeliverWebhookDestination / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / DeliverWebhookDestination / properties / webhook_id / title
        Removed value: -"Webhook Id"
      • removedOutput schema / $defs / DeliverWebhookDestination / title
        Removed value: -"DeliverWebhookDestination"
      • removedOutput schema / $defs / EdgeBindingInput / properties / mode / title
        Removed value: -"Mode"
      • removedOutput schema / $defs / EdgeBindingInput / properties / required / title
        Removed value: -"Required"
      • removedOutput schema / $defs / EdgeBindingInput / properties / role / title
        Removed value: -"Role"
      • removedOutput schema / $defs / EdgeBindingInput / title
        Removed value: -"EdgeBindingInput"
      • removedOutput schema / $defs / EdgeEndpointInput / properties / node_id / title
        Removed value: -"Node Id"
      • removedOutput schema / $defs / EdgeEndpointInput / properties / port / title
        Removed value: -"Port"
      • removedOutput schema / $defs / EdgeEndpointInput / title
        Removed value: -"EdgeEndpointInput"
      • removedOutput schema / $defs / GenerateNodeConfig / properties / model_slug / title
        Removed value: -"Model Slug"
      • removedOutput schema / $defs / GenerateNodeConfig / properties / parameters / title
        Removed value: -"Parameters"
      • removedOutput schema / $defs / GenerateNodeConfig / properties / variant / title
        Removed value: -"Variant"
      • removedOutput schema / $defs / GenerateNodeConfig / title
        Removed value: -"GenerateNodeConfig"
      • removedOutput schema / $defs / GenerateNodeConfigV1_2 / properties / model_slug / title
        Removed value: -"Model Slug"
      • removedOutput schema / $defs / GenerateNodeConfigV1_2 / properties / parameters / title
        Removed value: -"Parameters"
      • removedOutput schema / $defs / GenerateNodeConfigV1_2 / properties / variant / title
        Removed value: -"Variant"
      • removedOutput schema / $defs / GenerateNodeConfigV1_2 / title
        Removed value: -"GenerateNodeConfigV1_2"
      • removedOutput schema / $defs / GenerateNodeInput / properties / config / title
        Removed value: -"Config"
      • removedOutput schema / $defs / GenerateNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / GenerateNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / GenerateNodeInput / title
        Removed value: -"GenerateNodeInput"
      • removedOutput schema / $defs / ImageInputConfig / properties / ask_at_run_time / title
        Removed value: -"Ask At Run Time"
      • removedOutput schema / $defs / ImageInputConfig / properties / generation_result_id / title
        Removed value: -"Generation Result Id"
      • removedOutput schema / $defs / ImageInputConfig / title
        Removed value: -"ImageInputConfig"
      • removedOutput schema / $defs / ImageInputNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / ImageInputNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / ImageInputNodeInput / title
        Removed value: -"ImageInputNodeInput"
      • removedOutput schema / $defs / InfrastructureRetryInput / properties / initial_backoff_seconds / title
        Removed value: -"Initial Backoff Seconds"
      • removedOutput schema / $defs / InfrastructureRetryInput / properties / max_attempts / title
        Removed value: -"Max Attempts"
      • removedOutput schema / $defs / InfrastructureRetryInput / properties / max_backoff_seconds / title
        Removed value: -"Max Backoff Seconds"
      • removedOutput schema / $defs / InfrastructureRetryInput / title
        Removed value: -"InfrastructureRetryInput"
      • removedOutput schema / $defs / LocationInputConfig / properties / ask_at_run_time / title
        Removed value: -"Ask At Run Time"
      • removedOutput schema / $defs / LocationInputConfig / properties / location_id / title
        Removed value: -"Location Id"
      • removedOutput schema / $defs / LocationInputConfig / title
        Removed value: -"LocationInputConfig"
      • removedOutput schema / $defs / LocationInputNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / LocationInputNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / LocationInputNodeInput / title
        Removed value: -"LocationInputNodeInput"
      • removedOutput schema / $defs / NotifyNodeConfig / properties / event_type / title
        Removed value: -"Event Type"
      • removedOutput schema / $defs / NotifyNodeConfig / properties / webhook_id / title
        Removed value: -"Webhook Id"
      • removedOutput schema / $defs / NotifyNodeConfig / title
        Removed value: -"NotifyNodeConfig"
      • removedOutput schema / $defs / NotifyNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / NotifyNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / NotifyNodeInput / title
        Removed value: -"NotifyNodeInput"
      • removedOutput schema / $defs / OutputNodeConfig / properties / projection / title
        Removed value: -"Projection"
      • removedOutput schema / $defs / OutputNodeConfig / title
        Removed value: -"OutputNodeConfig"
      • removedOutput schema / $defs / OutputNodeConfigV1_2 / properties / projection / title
        Removed value: -"Projection"
      • removedOutput schema / $defs / OutputNodeConfigV1_2 / title
        Removed value: -"OutputNodeConfigV1_2"
      • removedOutput schema / $defs / OutputNodeConfigV1_3 / properties / destinations / title
        Removed value: -"Destinations"
      • removedOutput schema / $defs / OutputNodeConfigV1_3 / properties / projection / title
        Removed value: -"Projection"
      • removedOutput schema / $defs / OutputNodeConfigV1_3 / title
        Removed value: -"OutputNodeConfigV1_3"
      • removedOutput schema / $defs / OutputNodeConfigV1_4 / properties / destinations / title
        Removed value: -"Destinations"
      • removedOutput schema / $defs / OutputNodeConfigV1_4 / title
        Removed value: -"OutputNodeConfigV1_4"
      • removedOutput schema / $defs / OutputNodeInput / properties / config / title
        Removed value: -"Config"
      • removedOutput schema / $defs / OutputNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / OutputNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / OutputNodeInput / title
        Removed value: -"OutputNodeInput"
      • removedOutput schema / $defs / PromptInputConfig / properties / ask_at_run_time / title
        Removed value: -"Ask At Run Time"
      • removedOutput schema / $defs / PromptInputConfig / properties / text / title
        Removed value: -"Text"
      • removedOutput schema / $defs / PromptInputConfig / title
        Removed value: -"PromptInputConfig"
      • removedOutput schema / $defs / PromptInputNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / PromptInputNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / PromptInputNodeInput / title
        Removed value: -"PromptInputNodeInput"
      • removedOutput schema / $defs / QaGateNodeConfig / properties / max_content_retries / title
        Removed value: -"Max Content Retries"
      • removedOutput schema / $defs / QaGateNodeConfig / properties / policy / title
        Removed value: -"Policy"
      • removedOutput schema / $defs / QaGateNodeConfig / title
        Removed value: -"QaGateNodeConfig"
      • removedOutput schema / $defs / QaGateNodeConfigV1_2 / properties / max_content_retries / title
        Removed value: -"Max Content Retries"
      • removedOutput schema / $defs / QaGateNodeConfigV1_2 / properties / policy / title
        Removed value: -"Policy"
      • removedOutput schema / $defs / QaGateNodeConfigV1_2 / title
        Removed value: -"QaGateNodeConfigV1_2"
      • removedOutput schema / $defs / QaGateNodeInput / properties / config / title
        Removed value: -"Config"
      • removedOutput schema / $defs / QaGateNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / QaGateNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / QaGateNodeInput / title
        Removed value: -"QaGateNodeInput"
      • removedOutput schema / $defs / QaGraphRetryConfig / properties / max_retries / title
        Removed value: -"Max Retries"
      • removedOutput schema / $defs / QaGraphRetryConfig / properties / retry_from_node_id / title
        Removed value: -"Retry From Node Id"
      • removedOutput schema / $defs / QaGraphRetryConfig / title
        Removed value: -"QaGraphRetryConfig"
      • removedOutput schema / $defs / ReadinessInput / properties / mode / title
        Removed value: -"Mode"
      • removedOutput schema / $defs / ReadinessInput / title
        Removed value: -"ReadinessInput"
      • removedOutput schema / $defs / TriggerNodeConfig / properties / settings / title
        Removed value: -"Settings"
      • removedOutput schema / $defs / TriggerNodeConfig / properties / source / title
        Removed value: -"Source"
      • removedOutput schema / $defs / TriggerNodeConfig / title
        Removed value: -"TriggerNodeConfig"
      • removedOutput schema / $defs / TriggerNodeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / TriggerNodeInput / properties / type / title
        Removed value: -"Type"
      • removedOutput schema / $defs / TriggerNodeInput / title
        Removed value: -"TriggerNodeInput"
      • removedOutput schema / $defs / WorkflowDefinitionVersionRead / properties / base_version_id / title
        Removed value: -"Base Version Id"
      • removedOutput schema / $defs / WorkflowDefinitionVersionRead / properties / contract_version / title
        Removed value: -"Contract Version"
      • removedOutput schema / $defs / WorkflowDefinitionVersionRead / properties / created_at / title
        Removed value: -"Created At"
      • removedOutput schema / $defs / WorkflowDefinitionVersionRead / properties / created_by_profile_id / title
        Removed value: -"Created By Profile Id"
      • removedOutput schema / $defs / WorkflowDefinitionVersionRead / properties / definition_hash / title
        Removed value: -"Definition Hash"
      • removedOutput schema / $defs / WorkflowDefinitionVersionRead / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / WorkflowDefinitionVersionRead / properties / number / title
        Removed value: -"Number"
      • removedOutput schema / $defs / WorkflowDefinitionVersionRead / properties / published_at / title
        Removed value: -"Published At"
      • removedOutput schema / $defs / WorkflowDefinitionVersionRead / title
        Removed value: -"WorkflowDefinitionVersionRead"
      • removedOutput schema / $defs / WorkflowDefinitionWorkflowRead / properties / archived / title
        Removed value: -"Archived"
      • removedOutput schema / $defs / WorkflowDefinitionWorkflowRead / properties / company_id / title
        Removed value: -"Company Id"
      • removedOutput schema / $defs / WorkflowDefinitionWorkflowRead / properties / created_by_profile_id / title
        Removed value: -"Created By Profile Id"
      • removedOutput schema / $defs / WorkflowDefinitionWorkflowRead / properties / enabled / title
        Removed value: -"Enabled"
      • removedOutput schema / $defs / WorkflowDefinitionWorkflowRead / properties / enabled_version_id / title
        Removed value: -"Enabled Version Id"
      • removedOutput schema / $defs / WorkflowDefinitionWorkflowRead / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / WorkflowDefinitionWorkflowRead / properties / name / title
        Removed value: -"Name"
      • removedOutput schema / $defs / WorkflowDefinitionWorkflowRead / properties / updated_by_profile_id / title
        Removed value: -"Updated By Profile Id"
      • removedOutput schema / $defs / WorkflowDefinitionWorkflowRead / title
        Removed value: -"WorkflowDefinitionWorkflowRead"
      • removedOutput schema / $defs / WorkflowEdgeInput / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / WorkflowEdgeInput / title
        Removed value: -"WorkflowEdgeInput"
      • removedOutput schema / $defs / WorkflowFailurePolicy / title
        Removed value: -"WorkflowFailurePolicy"
      • removedOutput schema / $defs / WorkflowVersionState / title
        Removed value: -"WorkflowVersionState"
      • removedOutput schema / properties / contract_version / title
        Removed value: -"Contract Version"
      • removedOutput schema / properties / edges / title
        Removed value: -"Edges"
      • removedOutput schema / properties / estimated_credit_units / title
        Removed value: -"Estimated Credit Units"
      • removedOutput schema / properties / nodes / title
        Removed value: -"Nodes"
      • removedOutput schema / properties / resource_type / title
        Removed value: -"Resource Type"
      • removedOutput schema / properties / result_projection / title
        Removed value: -"Result Projection"
      • removedOutput schema / title
        Removed value: -"WorkflowDefinitionRead"
    • Changedsave_template5 fields changed
      • removedInput schema / $defs / GenerationCommand / properties / source / discriminator / mapping
        Removed value: -{
        -  "generation_result": "#/$defs/GenerationResultCommandSource",
        -  "pipeline_step": "#/$defs/PipelineStepCommandSource",
        -  "public_url": "#/$defs/PublicUrlCommandSource",
        -  "uploaded_file": "#/$defs/UploadedFileCommandSource"
        -}
      • removedInput schema / $defs / GenerationResultCommandSource
        Removed value: -{
        -  "properties": {
        -    "generation_result_id": {
        -      "minimum": 1,
        -      "type": "integer"
        -    },
        -    "type": {
        -      "const": "generation_result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "type",
        -    "generation_result_id"
        -  ],
        -  "type": "object"
        -}
      • removedInput schema / $defs / PipelineStepCommandSource
        Removed value: -{
        -  "description": "Durable identity for a source produced by an earlier pipeline step.",
        -  "properties": {
        -    "output_index": {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    "post_claim_reference": {
        -      "minLength": 1,
        -      "type": "string"
        -    },
        -    "step_index": {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    "type": {
        -      "const": "pipeline_step",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "type",
        -    "post_claim_reference",
        -    "step_index",
        -    "output_index"
        -  ],
        -  "type": "object"
        -}
      • removedInput schema / $defs / PublicUrlCommandSource
        Removed value: -{
        -  "properties": {
        -    "image_url": {
        -      "minLength": 1,
        -      "type": "string"
        -    },
        -    "type": {
        -      "const": "public_url",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "type",
        -    "image_url"
        -  ],
        -  "type": "object"
        -}
      • removedInput schema / $defs / UploadedFileCommandSource
        Removed value: -{
        -  "properties": {
        -    "type": {
        -      "const": "uploaded_file",
        -      "type": "string"
        -    },
        -    "uploaded_file_id": {
        -      "minimum": 1,
        -      "type": "integer"
        -    }
        -  },
        -  "required": [
        -    "type",
        -    "uploaded_file_id"
        -  ],
        -  "type": "object"
        -}
    • Changedstart_production_workflow_run27 fields changed
      • removedInput schema / $defs / WorkflowRunCreate / properties / object_id / title
        Removed value: -"Object Id"
      • removedInput schema / $defs / WorkflowRunCreate / properties / object_type / title
        Removed value: -"Object Type"
      • removedInput schema / $defs / WorkflowRunCreate / properties / payload / title
        Removed value: -"Payload"
      • removedInput schema / $defs / WorkflowRunCreate / properties / slot_bindings / title
        Removed value: -"Slot Bindings"
      • removedInput schema / $defs / WorkflowRunCreate / properties / version_id / title
        Removed value: -"Version Id"
      • removedInput schema / $defs / WorkflowRunCreate / title
        Removed value: -"WorkflowRunCreate"
      • removedInput schema / properties / idempotency_key / title
        Removed value: -"Idempotency Key"
      • removedInput schema / properties / workflow_id / title
        Removed value: -"Workflow Id"
      • removedInput schema / title
        Removed value: -"StartWorkflowRunInput"
      • removedOutput schema / $defs / WorkflowRunStatus / title
        Removed value: -"WorkflowRunStatus"
      • removedOutput schema / properties / contract_version / title
        Removed value: -"Contract Version"
      • removedOutput schema / properties / created_at / title
        Removed value: -"Created At"
      • removedOutput schema / properties / debited_credit_units / title
        Removed value: -"Debited Credit Units"
      • removedOutput schema / properties / definition_hash / title
        Removed value: -"Definition Hash"
      • removedOutput schema / properties / estimated_credit_units / title
        Removed value: -"Estimated Credit Units"
      • removedOutput schema / properties / finished_at / title
        Removed value: -"Finished At"
      • removedOutput schema / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / properties / is_test / title
        Removed value: -"Is Test"
      • removedOutput schema / properties / net_credit_units / title
        Removed value: -"Net Credit Units"
      • removedOutput schema / properties / refunded_credit_units / title
        Removed value: -"Refunded Credit Units"
      • removedOutput schema / properties / replayed / title
        Removed value: -"Replayed"
      • removedOutput schema / properties / resource_type / title
        Removed value: -"Resource Type"
      • removedOutput schema / properties / started_at / title
        Removed value: -"Started At"
      • removedOutput schema / properties / trigger_event_id / title
        Removed value: -"Trigger Event Id"
      • removedOutput schema / properties / workflow_id / title
        Removed value: -"Workflow Id"
      • removedOutput schema / properties / workflow_version_id / title
        Removed value: -"Workflow Version Id"
      • removedOutput schema / title
        Removed value: -"WorkflowRunStartRead"
    • Changedstart_production_workflow_run_batch34 fields changed
      • removedInput schema / $defs / WorkflowRunBatchCreate / properties / object_ids / title
        Removed value: -"Object Ids"
      • removedInput schema / $defs / WorkflowRunBatchCreate / properties / object_type / title
        Removed value: -"Object Type"
      • removedInput schema / $defs / WorkflowRunBatchCreate / properties / payload / title
        Removed value: -"Payload"
      • removedInput schema / $defs / WorkflowRunBatchCreate / properties / slot_bindings / title
        Removed value: -"Slot Bindings"
      • removedInput schema / $defs / WorkflowRunBatchCreate / properties / version_id / title
        Removed value: -"Version Id"
      • removedInput schema / $defs / WorkflowRunBatchCreate / title
        Removed value: -"WorkflowRunBatchCreate"
      • removedInput schema / properties / idempotency_key / title
        Removed value: -"Idempotency Key"
      • removedInput schema / properties / workflow_id / title
        Removed value: -"Workflow Id"
      • removedInput schema / title
        Removed value: -"StartWorkflowRunBatchInput"
      • removedOutput schema / $defs / WorkflowRunBatchFailure / properties / detail / title
        Removed value: -"Detail"
      • removedOutput schema / $defs / WorkflowRunBatchFailure / properties / object_id / title
        Removed value: -"Object Id"
      • removedOutput schema / $defs / WorkflowRunBatchFailure / title
        Removed value: -"WorkflowRunBatchFailure"
      • removedOutput schema / $defs / WorkflowRunStartRead / properties / contract_version / title
        Removed value: -"Contract Version"
      • removedOutput schema / $defs / WorkflowRunStartRead / properties / created_at / title
        Removed value: -"Created At"
      • removedOutput schema / $defs / WorkflowRunStartRead / properties / debited_credit_units / title
        Removed value: -"Debited Credit Units"
      • removedOutput schema / $defs / WorkflowRunStartRead / properties / definition_hash / title
        Removed value: -"Definition Hash"
      • removedOutput schema / $defs / WorkflowRunStartRead / properties / estimated_credit_units / title
        Removed value: -"Estimated Credit Units"
      • removedOutput schema / $defs / WorkflowRunStartRead / properties / finished_at / title
        Removed value: -"Finished At"
      • removedOutput schema / $defs / WorkflowRunStartRead / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / $defs / WorkflowRunStartRead / properties / is_test / title
        Removed value: -"Is Test"
      • removedOutput schema / $defs / WorkflowRunStartRead / properties / net_credit_units / title
        Removed value: -"Net Credit Units"
      • removedOutput schema / $defs / WorkflowRunStartRead / properties / refunded_credit_units / title
        Removed value: -"Refunded Credit Units"
      • removedOutput schema / $defs / WorkflowRunStartRead / properties / replayed / title
        Removed value: -"Replayed"
      • removedOutput schema / $defs / WorkflowRunStartRead / properties / resource_type / title
        Removed value: -"Resource Type"
      • removedOutput schema / $defs / WorkflowRunStartRead / properties / started_at / title
        Removed value: -"Started At"
      • removedOutput schema / $defs / WorkflowRunStartRead / properties / trigger_event_id / title
        Removed value: -"Trigger Event Id"
      • removedOutput schema / $defs / WorkflowRunStartRead / properties / workflow_id / title
        Removed value: -"Workflow Id"
      • removedOutput schema / $defs / WorkflowRunStartRead / properties / workflow_version_id / title
        Removed value: -"Workflow Version Id"
      • removedOutput schema / $defs / WorkflowRunStartRead / title
        Removed value: -"WorkflowRunStartRead"
      • removedOutput schema / $defs / WorkflowRunStatus / title
        Removed value: -"WorkflowRunStatus"
      • removedOutput schema / properties / failures / title
        Removed value: -"Failures"
      • removedOutput schema / properties / resource_type / title
        Removed value: -"Resource Type"
      • removedOutput schema / properties / runs / title
        Removed value: -"Runs"
      • removedOutput schema / title
        Removed value: -"WorkflowRunBatchStartRead"
    • Changedupdate_brief5 fields changed
      • removedInput schema / $defs / GenerationCommand / properties / source / discriminator / mapping
        Removed value: -{
        -  "generation_result": "#/$defs/GenerationResultCommandSource",
        -  "pipeline_step": "#/$defs/PipelineStepCommandSource",
        -  "public_url": "#/$defs/PublicUrlCommandSource",
        -  "uploaded_file": "#/$defs/UploadedFileCommandSource"
        -}
      • removedInput schema / $defs / GenerationResultCommandSource
        Removed value: -{
        -  "properties": {
        -    "generation_result_id": {
        -      "minimum": 1,
        -      "type": "integer"
        -    },
        -    "type": {
        -      "const": "generation_result",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "type",
        -    "generation_result_id"
        -  ],
        -  "type": "object"
        -}
      • removedInput schema / $defs / PipelineStepCommandSource
        Removed value: -{
        -  "description": "Durable identity for a source produced by an earlier pipeline step.",
        -  "properties": {
        -    "output_index": {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    "post_claim_reference": {
        -      "minLength": 1,
        -      "type": "string"
        -    },
        -    "step_index": {
        -      "minimum": 0,
        -      "type": "integer"
        -    },
        -    "type": {
        -      "const": "pipeline_step",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "type",
        -    "post_claim_reference",
        -    "step_index",
        -    "output_index"
        -  ],
        -  "type": "object"
        -}
      • removedInput schema / $defs / PublicUrlCommandSource
        Removed value: -{
        -  "properties": {
        -    "image_url": {
        -      "minLength": 1,
        -      "type": "string"
        -    },
        -    "type": {
        -      "const": "public_url",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "type",
        -    "image_url"
        -  ],
        -  "type": "object"
        -}
      • removedInput schema / $defs / UploadedFileCommandSource
        Removed value: -{
        -  "properties": {
        -    "type": {
        -      "const": "uploaded_file",
        -      "type": "string"
        -    },
        -    "uploaded_file_id": {
        -      "minimum": 1,
        -      "type": "integer"
        -    }
        -  },
        -  "required": [
        -    "type",
        -    "uploaded_file_id"
        -  ],
        -  "type": "object"
        -}
    • Changedupdate_production_workflow18 fields changed
      • removedInput schema / $defs / WorkflowUpdate / properties / archived / title
        Removed value: -"Archived"
      • removedInput schema / $defs / WorkflowUpdate / properties / enabled / title
        Removed value: -"Enabled"
      • removedInput schema / $defs / WorkflowUpdate / properties / name / title
        Removed value: -"Name"
      • removedInput schema / $defs / WorkflowUpdate / title
        Removed value: -"WorkflowUpdate"
      • removedInput schema / properties / workflow_id / title
        Removed value: -"Workflow Id"
      • removedInput schema / title
        Removed value: -"UpdateWorkflowInput"
      • removedOutput schema / properties / archived / title
        Removed value: -"Archived"
      • removedOutput schema / properties / company_id / title
        Removed value: -"Company Id"
      • removedOutput schema / properties / created_at / title
        Removed value: -"Created At"
      • removedOutput schema / properties / created_by_profile_id / title
        Removed value: -"Created By Profile Id"
      • removedOutput schema / properties / enabled / title
        Removed value: -"Enabled"
      • removedOutput schema / properties / enabled_version_id / title
        Removed value: -"Enabled Version Id"
      • removedOutput schema / properties / id / title
        Removed value: -"Id"
      • removedOutput schema / properties / name / title
        Removed value: -"Name"
      • removedOutput schema / properties / run_time_slot_kinds / title
        Removed value: -"Run Time Slot Kinds"
      • removedOutput schema / properties / updated_at / title
        Removed value: -"Updated At"
      • removedOutput schema / properties / updated_by_profile_id / title
        Removed value: -"Updated By Profile Id"
      • removedOutput schema / title
        Removed value: -"WorkflowResourceRead"
    • Changedupdate_production_workflow_control12 fields changed
      • removedInput schema / $defs / WorkflowControlUpdate / properties / reason / title
        Removed value: -"Reason"
      • removedInput schema / $defs / WorkflowControlUpdate / properties / stopped / title
        Removed value: -"Stopped"
      • removedInput schema / $defs / WorkflowControlUpdate / title
        Removed value: -"WorkflowControlUpdate"
      • removedInput schema / title
        Removed value: -"UpdateWorkflowControlInput"
      • removedOutput schema / properties / changed_at / title
        Removed value: -"Changed At"
      • removedOutput schema / properties / changed_by_profile_id / title
        Removed value: -"Changed By Profile Id"
      • removedOutput schema / properties / company_id / title
        Removed value: -"Company Id"
      • removedOutput schema / properties / contract_version / title
        Removed value: -"Contract Version"
      • removedOutput schema / properties / reason / title
        Removed value: -"Reason"
      • removedOutput schema / properties / resource_type / title
        Removed value: -"Resource Type"
      • removedOutput schema / properties / stopped / title
        Removed value: -"Stopped"
      • removedOutput schema / title
        Removed value: -"WorkflowControlRead"
    • Changedupdate_production_workflow_version8 fields changed
      • removedInput schema / $defs
        Removed value: -{
        -  "AiModelInputConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "model_slug": {
        -        "anyOf": [
        -          {
        -            "maxLength": 100,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Model Slug"
        -      }
        -    },
        -    "title": "AiModelInputConfig",
        -    "type": "object"
        -  },
        -  "AiModelInputNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/AiModelInputConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "input.ai_model",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "type",
        -      "config"
        -    ],
        -    "title": "AiModelInputNodeInput",
        -    "type": "object"
        -  },
        -  "ArtDirectionInputConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "art_direction_id": {
        -        "anyOf": [
        -          {
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Art Direction Id"
        -      },
        -      "ask_at_run_time": {
        -        "default": false,
        -        "title": "Ask At Run Time",
        -        "type": "boolean"
        -      }
        -    },
        -    "title": "ArtDirectionInputConfig",
        -    "type": "object"
        -  },
        -  "ArtDirectionInputNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/ArtDirectionInputConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "input.art_direction",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "type",
        -      "config"
        -    ],
        -    "title": "ArtDirectionInputNodeInput",
        -    "type": "object"
        -  },
        -  "AvatarInputConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "ask_at_run_time": {
        -        "default": false,
        -        "title": "Ask At Run Time",
        -        "type": "boolean"
        -      },
        -      "avatar_id": {
        -        "anyOf": [
        -          {
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Avatar Id"
        -      }
        -    },
        -    "title": "AvatarInputConfig",
        -    "type": "object"
        -  },
        -  "AvatarInputNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/AvatarInputConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "input.avatar",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "type",
        -      "config"
        -    ],
        -    "title": "AvatarInputNodeInput",
        -    "type": "object"
        -  },
        -  "BranchNodeConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "cases": {
        -        "additionalProperties": {
        -          "enum": [
        -            "accepted",
        -            "rejected",
        -            "error"
        -          ],
        -          "type": "string"
        -        },
        -        "minProperties": 1,
        -        "propertyNames": {
        -          "enum": [
        -            "accepted",
        -            "rejected",
        -            "error"
        -          ]
        -        },
        -        "title": "Cases",
        -        "type": "object"
        -      },
        -      "condition_type": {
        -        "const": "qa_decision",
        -        "title": "Condition Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "condition_type",
        -      "cases"
        -    ],
        -    "title": "BranchNodeConfig",
        -    "type": "object"
        -  },
        -  "BranchNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/BranchNodeConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "infrastructure_retry": {
        -        "$ref": "#/$defs/InfrastructureRetryInput"
        -      },
        -      "readiness": {
        -        "$ref": "#/$defs/ReadinessInput"
        -      },
        -      "type": {
        -        "const": "branch",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "readiness",
        -      "infrastructure_retry",
        -      "type",
        -      "config"
        -    ],
        -    "title": "BranchNodeInput",
        -    "type": "object"
        -  },
        -  "ClothingInputConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "ask_at_run_time": {
        -        "default": false,
        -        "title": "Ask At Run Time",
        -        "type": "boolean"
        -      },
        -      "clothing_item_id": {
        -        "anyOf": [
        -          {
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Clothing Item Id"
        -      }
        -    },
        -    "title": "ClothingInputConfig",
        -    "type": "object"
        -  },
        -  "ClothingInputNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/ClothingInputConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "input.clothing",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "type",
        -      "config"
        -    ],
        -    "title": "ClothingInputNodeInput",
        -    "type": "object"
        -  },
        -  "DeliverTagDestination": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "tag_ids": {
        -        "items": {
        -          "type": "integer"
        -        },
        -        "maxItems": 50,
        -        "minItems": 1,
        -        "title": "Tag Ids",
        -        "type": "array"
        -      },
        -      "type": {
        -        "const": "tag",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "tag_ids"
        -    ],
        -    "title": "DeliverTagDestination",
        -    "type": "object"
        -  },
        -  "DeliverWebhookDestination": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "event_type": {
        -        "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -        "title": "Event Type",
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "webhook",
        -        "title": "Type",
        -        "type": "string"
        -      },
        -      "webhook_id": {
        -        "format": "uuid",
        -        "title": "Webhook Id",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "type",
        -      "webhook_id",
        -      "event_type"
        -    ],
        -    "title": "DeliverWebhookDestination",
        -    "type": "object"
        -  },
        -  "EdgeBindingInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "mode": {
        -        "enum": [
        -          "single",
        -          "collect"
        -        ],
        -        "title": "Mode",
        -        "type": "string"
        -      },
        -      "required": {
        -        "title": "Required",
        -        "type": "boolean"
        -      },
        -      "role": {
        -        "anyOf": [
        -          {
        -            "enum": [
        -              "background",
        -              "style"
        -            ],
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Role"
        -      }
        -    },
        -    "required": [
        -      "mode",
        -      "required"
        -    ],
        -    "title": "EdgeBindingInput",
        -    "type": "object"
        -  },
        -  "EdgeEndpointInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "node_id": {
        -        "format": "uuid",
        -        "title": "Node Id",
        -        "type": "string"
        -      },
        -      "port": {
        -        "maxLength": 100,
        -        "minLength": 1,
        -        "title": "Port",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "node_id",
        -      "port"
        -    ],
        -    "title": "EdgeEndpointInput",
        -    "type": "object"
        -  },
        -  "GenerateNodeConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "model_slug": {
        -        "maxLength": 100,
        -        "minLength": 1,
        -        "title": "Model Slug",
        -        "type": "string"
        -      },
        -      "parameters": {
        -        "additionalProperties": true,
        -        "title": "Parameters",
        -        "type": "object"
        -      },
        -      "variant": {
        -        "enum": [
        -          "generate",
        -          "edit",
        -          "text_to_image"
        -        ],
        -        "title": "Variant",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "variant",
        -      "model_slug",
        -      "parameters"
        -    ],
        -    "title": "GenerateNodeConfig",
        -    "type": "object"
        -  },
        -  "GenerateNodeConfigV1_2": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "model_slug": {
        -        "maxLength": 100,
        -        "minLength": 1,
        -        "title": "Model Slug",
        -        "type": "string"
        -      },
        -      "parameters": {
        -        "additionalProperties": true,
        -        "title": "Parameters",
        -        "type": "object"
        -      },
        -      "variant": {
        -        "enum": [
        -          "generate",
        -          "edit",
        -          "text_to_image",
        -          "video"
        -        ],
        -        "title": "Variant",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "variant",
        -      "model_slug",
        -      "parameters"
        -    ],
        -    "title": "GenerateNodeConfigV1_2",
        -    "type": "object"
        -  },
        -  "GenerateNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "anyOf": [
        -          {
        -            "$ref": "#/$defs/GenerateNodeConfig"
        -          },
        -          {
        -            "$ref": "#/$defs/GenerateNodeConfigV1_2"
        -          }
        -        ],
        -        "title": "Config"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "infrastructure_retry": {
        -        "$ref": "#/$defs/InfrastructureRetryInput"
        -      },
        -      "readiness": {
        -        "$ref": "#/$defs/ReadinessInput"
        -      },
        -      "type": {
        -        "const": "generate",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "readiness",
        -      "infrastructure_retry",
        -      "type",
        -      "config"
        -    ],
        -    "title": "GenerateNodeInput",
        -    "type": "object"
        -  },
        -  "ImageInputConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "ask_at_run_time": {
        -        "default": false,
        -        "title": "Ask At Run Time",
        -        "type": "boolean"
        -      },
        -      "generation_result_id": {
        -        "anyOf": [
        -          {
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Generation Result Id"
        -      }
        -    },
        -    "title": "ImageInputConfig",
        -    "type": "object"
        -  },
        -  "ImageInputNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/ImageInputConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "input.image",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "type",
        -      "config"
        -    ],
        -    "title": "ImageInputNodeInput",
        -    "type": "object"
        -  },
        -  "InfrastructureRetryInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "initial_backoff_seconds": {
        -        "maximum": 86400,
        -        "minimum": 0,
        -        "title": "Initial Backoff Seconds",
        -        "type": "integer"
        -      },
        -      "max_attempts": {
        -        "maximum": 20,
        -        "minimum": 1,
        -        "title": "Max Attempts",
        -        "type": "integer"
        -      },
        -      "max_backoff_seconds": {
        -        "maximum": 86400,
        -        "minimum": 0,
        -        "title": "Max Backoff Seconds",
        -        "type": "integer"
        -      }
        -    },
        -    "required": [
        -      "max_attempts",
        -      "initial_backoff_seconds",
        -      "max_backoff_seconds"
        -    ],
        -    "title": "InfrastructureRetryInput",
        -    "type": "object"
        -  },
        -  "LocationInputConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "ask_at_run_time": {
        -        "default": false,
        -        "title": "Ask At Run Time",
        -        "type": "boolean"
        -      },
        -      "location_id": {
        -        "anyOf": [
        -          {
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Location Id"
        -      }
        -    },
        -    "title": "LocationInputConfig",
        -    "type": "object"
        -  },
        -  "LocationInputNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/LocationInputConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "input.location",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "type",
        -      "config"
        -    ],
        -    "title": "LocationInputNodeInput",
        -    "type": "object"
        -  },
        -  "NotifyNodeConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "event_type": {
        -        "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -        "title": "Event Type",
        -        "type": "string"
        -      },
        -      "webhook_id": {
        -        "format": "uuid",
        -        "title": "Webhook Id",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "webhook_id",
        -      "event_type"
        -    ],
        -    "title": "NotifyNodeConfig",
        -    "type": "object"
        -  },
        -  "NotifyNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/NotifyNodeConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "infrastructure_retry": {
        -        "$ref": "#/$defs/InfrastructureRetryInput"
        -      },
        -      "readiness": {
        -        "$ref": "#/$defs/ReadinessInput"
        -      },
        -      "type": {
        -        "const": "notify",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "readiness",
        -      "infrastructure_retry",
        -      "type",
        -      "config"
        -    ],
        -    "title": "NotifyNodeInput",
        -    "type": "object"
        -  },
        -  "OutputNodeConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "projection": {
        -        "items": {
        -          "enum": [
        -            "artifacts",
        -            "qa",
        -            "billing",
        -            "provenance"
        -          ],
        -          "type": "string"
        -        },
        -        "minItems": 1,
        -        "title": "Projection",
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "projection"
        -    ],
        -    "title": "OutputNodeConfig",
        -    "type": "object"
        -  },
        -  "OutputNodeConfigV1_2": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "projection": {
        -        "items": {
        -          "enum": [
        -            "artifacts",
        -            "qa",
        -            "billing",
        -            "provenance"
        -          ],
        -          "type": "string"
        -        },
        -        "minItems": 1,
        -        "title": "Projection",
        -        "type": "array"
        -      }
        -    },
        -    "title": "OutputNodeConfigV1_2",
        -    "type": "object"
        -  },
        -  "OutputNodeConfigV1_3": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "destinations": {
        -        "items": {
        -          "discriminator": {
        -            "mapping": {
        -              "tag": "#/$defs/DeliverTagDestination",
        -              "webhook": "#/$defs/DeliverWebhookDestination"
        -            },
        -            "propertyName": "type"
        -          },
        -          "oneOf": [
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "tag_ids": {
        -                  "items": {
        -                    "type": "integer"
        -                  },
        -                  "maxItems": 50,
        -                  "minItems": 1,
        -                  "title": "Tag Ids",
        -                  "type": "array"
        -                },
        -                "type": {
        -                  "const": "tag",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "type",
        -                "tag_ids"
        -              ],
        -              "title": "DeliverTagDestination",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "event_type": {
        -                  "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -                  "title": "Event Type",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "webhook",
        -                  "title": "Type",
        -                  "type": "string"
        -                },
        -                "webhook_id": {
        -                  "format": "uuid",
        -                  "title": "Webhook Id",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "type",
        -                "webhook_id",
        -                "event_type"
        -              ],
        -              "title": "DeliverWebhookDestination",
        -              "type": "object"
        -            }
        -          ],
        -          "properties": {
        -            "event_type": {
        -              "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -              "title": "Event Type",
        -              "type": "string"
        -            },
        -            "tag_ids": {
        -              "items": {
        -                "type": "integer"
        -              },
        -              "maxItems": 50,
        -              "minItems": 1,
        -              "title": "Tag Ids",
        -              "type": "array"
        -            },
        -            "type": {
        -              "enum": [
        -                "tag",
        -                "webhook"
        -              ],
        -              "type": "string"
        -            },
        -            "webhook_id": {
        -              "format": "uuid",
        -              "title": "Webhook Id",
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "maxItems": 20,
        -        "title": "Destinations",
        -        "type": "array"
        -      },
        -      "projection": {
        -        "anyOf": [
        -          {
        -            "items": {
        -              "enum": [
        -                "artifacts",
        -                "qa",
        -                "billing",
        -                "provenance"
        -              ],
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Projection"
        -      }
        -    },
        -    "title": "OutputNodeConfigV1_3",
        -    "type": "object"
        -  },
        -  "OutputNodeConfigV1_4": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "destinations": {
        -        "items": {
        -          "discriminator": {
        -            "mapping": {
        -              "tag": "#/$defs/DeliverTagDestination",
        -              "webhook": "#/$defs/DeliverWebhookDestination"
        -            },
        -            "propertyName": "type"
        -          },
        -          "oneOf": [
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "tag_ids": {
        -                  "items": {
        -                    "type": "integer"
        -                  },
        -                  "maxItems": 50,
        -                  "minItems": 1,
        -                  "title": "Tag Ids",
        -                  "type": "array"
        -                },
        -                "type": {
        -                  "const": "tag",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "type",
        -                "tag_ids"
        -              ],
        -              "title": "DeliverTagDestination",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "event_type": {
        -                  "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -                  "title": "Event Type",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "webhook",
        -                  "title": "Type",
        -                  "type": "string"
        -                },
        -                "webhook_id": {
        -                  "format": "uuid",
        -                  "title": "Webhook Id",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "type",
        -                "webhook_id",
        -                "event_type"
        -              ],
        -              "title": "DeliverWebhookDestination",
        -              "type": "object"
        -            }
        -          ],
        -          "properties": {
        -            "event_type": {
        -              "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -              "title": "Event Type",
        -              "type": "string"
        -            },
        -            "tag_ids": {
        -              "items": {
        -                "type": "integer"
        -              },
        -              "maxItems": 50,
        -              "minItems": 1,
        -              "title": "Tag Ids",
        -              "type": "array"
        -            },
        -            "type": {
        -              "enum": [
        -                "tag",
        -                "webhook"
        -              ],
        -              "type": "string"
        -            },
        -            "webhook_id": {
        -              "format": "uuid",
        -              "title": "Webhook Id",
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "maxItems": 20,
        -        "title": "Destinations",
        -        "type": "array"
        -      }
        -    },
        -    "title": "OutputNodeConfigV1_4",
        -    "type": "object"
        -  },
        -  "OutputNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "anyOf": [
        -          {
        -            "$ref": "#/$defs/OutputNodeConfig"
        -          },
        -          {
        -            "$ref": "#/$defs/OutputNodeConfigV1_2"
        -          },
        -          {
        -            "$ref": "#/$defs/OutputNodeConfigV1_3"
        -          },
        -          {
        -            "$ref": "#/$defs/OutputNodeConfigV1_4"
        -          }
        -        ],
        -        "title": "Config"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "infrastructure_retry": {
        -        "$ref": "#/$defs/InfrastructureRetryInput"
        -      },
        -      "readiness": {
        -        "$ref": "#/$defs/ReadinessInput"
        -      },
        -      "type": {
        -        "const": "output",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "readiness",
        -      "infrastructure_retry",
        -      "type",
        -      "config"
        -    ],
        -    "title": "OutputNodeInput",
        -    "type": "object"
        -  },
        -  "PromptInputConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "ask_at_run_time": {
        -        "default": false,
        -        "title": "Ask At Run Time",
        -        "type": "boolean"
        -      },
        -      "text": {
        -        "anyOf": [
        -          {
        -            "maxLength": 10000,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "title": "Text"
        -      }
        -    },
        -    "title": "PromptInputConfig",
        -    "type": "object"
        -  },
        -  "PromptInputNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/PromptInputConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "input.prompt",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "type",
        -      "config"
        -    ],
        -    "title": "PromptInputNodeInput",
        -    "type": "object"
        -  },
        -  "QaGateNodeConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "max_content_retries": {
        -        "maximum": 20,
        -        "minimum": 0,
        -        "title": "Max Content Retries",
        -        "type": "integer"
        -      },
        -      "policy": {
        -        "maxLength": 100,
        -        "minLength": 1,
        -        "title": "Policy",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "policy",
        -      "max_content_retries"
        -    ],
        -    "title": "QaGateNodeConfig",
        -    "type": "object"
        -  },
        -  "QaGateNodeConfigV1_2": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "graph_retry": {
        -        "anyOf": [
        -          {
        -            "$ref": "#/$defs/QaGraphRetryConfig"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "max_content_retries": {
        -        "maximum": 20,
        -        "minimum": 0,
        -        "title": "Max Content Retries",
        -        "type": "integer"
        -      },
        -      "policy": {
        -        "maxLength": 100,
        -        "minLength": 1,
        -        "title": "Policy",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "policy",
        -      "max_content_retries"
        -    ],
        -    "title": "QaGateNodeConfigV1_2",
        -    "type": "object"
        -  },
        -  "QaGateNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "anyOf": [
        -          {
        -            "$ref": "#/$defs/QaGateNodeConfig"
        -          },
        -          {
        -            "$ref": "#/$defs/QaGateNodeConfigV1_2"
        -          }
        -        ],
        -        "title": "Config"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "infrastructure_retry": {
        -        "$ref": "#/$defs/InfrastructureRetryInput"
        -      },
        -      "readiness": {
        -        "$ref": "#/$defs/ReadinessInput"
        -      },
        -      "type": {
        -        "const": "qa_gate",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "readiness",
        -      "infrastructure_retry",
        -      "type",
        -      "config"
        -    ],
        -    "title": "QaGateNodeInput",
        -    "type": "object"
        -  },
        -  "QaGraphRetryConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "max_retries": {
        -        "maximum": 20,
        -        "minimum": 1,
        -        "title": "Max Retries",
        -        "type": "integer"
        -      },
        -      "retry_from_node_id": {
        -        "format": "uuid",
        -        "title": "Retry From Node Id",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "retry_from_node_id",
        -      "max_retries"
        -    ],
        -    "title": "QaGraphRetryConfig",
        -    "type": "object"
        -  },
        -  "ReadinessInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "mode": {
        -        "enum": [
        -          "all_required",
        -          "all_terminal"
        -        ],
        -        "title": "Mode",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "mode"
        -    ],
        -    "title": "ReadinessInput",
        -    "type": "object"
        -  },
        -  "TriggerNodeConfig": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "settings": {
        -        "additionalProperties": true,
        -        "title": "Settings",
        -        "type": "object"
        -      },
        -      "source": {
        -        "pattern": "^[a-z][a-z0-9_-]*(\\.[a-z][a-z0-9_-]*)+$",
        -        "title": "Source",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "source",
        -      "settings"
        -    ],
        -    "title": "TriggerNodeConfig",
        -    "type": "object"
        -  },
        -  "TriggerNodeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "config": {
        -        "$ref": "#/$defs/TriggerNodeConfig"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "type": {
        -        "const": "trigger",
        -        "title": "Type",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "type",
        -      "config"
        -    ],
        -    "title": "TriggerNodeInput",
        -    "type": "object"
        -  },
        -  "WorkflowEdgeInput": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "binding": {
        -        "$ref": "#/$defs/EdgeBindingInput"
        -      },
        -      "id": {
        -        "format": "uuid",
        -        "title": "Id",
        -        "type": "string"
        -      },
        -      "source": {
        -        "$ref": "#/$defs/EdgeEndpointInput"
        -      },
        -      "target": {
        -        "$ref": "#/$defs/EdgeEndpointInput"
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "source",
        -      "target",
        -      "binding"
        -    ],
        -    "title": "WorkflowEdgeInput",
        -    "type": "object"
        -  },
        -  "WorkflowFailurePolicy": {
        -    "enum": [
        -      "fail_fast",
        -      "continue_independent"
        -    ],
        -    "title": "WorkflowFailurePolicy",
        -    "type": "string"
        -  },
        -  "WorkflowVersionUpdate": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "edges": {
        -        "default": null,
        -        "items": {
        -          "$ref": "#/$defs/WorkflowEdgeInput"
        -        },
        -        "minItems": 1,
        -        "title": "Edges",
        -        "type": "array"
        -      },
        -      "failure_policy": {
        -        "$ref": "#/$defs/WorkflowFailurePolicy",
        -        "default": null
        -      },
        -      "nodes": {
        -        "default": null,
        -        "items": {
        -          "discriminator": {
        -            "mapping": {
        -              "branch": "#/$defs/BranchNodeInput",
        -              "generate": "#/$defs/GenerateNodeInput",
        -              "input.ai_model": "#/$defs/AiModelInputNodeInput",
        -              "input.art_direction": "#/$defs/ArtDirectionInputNodeInput",
        -              "input.avatar": "#/$defs/AvatarInputNodeInput",
        -              "input.clothing": "#/$defs/ClothingInputNodeInput",
        -              "input.image": "#/$defs/ImageInputNodeInput",
        -              "input.location": "#/$defs/LocationInputNodeInput",
        -              "input.prompt": "#/$defs/PromptInputNodeInput",
        -              "notify": "#/$defs/NotifyNodeInput",
        -              "output": "#/$defs/OutputNodeInput",
        -              "qa_gate": "#/$defs/QaGateNodeInput",
        -              "trigger": "#/$defs/TriggerNodeInput"
        -            },
        -            "propertyName": "type"
        -          },
        -          "oneOf": [
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "settings": {
        -                      "additionalProperties": true,
        -                      "title": "Settings",
        -                      "type": "object"
        -                    },
        -                    "source": {
        -                      "pattern": "^[a-z][a-z0-9_-]*(\\.[a-z][a-z0-9_-]*)+$",
        -                      "title": "Source",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "source",
        -                    "settings"
        -                  ],
        -                  "title": "TriggerNodeConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "trigger",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "type",
        -                "config"
        -              ],
        -              "title": "TriggerNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "anyOf": [
        -                    {
        -                      "additionalProperties": false,
        -                      "properties": {
        -                        "model_slug": {
        -                          "maxLength": 100,
        -                          "minLength": 1,
        -                          "title": "Model Slug",
        -                          "type": "string"
        -                        },
        -                        "parameters": {
        -                          "additionalProperties": true,
        -                          "title": "Parameters",
        -                          "type": "object"
        -                        },
        -                        "variant": {
        -                          "enum": [
        -                            "generate",
        -                            "edit",
        -                            "text_to_image"
        -                          ],
        -                          "title": "Variant",
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "variant",
        -                        "model_slug",
        -                        "parameters"
        -                      ],
        -                      "title": "GenerateNodeConfig",
        -                      "type": "object"
        -                    },
        -                    {
        -                      "additionalProperties": false,
        -                      "properties": {
        -                        "model_slug": {
        -                          "maxLength": 100,
        -                          "minLength": 1,
        -                          "title": "Model Slug",
        -                          "type": "string"
        -                        },
        -                        "parameters": {
        -                          "additionalProperties": true,
        -                          "title": "Parameters",
        -                          "type": "object"
        -                        },
        -                        "variant": {
        -                          "enum": [
        -                            "generate",
        -                            "edit",
        -                            "text_to_image",
        -                            "video"
        -                          ],
        -                          "title": "Variant",
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "variant",
        -                        "model_slug",
        -                        "parameters"
        -                      ],
        -                      "title": "GenerateNodeConfigV1_2",
        -                      "type": "object"
        -                    }
        -                  ],
        -                  "title": "Config"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "infrastructure_retry": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "initial_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Initial Backoff Seconds",
        -                      "type": "integer"
        -                    },
        -                    "max_attempts": {
        -                      "maximum": 20,
        -                      "minimum": 1,
        -                      "title": "Max Attempts",
        -                      "type": "integer"
        -                    },
        -                    "max_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Max Backoff Seconds",
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "max_attempts",
        -                    "initial_backoff_seconds",
        -                    "max_backoff_seconds"
        -                  ],
        -                  "title": "InfrastructureRetryInput",
        -                  "type": "object"
        -                },
        -                "readiness": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "mode": {
        -                      "enum": [
        -                        "all_required",
        -                        "all_terminal"
        -                      ],
        -                      "title": "Mode",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "mode"
        -                  ],
        -                  "title": "ReadinessInput",
        -                  "type": "object"
        -                },
        -                "type": {
        -                  "const": "generate",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "readiness",
        -                "infrastructure_retry",
        -                "type",
        -                "config"
        -              ],
        -              "title": "GenerateNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "anyOf": [
        -                    {
        -                      "additionalProperties": false,
        -                      "properties": {
        -                        "max_content_retries": {
        -                          "maximum": 20,
        -                          "minimum": 0,
        -                          "title": "Max Content Retries",
        -                          "type": "integer"
        -                        },
        -                        "policy": {
        -                          "maxLength": 100,
        -                          "minLength": 1,
        -                          "title": "Policy",
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "policy",
        -                        "max_content_retries"
        -                      ],
        -                      "title": "QaGateNodeConfig",
        -                      "type": "object"
        -                    },
        -                    {
        -                      "additionalProperties": false,
        -                      "properties": {
        -                        "graph_retry": {
        -                          "anyOf": [
        -                            {
        -                              "additionalProperties": false,
        -                              "properties": {
        -                                "max_retries": {
        -                                  "maximum": 20,
        -                                  "minimum": 1,
        -                                  "title": "Max Retries",
        -                                  "type": "integer"
        -                                },
        -                                "retry_from_node_id": {
        -                                  "format": "uuid",
        -                                  "title": "Retry From Node Id",
        -                                  "type": "string"
        -                                }
        -                              },
        -                              "required": [
        -                                "retry_from_node_id",
        -                                "max_retries"
        -                              ],
        -                              "title": "QaGraphRetryConfig",
        -                              "type": "object"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null
        -                        },
        -                        "max_content_retries": {
        -                          "maximum": 20,
        -                          "minimum": 0,
        -                          "title": "Max Content Retries",
        -                          "type": "integer"
        -                        },
        -                        "policy": {
        -                          "maxLength": 100,
        -                          "minLength": 1,
        -                          "title": "Policy",
        -                          "type": "string"
        -                        }
        -                      },
        -                      "required": [
        -                        "policy",
        -                        "max_content_retries"
        -                      ],
        -                      "title": "QaGateNodeConfigV1_2",
        -                      "type": "object"
        -                    }
        -                  ],
        -                  "title": "Config"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "infrastructure_retry": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "initial_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Initial Backoff Seconds",
        -                      "type": "integer"
        -                    },
        -                    "max_attempts": {
        -                      "maximum": 20,
        -                      "minimum": 1,
        -                      "title": "Max Attempts",
        -                      "type": "integer"
        -                    },
        -                    "max_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Max Backoff Seconds",
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "max_attempts",
        -                    "initial_backoff_seconds",
        -                    "max_backoff_seconds"
        -                  ],
        -                  "title": "InfrastructureRetryInput",
        -                  "type": "object"
        -                },
        -                "readiness": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "mode": {
        -                      "enum": [
        -                        "all_required",
        -                        "all_terminal"
        -                      ],
        -                      "title": "Mode",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "mode"
        -                  ],
        -                  "title": "ReadinessInput",
        -                  "type": "object"
        -                },
        -                "type": {
        -                  "const": "qa_gate",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "readiness",
        -                "infrastructure_retry",
        -                "type",
        -                "config"
        -              ],
        -              "title": "QaGateNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "cases": {
        -                      "additionalProperties": {
        -                        "enum": [
        -                          "accepted",
        -                          "rejected",
        -                          "error"
        -                        ],
        -                        "type": "string"
        -                      },
        -                      "minProperties": 1,
        -                      "propertyNames": {
        -                        "enum": [
        -                          "accepted",
        -                          "rejected",
        -                          "error"
        -                        ]
        -                      },
        -                      "title": "Cases",
        -                      "type": "object"
        -                    },
        -                    "condition_type": {
        -                      "const": "qa_decision",
        -                      "title": "Condition Type",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "condition_type",
        -                    "cases"
        -                  ],
        -                  "title": "BranchNodeConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "infrastructure_retry": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "initial_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Initial Backoff Seconds",
        -                      "type": "integer"
        -                    },
        -                    "max_attempts": {
        -                      "maximum": 20,
        -                      "minimum": 1,
        -                      "title": "Max Attempts",
        -                      "type": "integer"
        -                    },
        -                    "max_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Max Backoff Seconds",
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "max_attempts",
        -                    "initial_backoff_seconds",
        -                    "max_backoff_seconds"
        -                  ],
        -                  "title": "InfrastructureRetryInput",
        -                  "type": "object"
        -                },
        -                "readiness": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "mode": {
        -                      "enum": [
        -                        "all_required",
        -                        "all_terminal"
        -                      ],
        -                      "title": "Mode",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "mode"
        -                  ],
        -                  "title": "ReadinessInput",
        -                  "type": "object"
        -                },
        -                "type": {
        -                  "const": "branch",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "readiness",
        -                "infrastructure_retry",
        -                "type",
        -                "config"
        -              ],
        -              "title": "BranchNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "anyOf": [
        -                    {
        -                      "additionalProperties": false,
        -                      "properties": {
        -                        "projection": {
        -                          "items": {
        -                            "enum": [
        -                              "artifacts",
        -                              "qa",
        -                              "billing",
        -                              "provenance"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "minItems": 1,
        -                          "title": "Projection",
        -                          "type": "array"
        -                        }
        -                      },
        -                      "required": [
        -                        "projection"
        -                      ],
        -                      "title": "OutputNodeConfig",
        -                      "type": "object"
        -                    },
        -                    {
        -                      "additionalProperties": false,
        -                      "properties": {
        -                        "projection": {
        -                          "items": {
        -                            "enum": [
        -                              "artifacts",
        -                              "qa",
        -                              "billing",
        -                              "provenance"
        -                            ],
        -                            "type": "string"
        -                          },
        -                          "minItems": 1,
        -                          "title": "Projection",
        -                          "type": "array"
        -                        }
        -                      },
        -                      "title": "OutputNodeConfigV1_2",
        -                      "type": "object"
        -                    },
        -                    {
        -                      "additionalProperties": false,
        -                      "properties": {
        -                        "destinations": {
        -                          "items": {
        -                            "discriminator": {
        -                              "mapping": {
        -                                "tag": "#/$defs/DeliverTagDestination",
        -                                "webhook": "#/$defs/DeliverWebhookDestination"
        -                              },
        -                              "propertyName": "type"
        -                            },
        -                            "oneOf": [
        -                              {
        -                                "additionalProperties": false,
        -                                "properties": {
        -                                  "tag_ids": {
        -                                    "items": {
        -                                      "type": "integer"
        -                                    },
        -                                    "maxItems": 50,
        -                                    "minItems": 1,
        -                                    "title": "Tag Ids",
        -                                    "type": "array"
        -                                  },
        -                                  "type": {
        -                                    "const": "tag",
        -                                    "title": "Type",
        -                                    "type": "string"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "type",
        -                                  "tag_ids"
        -                                ],
        -                                "title": "DeliverTagDestination",
        -                                "type": "object"
        -                              },
        -                              {
        -                                "additionalProperties": false,
        -                                "properties": {
        -                                  "event_type": {
        -                                    "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -                                    "title": "Event Type",
        -                                    "type": "string"
        -                                  },
        -                                  "type": {
        -                                    "const": "webhook",
        -                                    "title": "Type",
        -                                    "type": "string"
        -                                  },
        -                                  "webhook_id": {
        -                                    "format": "uuid",
        -                                    "title": "Webhook Id",
        -                                    "type": "string"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "type",
        -                                  "webhook_id",
        -                                  "event_type"
        -                                ],
        -                                "title": "DeliverWebhookDestination",
        -                                "type": "object"
        -                              }
        -                            ],
        -                            "properties": {
        -                              "event_type": {
        -                                "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -                                "title": "Event Type",
        -                                "type": "string"
        -                              },
        -                              "tag_ids": {
        -                                "items": {
        -                                  "type": "integer"
        -                                },
        -                                "maxItems": 50,
        -                                "minItems": 1,
        -                                "title": "Tag Ids",
        -                                "type": "array"
        -                              },
        -                              "type": {
        -                                "enum": [
        -                                  "tag",
        -                                  "webhook"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "webhook_id": {
        -                                "format": "uuid",
        -                                "title": "Webhook Id",
        -                                "type": "string"
        -                              }
        -                            },
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "title": "Destinations",
        -                          "type": "array"
        -                        },
        -                        "projection": {
        -                          "anyOf": [
        -                            {
        -                              "items": {
        -                                "enum": [
        -                                  "artifacts",
        -                                  "qa",
        -                                  "billing",
        -                                  "provenance"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "type": "array"
        -                            },
        -                            {
        -                              "type": "null"
        -                            }
        -                          ],
        -                          "default": null,
        -                          "title": "Projection"
        -                        }
        -                      },
        -                      "title": "OutputNodeConfigV1_3",
        -                      "type": "object"
        -                    },
        -                    {
        -                      "additionalProperties": false,
        -                      "properties": {
        -                        "destinations": {
        -                          "items": {
        -                            "discriminator": {
        -                              "mapping": {
        -                                "tag": "#/$defs/DeliverTagDestination",
        -                                "webhook": "#/$defs/DeliverWebhookDestination"
        -                              },
        -                              "propertyName": "type"
        -                            },
        -                            "oneOf": [
        -                              {
        -                                "additionalProperties": false,
        -                                "properties": {
        -                                  "tag_ids": {
        -                                    "items": {
        -                                      "type": "integer"
        -                                    },
        -                                    "maxItems": 50,
        -                                    "minItems": 1,
        -                                    "title": "Tag Ids",
        -                                    "type": "array"
        -                                  },
        -                                  "type": {
        -                                    "const": "tag",
        -                                    "title": "Type",
        -                                    "type": "string"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "type",
        -                                  "tag_ids"
        -                                ],
        -                                "title": "DeliverTagDestination",
        -                                "type": "object"
        -                              },
        -                              {
        -                                "additionalProperties": false,
        -                                "properties": {
        -                                  "event_type": {
        -                                    "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -                                    "title": "Event Type",
        -                                    "type": "string"
        -                                  },
        -                                  "type": {
        -                                    "const": "webhook",
        -                                    "title": "Type",
        -                                    "type": "string"
        -                                  },
        -                                  "webhook_id": {
        -                                    "format": "uuid",
        -                                    "title": "Webhook Id",
        -                                    "type": "string"
        -                                  }
        -                                },
        -                                "required": [
        -                                  "type",
        -                                  "webhook_id",
        -                                  "event_type"
        -                                ],
        -                                "title": "DeliverWebhookDestination",
        -                                "type": "object"
        -                              }
        -                            ],
        -                            "properties": {
        -                              "event_type": {
        -                                "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -                                "title": "Event Type",
        -                                "type": "string"
        -                              },
        -                              "tag_ids": {
        -                                "items": {
        -                                  "type": "integer"
        -                                },
        -                                "maxItems": 50,
        -                                "minItems": 1,
        -                                "title": "Tag Ids",
        -                                "type": "array"
        -                              },
        -                              "type": {
        -                                "enum": [
        -                                  "tag",
        -                                  "webhook"
        -                                ],
        -                                "type": "string"
        -                              },
        -                              "webhook_id": {
        -                                "format": "uuid",
        -                                "title": "Webhook Id",
        -                                "type": "string"
        -                              }
        -                            },
        -                            "type": "object"
        -                          },
        -                          "maxItems": 20,
        -                          "title": "Destinations",
        -                          "type": "array"
        -                        }
        -                      },
        -                      "title": "OutputNodeConfigV1_4",
        -                      "type": "object"
        -                    }
        -                  ],
        -                  "title": "Config"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "infrastructure_retry": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "initial_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Initial Backoff Seconds",
        -                      "type": "integer"
        -                    },
        -                    "max_attempts": {
        -                      "maximum": 20,
        -                      "minimum": 1,
        -                      "title": "Max Attempts",
        -                      "type": "integer"
        -                    },
        -                    "max_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Max Backoff Seconds",
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "max_attempts",
        -                    "initial_backoff_seconds",
        -                    "max_backoff_seconds"
        -                  ],
        -                  "title": "InfrastructureRetryInput",
        -                  "type": "object"
        -                },
        -                "readiness": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "mode": {
        -                      "enum": [
        -                        "all_required",
        -                        "all_terminal"
        -                      ],
        -                      "title": "Mode",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "mode"
        -                  ],
        -                  "title": "ReadinessInput",
        -                  "type": "object"
        -                },
        -                "type": {
        -                  "const": "output",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "readiness",
        -                "infrastructure_retry",
        -                "type",
        -                "config"
        -              ],
        -              "title": "OutputNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "event_type": {
        -                      "pattern": "^workflow\\.[a-z0-9_.-]+$",
        -                      "title": "Event Type",
        -                      "type": "string"
        -                    },
        -                    "webhook_id": {
        -                      "format": "uuid",
        -                      "title": "Webhook Id",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "webhook_id",
        -                    "event_type"
        -                  ],
        -                  "title": "NotifyNodeConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "infrastructure_retry": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "initial_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Initial Backoff Seconds",
        -                      "type": "integer"
        -                    },
        -                    "max_attempts": {
        -                      "maximum": 20,
        -                      "minimum": 1,
        -                      "title": "Max Attempts",
        -                      "type": "integer"
        -                    },
        -                    "max_backoff_seconds": {
        -                      "maximum": 86400,
        -                      "minimum": 0,
        -                      "title": "Max Backoff Seconds",
        -                      "type": "integer"
        -                    }
        -                  },
        -                  "required": [
        -                    "max_attempts",
        -                    "initial_backoff_seconds",
        -                    "max_backoff_seconds"
        -                  ],
        -                  "title": "InfrastructureRetryInput",
        -                  "type": "object"
        -                },
        -                "readiness": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "mode": {
        -                      "enum": [
        -                        "all_required",
        -                        "all_terminal"
        -                      ],
        -                      "title": "Mode",
        -                      "type": "string"
        -                    }
        -                  },
        -                  "required": [
        -                    "mode"
        -                  ],
        -                  "title": "ReadinessInput",
        -                  "type": "object"
        -                },
        -                "type": {
        -                  "const": "notify",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "readiness",
        -                "infrastructure_retry",
        -                "type",
        -                "config"
        -              ],
        -              "title": "NotifyNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "ask_at_run_time": {
        -                      "default": false,
        -                      "title": "Ask At Run Time",
        -                      "type": "boolean"
        -                    },
        -                    "avatar_id": {
        -                      "anyOf": [
        -                        {
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null,
        -                      "title": "Avatar Id"
        -                    }
        -                  },
        -                  "title": "AvatarInputConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "input.avatar",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "type",
        -                "config"
        -              ],
        -              "title": "AvatarInputNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "ask_at_run_time": {
        -                      "default": false,
        -                      "title": "Ask At Run Time",
        -                      "type": "boolean"
        -                    },
        -                    "clothing_item_id": {
        -                      "anyOf": [
        -                        {
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null,
        -                      "title": "Clothing Item Id"
        -                    }
        -                  },
        -                  "title": "ClothingInputConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "input.clothing",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "type",
        -                "config"
        -              ],
        -              "title": "ClothingInputNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "ask_at_run_time": {
        -                      "default": false,
        -                      "title": "Ask At Run Time",
        -                      "type": "boolean"
        -                    },
        -                    "location_id": {
        -                      "anyOf": [
        -                        {
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null,
        -                      "title": "Location Id"
        -                    }
        -                  },
        -                  "title": "LocationInputConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "input.location",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "type",
        -                "config"
        -              ],
        -              "title": "LocationInputNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "art_direction_id": {
        -                      "anyOf": [
        -                        {
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null,
        -                      "title": "Art Direction Id"
        -                    },
        -                    "ask_at_run_time": {
        -                      "default": false,
        -                      "title": "Ask At Run Time",
        -                      "type": "boolean"
        -                    }
        -                  },
        -                  "title": "ArtDirectionInputConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "input.art_direction",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "type",
        -                "config"
        -              ],
        -              "title": "ArtDirectionInputNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "ask_at_run_time": {
        -                      "default": false,
        -                      "title": "Ask At Run Time",
        -                      "type": "boolean"
        -                    },
        -                    "text": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 10000,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null,
        -                      "title": "Text"
        -                    }
        -                  },
        -                  "title": "PromptInputConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "input.prompt",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "type",
        -                "config"
        -              ],
        -              "title": "PromptInputNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "ask_at_run_time": {
        -                      "default": false,
        -                      "title": "Ask At Run Time",
        -                      "type": "boolean"
        -                    },
        -                    "generation_result_id": {
        -                      "anyOf": [
        -                        {
        -                          "minimum": 1,
        -                          "type": "integer"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null,
        -                      "title": "Generation Result Id"
        -                    }
        -                  },
        -                  "title": "ImageInputConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "input.image",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "type",
        -                "config"
        -              ],
        -              "title": "ImageInputNodeInput",
        -              "type": "object"
        -            },
        -            {
        -              "additionalProperties": false,
        -              "properties": {
        -                "config": {
        -                  "additionalProperties": false,
        -                  "properties": {
        -                    "model_slug": {
        -                      "anyOf": [
        -                        {
        -                          "maxLength": 100,
        -                          "minLength": 1,
        -                          "type": "string"
        -                        },
        -                        {
        -                          "type": "null"
        -                        }
        -                      ],
        -                      "default": null,
        -                      "title": "Model Slug"
        -                    }
        -                  },
        -                  "title": "AiModelInputConfig",
        -                  "type": "object"
        -                },
        -                "id": {
        -                  "format": "uuid",
        -                  "title": "Id",
        -                  "type": "string"
        -                },
        -                "type": {
        -                  "const": "input.ai_model",
        -                  "title": "Type",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "id",
        -                "type",
        -                "config"
        -              ],
        -              "title": "AiModelInputNodeInput",
        -              "type": "object"
        -            }
        -          ],
        -          "properties": {
        -            "config": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "settings": {
        -                  "additionalProperties": true,
        -                  "title": "Settings",
        -                  "type": "object"
        -                },
        -                "source": {
        -                  "pattern": "^[a-z][a-z0-9_-]*(\\.[a-z][a-z0-9_-]*)+$",
        -                  "title": "Source",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "source",
        -                "settings"
        -              ],
        -              "title": "TriggerNodeConfig",
        -              "type": "object"
        -            },
        -            "id": {
        -              "format": "uuid",
        -              "title": "Id",
        -              "type": "string"
        -            },
        -            "infrastructure_retry": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "initial_backoff_seconds": {
        -                  "maximum": 86400,
        -                  "minimum": 0,
        -                  "title": "Initial Backoff Seconds",
        -                  "type": "integer"
        -                },
        -                "max_attempts": {
        -                  "maximum": 20,
        -                  "minimum": 1,
        -                  "title": "Max Attempts",
        -                  "type": "integer"
        -                },
        -                "max_backoff_seconds": {
        -                  "maximum": 86400,
        -                  "minimum": 0,
        -                  "title": "Max Backoff Seconds",
        -                  "type": "integer"
        -                }
        -              },
        -              "required": [
        -                "max_attempts",
        -                "initial_backoff_seconds",
        -                "max_backoff_seconds"
        -              ],
        -              "title": "InfrastructureRetryInput",
        -              "type": "object"
        -            },
        -            "readiness": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "mode": {
        -                  "enum": [
        -                    "all_required",
        -                    "all_terminal"
        -                  ],
        -                  "title": "Mode",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "mode"
        -              ],
        -              "title": "ReadinessInput",
        -              "type": "object"
        -            },
        -            "type": {
        -              "enum": [
        -                "trigger",
        -                "generate",
        -                "qa_gate",
        -                "branch",
        -                "output",
        -                "notify",
        -                "input.avatar",
        -                "input.clothing",
        -                "input.location",
        -                "input.art_direction",
        -                "input.prompt",
        -                "input.image",
        -                "input.ai_model"
        -              ],
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "minItems": 2,
        -        "title": "Nodes",
        -        "type": "array"
        -      },
        -      "result_projection": {
        -        "default": null,
        -        "items": {
        -          "enum": [
        -            "artifacts",
        -            "qa",
        -            "billing",
        -            "provenance"
        -          ],
        -          "type": "string"
        -        },
        -        "minItems": 1,
        -        "title": "Result Projection",
        -        "type": "array"
        -      }
        -    },
        -    "title": "WorkflowVersionUpdate",
        -    "type": "object"
        -  }
        -}
      • removedInput schema / properties / update / $ref
        Removed value: -"#/$defs/WorkflowVersionUpdate"
      • addedInput schema / properties / update / additionalProperties
        Added value: +false
      • addedInput schema / properties / update / properties
        Added value: +{
        +  "edges": {
        +    "default": null,
        +    "items": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "binding": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "mode": {
        +              "enum": [
        +                "single",
        +                "collect"
        +              ],
        +              "type": "string"
        +            },
        +            "required": {
        +              "type": "boolean"
        +            },
        +            "role": {
        +              "anyOf": [
        +                {
        +                  "enum": [
        +                    "background",
        +                    "style"
        +                  ],
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ],
        +              "default": null
        +            }
        +          },
        +          "required": [
        +            "mode",
        +            "required"
        +          ],
        +          "type": "object"
        +        },
        +        "id": {
        +          "format": "uuid",
        +          "type": "string"
        +        },
        +        "source": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "node_id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "port": {
        +              "maxLength": 100,
        +              "minLength": 1,
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "node_id",
        +            "port"
        +          ],
        +          "type": "object"
        +        },
        +        "target": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "node_id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "port": {
        +              "maxLength": 100,
        +              "minLength": 1,
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "node_id",
        +            "port"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "source",
        +        "target",
        +        "binding"
        +      ],
        +      "type": "object"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  },
        +  "failure_policy": {
        +    "default": null,
        +    "enum": [
        +      "fail_fast",
        +      "continue_independent"
        +    ],
        +    "type": "string"
        +  },
        +  "nodes": {
        +    "default": null,
        +    "items": {
        +      "discriminator": {
        +        "propertyName": "type"
        +      },
        +      "oneOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "settings": {
        +                  "additionalProperties": true,
        +                  "type": "object"
        +                },
        +                "source": {
        +                  "pattern": "^[a-z][a-z0-9_-]*(\\.[a-z][a-z0-9_-]*)+$",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "source",
        +                "settings"
        +              ],
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "trigger",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "model_slug": {
        +                      "maxLength": 100,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "parameters": {
        +                      "additionalProperties": true,
        +                      "type": "object"
        +                    },
        +                    "variant": {
        +                      "enum": [
        +                        "generate",
        +                        "edit",
        +                        "text_to_image"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "variant",
        +                    "model_slug",
        +                    "parameters"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "model_slug": {
        +                      "maxLength": 100,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    "parameters": {
        +                      "additionalProperties": true,
        +                      "type": "object"
        +                    },
        +                    "variant": {
        +                      "enum": [
        +                        "generate",
        +                        "edit",
        +                        "text_to_image",
        +                        "video"
        +                      ],
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "variant",
        +                    "model_slug",
        +                    "parameters"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "infrastructure_retry": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "initial_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "max_attempts": {
        +                  "maximum": 20,
        +                  "minimum": 1,
        +                  "type": "integer"
        +                },
        +                "max_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "max_attempts",
        +                "initial_backoff_seconds",
        +                "max_backoff_seconds"
        +              ],
        +              "type": "object"
        +            },
        +            "readiness": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "mode": {
        +                  "enum": [
        +                    "all_required",
        +                    "all_terminal"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "mode"
        +              ],
        +              "type": "object"
        +            },
        +            "type": {
        +              "const": "generate",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "readiness",
        +            "infrastructure_retry",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "max_content_retries": {
        +                      "maximum": 20,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    },
        +                    "policy": {
        +                      "maxLength": 100,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "policy",
        +                    "max_content_retries"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "graph_retry": {
        +                      "anyOf": [
        +                        {
        +                          "additionalProperties": false,
        +                          "properties": {
        +                            "max_retries": {
        +                              "maximum": 20,
        +                              "minimum": 1,
        +                              "type": "integer"
        +                            },
        +                            "retry_from_node_id": {
        +                              "format": "uuid",
        +                              "type": "string"
        +                            }
        +                          },
        +                          "required": [
        +                            "retry_from_node_id",
        +                            "max_retries"
        +                          ],
        +                          "type": "object"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    },
        +                    "max_content_retries": {
        +                      "maximum": 20,
        +                      "minimum": 0,
        +                      "type": "integer"
        +                    },
        +                    "policy": {
        +                      "maxLength": 100,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    }
        +                  },
        +                  "required": [
        +                    "policy",
        +                    "max_content_retries"
        +                  ],
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "infrastructure_retry": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "initial_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "max_attempts": {
        +                  "maximum": 20,
        +                  "minimum": 1,
        +                  "type": "integer"
        +                },
        +                "max_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "max_attempts",
        +                "initial_backoff_seconds",
        +                "max_backoff_seconds"
        +              ],
        +              "type": "object"
        +            },
        +            "readiness": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "mode": {
        +                  "enum": [
        +                    "all_required",
        +                    "all_terminal"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "mode"
        +              ],
        +              "type": "object"
        +            },
        +            "type": {
        +              "const": "qa_gate",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "readiness",
        +            "infrastructure_retry",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "cases": {
        +                  "additionalProperties": {
        +                    "enum": [
        +                      "accepted",
        +                      "rejected",
        +                      "error"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "minProperties": 1,
        +                  "propertyNames": {
        +                    "enum": [
        +                      "accepted",
        +                      "rejected",
        +                      "error"
        +                    ]
        +                  },
        +                  "type": "object"
        +                },
        +                "condition_type": {
        +                  "const": "qa_decision",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "condition_type",
        +                "cases"
        +              ],
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "infrastructure_retry": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "initial_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "max_attempts": {
        +                  "maximum": 20,
        +                  "minimum": 1,
        +                  "type": "integer"
        +                },
        +                "max_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "max_attempts",
        +                "initial_backoff_seconds",
        +                "max_backoff_seconds"
        +              ],
        +              "type": "object"
        +            },
        +            "readiness": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "mode": {
        +                  "enum": [
        +                    "all_required",
        +                    "all_terminal"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "mode"
        +              ],
        +              "type": "object"
        +            },
        +            "type": {
        +              "const": "branch",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "readiness",
        +            "infrastructure_retry",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "anyOf": [
        +                {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "projection": {
        +                      "items": {
        +                        "enum": [
        +                          "artifacts",
        +                          "qa",
        +                          "billing",
        +                          "provenance"
        +                        ],
        +                        "type": "string"
        +                      },
        +                      "minItems": 1,
        +                      "type": "array"
        +                    }
        +                  },
        +                  "required": [
        +                    "projection"
        +                  ],
        +                  "type": "object"
        +                },
        +                {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "projection": {
        +                      "items": {
        +                        "enum": [
        +                          "artifacts",
        +                          "qa",
        +                          "billing",
        +                          "provenance"
        +                        ],
        +                        "type": "string"
        +                      },
        +                      "minItems": 1,
        +                      "type": "array"
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "destinations": {
        +                      "items": {
        +                        "discriminator": {
        +                          "propertyName": "type"
        +                        },
        +                        "oneOf": [
        +                          {
        +                            "additionalProperties": false,
        +                            "properties": {
        +                              "tag_ids": {
        +                                "items": {
        +                                  "type": "integer"
        +                                },
        +                                "maxItems": 50,
        +                                "minItems": 1,
        +                                "type": "array"
        +                              },
        +                              "type": {
        +                                "const": "tag",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "type",
        +                              "tag_ids"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "additionalProperties": false,
        +                            "properties": {
        +                              "event_type": {
        +                                "pattern": "^workflow\\.[a-z0-9_.-]+$",
        +                                "type": "string"
        +                              },
        +                              "type": {
        +                                "const": "webhook",
        +                                "type": "string"
        +                              },
        +                              "webhook_id": {
        +                                "format": "uuid",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "type",
        +                              "webhook_id",
        +                              "event_type"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ],
        +                        "properties": {
        +                          "event_type": {
        +                            "pattern": "^workflow\\.[a-z0-9_.-]+$",
        +                            "type": "string"
        +                          },
        +                          "tag_ids": {
        +                            "items": {
        +                              "type": "integer"
        +                            },
        +                            "maxItems": 50,
        +                            "minItems": 1,
        +                            "type": "array"
        +                          },
        +                          "type": {
        +                            "enum": [
        +                              "tag",
        +                              "webhook"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "webhook_id": {
        +                            "format": "uuid",
        +                            "type": "string"
        +                          }
        +                        },
        +                        "type": "object"
        +                      },
        +                      "maxItems": 20,
        +                      "type": "array"
        +                    },
        +                    "projection": {
        +                      "anyOf": [
        +                        {
        +                          "items": {
        +                            "enum": [
        +                              "artifacts",
        +                              "qa",
        +                              "billing",
        +                              "provenance"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "type": "array"
        +                        },
        +                        {
        +                          "type": "null"
        +                        }
        +                      ],
        +                      "default": null
        +                    }
        +                  },
        +                  "type": "object"
        +                },
        +                {
        +                  "additionalProperties": false,
        +                  "properties": {
        +                    "destinations": {
        +                      "items": {
        +                        "discriminator": {
        +                          "propertyName": "type"
        +                        },
        +                        "oneOf": [
        +                          {
        +                            "additionalProperties": false,
        +                            "properties": {
        +                              "tag_ids": {
        +                                "items": {
        +                                  "type": "integer"
        +                                },
        +                                "maxItems": 50,
        +                                "minItems": 1,
        +                                "type": "array"
        +                              },
        +                              "type": {
        +                                "const": "tag",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "type",
        +                              "tag_ids"
        +                            ],
        +                            "type": "object"
        +                          },
        +                          {
        +                            "additionalProperties": false,
        +                            "properties": {
        +                              "event_type": {
        +                                "pattern": "^workflow\\.[a-z0-9_.-]+$",
        +                                "type": "string"
        +                              },
        +                              "type": {
        +                                "const": "webhook",
        +                                "type": "string"
        +                              },
        +                              "webhook_id": {
        +                                "format": "uuid",
        +                                "type": "string"
        +                              }
        +                            },
        +                            "required": [
        +                              "type",
        +                              "webhook_id",
        +                              "event_type"
        +                            ],
        +                            "type": "object"
        +                          }
        +                        ],
        +                        "properties": {
        +                          "event_type": {
        +                            "pattern": "^workflow\\.[a-z0-9_.-]+$",
        +                            "type": "string"
        +                          },
        +                          "tag_ids": {
        +                            "items": {
        +                              "type": "integer"
        +                            },
        +                            "maxItems": 50,
        +                            "minItems": 1,
        +                            "type": "array"
        +                          },
        +                          "type": {
        +                            "enum": [
        +                              "tag",
        +                              "webhook"
        +                            ],
        +                            "type": "string"
        +                          },
        +                          "webhook_id": {
        +                            "format": "uuid",
        +                            "type": "string"
        +                          }
        +                        },
        +                        "type": "object"
        +                      },
        +                      "maxItems": 20,
        +                      "type": "array"
        +                    }
        +                  },
        +                  "type": "object"
        +                }
        +              ]
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "infrastructure_retry": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "initial_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "max_attempts": {
        +                  "maximum": 20,
        +                  "minimum": 1,
        +                  "type": "integer"
        +                },
        +                "max_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "max_attempts",
        +                "initial_backoff_seconds",
        +                "max_backoff_seconds"
        +              ],
        +              "type": "object"
        +            },
        +            "readiness": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "mode": {
        +                  "enum": [
        +                    "all_required",
        +                    "all_terminal"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "mode"
        +              ],
        +              "type": "object"
        +            },
        +            "type": {
        +              "const": "output",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "readiness",
        +            "infrastructure_retry",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "event_type": {
        +                  "pattern": "^workflow\\.[a-z0-9_.-]+$",
        +                  "type": "string"
        +                },
        +                "webhook_id": {
        +                  "format": "uuid",
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "webhook_id",
        +                "event_type"
        +              ],
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "infrastructure_retry": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "initial_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                },
        +                "max_attempts": {
        +                  "maximum": 20,
        +                  "minimum": 1,
        +                  "type": "integer"
        +                },
        +                "max_backoff_seconds": {
        +                  "maximum": 86400,
        +                  "minimum": 0,
        +                  "type": "integer"
        +                }
        +              },
        +              "required": [
        +                "max_attempts",
        +                "initial_backoff_seconds",
        +                "max_backoff_seconds"
        +              ],
        +              "type": "object"
        +            },
        +            "readiness": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "mode": {
        +                  "enum": [
        +                    "all_required",
        +                    "all_terminal"
        +                  ],
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "mode"
        +              ],
        +              "type": "object"
        +            },
        +            "type": {
        +              "const": "notify",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "readiness",
        +            "infrastructure_retry",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "ask_at_run_time": {
        +                  "default": false,
        +                  "type": "boolean"
        +                },
        +                "avatar_id": {
        +                  "anyOf": [
        +                    {
        +                      "minimum": 1,
        +                      "type": "integer"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ],
        +                  "default": null
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "input.avatar",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "ask_at_run_time": {
        +                  "default": false,
        +                  "type": "boolean"
        +                },
        +                "clothing_item_id": {
        +                  "anyOf": [
        +                    {
        +                      "minimum": 1,
        +                      "type": "integer"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ],
        +                  "default": null
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "input.clothing",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "ask_at_run_time": {
        +                  "default": false,
        +                  "type": "boolean"
        +                },
        +                "location_id": {
        +                  "anyOf": [
        +                    {
        +                      "minimum": 1,
        +                      "type": "integer"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ],
        +                  "default": null
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "input.location",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "art_direction_id": {
        +                  "anyOf": [
        +                    {
        +                      "minimum": 1,
        +                      "type": "integer"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ],
        +                  "default": null
        +                },
        +                "ask_at_run_time": {
        +                  "default": false,
        +                  "type": "boolean"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "input.art_direction",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "ask_at_run_time": {
        +                  "default": false,
        +                  "type": "boolean"
        +                },
        +                "text": {
        +                  "anyOf": [
        +                    {
        +                      "maxLength": 10000,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ],
        +                  "default": null
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "input.prompt",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "ask_at_run_time": {
        +                  "default": false,
        +                  "type": "boolean"
        +                },
        +                "generation_result_id": {
        +                  "anyOf": [
        +                    {
        +                      "minimum": 1,
        +                      "type": "integer"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ],
        +                  "default": null
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "input.image",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "config": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "model_slug": {
        +                  "anyOf": [
        +                    {
        +                      "maxLength": 100,
        +                      "minLength": 1,
        +                      "type": "string"
        +                    },
        +                    {
        +                      "type": "null"
        +                    }
        +                  ],
        +                  "default": null
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "id": {
        +              "format": "uuid",
        +              "type": "string"
        +            },
        +            "type": {
        +              "const": "input.ai_model",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "id",
        +            "type",
        +            "config"
        +          ],
        +          "type": "object"
        +        }
        +      ],
        +      "properties": {
        +        "config": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "settings": {
        +              "additionalProperties": true,
        +              "type": "object"
        +            },
        +            "source": {
        +              "pattern": "^[a-z][a-z0-9_-]*(\\.[a-z][a-z0-9_-]*)+$",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "source",
        +            "settings"
        +          ],
        +          "type": "object"
        +        },
        +        "id": {
        +          "format": "uuid",
        +          "type": "string"
        +        },
        +        "infrastructure_retry": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "initial_backoff_seconds": {
        +              "maximum": 86400,
        +              "minimum": 0,
        +              "type": "integer"
        +            },
        +            "max_attempts": {
        +              "maximum": 20,
        +              "minimum": 1,
        +              "type": "integer"
        +            },
        +            "max_backoff_seconds": {
        +              "maximum": 86400,
        +              "minimum": 0,
        +              "type": "integer"
        +            }
        +          },
        +          "required": [
        +            "max_attempts",
        +            "initial_backoff_seconds",
        +            "max_backoff_seconds"
        +          ],
        +          "type": "object"
        +        },
        +        "readiness": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "mode": {
        +              "enum": [
        +                "all_required",
        +                "all_terminal"
        +              ],
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "mode"
        +          ],
        +          "type": "object"
        +        },
        +        "type": {
        +          "enum": [
        +            "trigger",
        +            "generate",
        +            "qa_gate",
        +            "branch",
        +            "output",
        +            "notify",
        +            "input.avatar",
        +            "input.clothing",
        +            "input.location",
        +            "input.art_direction",
        +            "input.prompt",
        +            "input.image",
        +            "input.ai_model"
        +          ],
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "minItems": 2,
        +    "type": "array"
        +  },
        +  "result_projection": {
        +    "default": null,
        +    "items": {
        +      "enum": [
        +        "artifacts",
        +        "qa",
        +        "billing",
        +        "provenance"
        +      ],
        +      "type": "string"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +}
      • addedInput schema / properties / update / type
        Added value: +"object"
      • removedInput schema / properties / version_id / title
        Removed value: -"Version Id"
      • removedInput schema / properties / workflow_id / title
        Removed value: -"Workflow Id"
      • removedInput schema / title
        Removed value: -"UpdateWorkflowVersionInput"
  11. 77 tool updates
    • First observedarchive_production_workflow
    • First observedauthor_art_direction
    • First observedbuild_avatar_prompt
    • First observedconfirm_brief
    • First observedcreate_art_direction
    • First observedcreate_credit_checkout_session
    • First observedcreate_location
    • First observedcreate_outfit_from_garment_ids
    • First observedcreate_production_workflow
    • First observedcreate_production_workflow_version
    • First observedcreate_tag
    • First observeddelete_template
    • First observeddownload_generation_results
    • First observedduplicate_art_direction
    • First observedestimate_cost
    • First observedfinish_local_garment_upload
    • First observedgenerate_avatar
    • First observedget_art_direction
    • First observedget_art_direction_authoring_job
    • First observedget_brief
    • First observedget_garment
    • First observedget_generation_results
    • First observedget_generation_status
    • First observedget_items_by_tag
    • First observedget_location
    • First observedget_production_workflow
    • First observedget_production_workflow_control
    • First observedget_production_workflow_run
    • First observedget_production_workflow_version
    • First observedget_template
    • First observedget_user_credits
    • First observedlist_art_directions
    • First observedlist_avatars
    • First observedlist_garments
    • First observedlist_locations
    • First observedlist_models
    • First observedlist_outfits
    • First observedlist_production_workflow_runs
    • First observedlist_production_workflow_versions
    • First observedlist_production_workflows
    • First observedlist_tags
    • First observedlist_templates
    • First observedmcp_add_context
    • First observedmcp_clear_context
    • First observedmcp_create_credit_checkout_session
    • First observedmcp_export_montage
    • First observedmcp_generate_clip
    • First observedmcp_get_context
    • First observedmcp_list_files
    • First observedmcp_replace_context
    • First observedmcp_save_retouch
    • First observedprepare_local_garment_upload
    • First observedpropose_brief
    • First observedpropose_montage
    • First observedpropose_outfits
    • First observedpublish_production_workflow_version
    • First observedqueue_generation_result_qa
    • First observedread_generation_result_qa
    • First observedrequest_user_context
    • First observedsave_generated_avatar
    • First observedsave_reference_file_from_chat_file
    • First observedsave_template
    • First observedsearch_uwear_library
    • First observedstart_production_workflow_run
    • First observedstart_production_workflow_run_batch
    • First observedupdate_art_direction
    • First observedupdate_brief
    • First observedupdate_garment
    • First observedupdate_montage_proposal
    • First observedupdate_preferences
    • First observedupdate_production_workflow
    • First observedupdate_production_workflow_control
    • First observedupdate_production_workflow_version
    • First observedupload_avatar_from_chat_file
    • First observedupload_garment_from_chat_file
    • First observedupload_garment_from_public_url
    • First observedview_image

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources