Uwear
Server Details
AI photoshoot studio: garments, avatars, locations, and art direction
- Status
- Healthy
- Uptime
- 100.0% over 47 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 66 tools
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.
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.
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.
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 toolsadd_avatar_referenceAdd Avatar ReferenceADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | Yes | Reference slot to fill or replace. | |
| avatar_id | Yes | Owned avatar to update. | |
| image_url | No | Public HTTP(S) image URL. Use exactly one source field. | |
| uploaded_file_id | No | Owned workspace file ID. Use exactly one source field. | |
| generation_result_id | No | Owned image result ID. Use exactly one source field. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| color_hex | No | Required for solid mode, for example #FFFFFF. | |
| image_url | No | Public HTTPS foreground image URL; provide exactly one source. | |
| backdrop_mode | Yes | transparent removes the background, solid uses color_hex, and image uses background_image_url. | |
| background_image_url | No | Required for image mode; public HTTPS replacement background. | |
| generation_result_id | No | Existing generation result foreground; provide exactly one source. | |
| clothing_item_asset_id | No | Exact owned garment asset foreground; provide exactly one source. Find asset IDs with get_garment or list_garments. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional requested ArtDirection name | |
| save | No | Set true when the user wants to create, build, or save a reusable ArtDirection. Set false when the user explicitly wants an unsaved draft or brainstorming pass. | |
| sources | No | Supported authoring sources such as text, public URLs, image URLs, uploaded files, or durable reference image attachments | |
| user_text | No | Conversation text to compile into ArtDirection markdown | |
| image_urls | No | Draft-only reference image URLs to analyze into the ArtDirection. For saved ArtDirections, first save/select assets and pass reference_image_attachments. | |
| reference_image_attachments | No | Persistent authoring references as asset IDs. Use for save=true so the user can iterate the ArtDirection later. These are not generation-time references. |
TDQS
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.
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.
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.
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.
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.
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 PromptARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| camera | No | Optional camera key for context, e.g. midshot | |
| user_text | No | User's rough description of the person/model. Leave empty when the user wants the backend to invent a unique avatar prompt. | |
| model_slug | No | Optional image model slug for context | |
| aspect_ratio | No | Optional aspect ratio for context, e.g. 9:16 | |
| camera_label | No | Optional human-readable camera label |
TDQS
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.
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.
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.
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.
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.
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 BriefADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| execute | No | Execute the brief immediately after confirming. Defaults true because MCP 'confirm the brief' means approve and run. Set false only when the user explicitly wants to save approval without starting generation. | |
| brief_id | Yes | ID of the persisted brief to confirm |
TDQS
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.
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.
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.
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.
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.
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 NodeARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes | Generation Template ID | |
| contract_version | No | Workflow contract to target; omit to use the current authoring contract |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the ArtDirection | |
| content_markdown | Yes | Complete ArtDirection markdown document. Prefer author_art_direction for rough briefs. If writing directly, every reusable alternative that should rotate across generations must live under `## Variation Controls` as `###` controls with `A. Option` lines; do not leave selectable worlds, pose families, or shot-role plans only in prose. | |
| reference_image_attachments | No | Authoring reference image attachments to keep with the ArtDirection. These are for iterating the markdown only, not generation-time references. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| build | No | Optional concrete physical build. Never inferred. | |
| age_range | No | Optional concrete age or age range. Never inferred. | |
| height_cm | No | Optional height in centimeters. Never inferred. | |
| references | Yes | Ordered reference sources for the new avatar. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the reusable location/scene reference | |
| tag_ids | No | Optional tag IDs to assign after creating the location | |
| image_url | Yes | URL of the location/reference image | |
| description | No | Optional location description. If omitted, the system analyzes the image. | |
| thumbnail_url | No | Optional thumbnail URL | |
| source_metadata | No | Optional provenance metadata for the source image |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional human-readable outfit name | |
| is_active | No | Whether the outfit should be immediately active | |
| clothing_item_ids | Yes | IDs of clothing items to combine into an outfit |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Tag name (unique within the company) | |
| color | No | Optional hex color, e.g. '#22C55E' |
TDQS
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.
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.
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.
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.
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.
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 TemplateADestructiveInspect
Permanently delete a library template. Owner-only templates must be deleted through their owning resource.
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes | Template ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional name for the copy | |
| art_direction_id | Yes | The ArtDirection ID to duplicate |
TDQS
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.
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.
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.
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.
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.
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 CostBRead-onlyIdempotentInspect
Estimate credit cost for an operation.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Specific model to use | |
| duration | No | Video duration in seconds (video only, e.g. 4, 5, 6, 8, 10) | |
| num_items | No | Number of items/images | |
| operation | Yes | Operation: generate, edit, upscale, video | |
| resolution | No | Output resolution when supported by the selected image or video model | |
| generate_audio | No | Whether to generate audio (video only, doubles cost for most models) |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| garments | Yes | Garments assembled from owned upload handles returned by prepare_local_garment_upload |
TDQS
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.
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.
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.
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.
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.
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 ReferenceADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional name to carry with the avatar generation | |
| view | No | Reference view to generate. Defaults to the upper-body identity anchor. | upper_body_front |
| build | No | Optional concrete physical build. Never inferred. | |
| model | No | Optional image model slug or display name. Defaults to the cheapest active image generation model available to the account. | |
| prompt | Yes | Description of the person to render as a reusable avatar reference | |
| age_range | No | Optional concrete age or age range. Never inferred. | |
| avatar_id | No | Optional existing avatar whose anchor fixes identity for a slot view. Not required when identity_reference_urls are supplied. | |
| height_cm | No | Optional height in centimeters. Never inferred. | |
| expression | No | Exact expression instruction for a supported reference view. Replaces the configured neutral expression default. | |
| num_images | No | Number of avatar candidate images to generate | |
| identity_reference_urls | No | 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. |
TDQS
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.
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.
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.
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.
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.
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 DirectionBRead-onlyIdempotentInspect
Get a selectable ArtDirection by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| art_direction_id | Yes | The ArtDirection ID to retrieve |
TDQS
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.
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.
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.
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.
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.
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 StatusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ArtDirection authoring job ID returned by author_art_direction |
TDQS
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.
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.
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.
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.
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.
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 BriefARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| brief_id | Yes | Real persisted brief ID to load unchanged. Do not use 0, guessed IDs, or this tool for editing a visible brief. |
TDQS
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.
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.
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.
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.
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.
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 IdentityARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 GarmentARead-onlyIdempotentInspect
Get a specific garment by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| garment_id | Yes | The garment ID to retrieve |
TDQS
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.
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.
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.
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.
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.
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 ResultsARead-onlyIdempotentInspect
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Filter by type: 'Image', 'Edit', 'Upscale', 'Video' | |
| page | No | Page number for pagination | |
| limit | No | Number of items per page | |
| query | No | Hybrid search across generated image content, originating item names, and SKUs. | |
| tag_ids | No | Filter by tag IDs (results must have at least one) | |
| decision | No | Filter by the unified result verdict. | |
| end_date | No | Filter results created on or before this ISO date/datetime, e.g. 2026-04-27. | |
| model_ids | No | Filter results to images generated with these AI models | |
| avatar_ids | No | Filter results to images generated with these avatars | |
| outfit_ids | No | Filter results to images generated with these outfits | |
| start_date | No | Filter results created on or after this ISO date/datetime, e.g. 2026-04-20. | |
| qa_statuses | No | Filter by QA statuses, e.g. pending, processing, completed, error. | |
| location_ids | No | Filter results to images generated with these locations | |
| generation_id | No | Filter by parent generation ID (lists all result images from one generation job) | |
| decision_source | No | Filter by the verdict source. | |
| art_direction_ids | No | Filter results to images generated with these art directions | |
| clothing_item_ids | No | Filter results to images generated with these clothing items | |
| generation_result_id | No | Look up a single result image by its generation_result_id (the exact integer ID required by QA/edit/upscale/video tools). Returns that one result directly. |
TDQS
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.
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.
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.
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.
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.
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 StatusARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| generation_id | Yes | The generation ID to check. Returns raw payload, generation_setting, avatar_id, model_id, model_slug, and use_case. UI 'Gemini Pro' maps to model_slug nano-banana-pro or nano_banana_pro_clothing. |
TDQS
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.
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.
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.
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.
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.
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 TagARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tag_id | Yes | Tag ID to look up | |
| item_types | No | Filter to specific types: 'clothing_item', 'avatar', 'outfit', 'generation_result', 'location'. Omit to get all. |
TDQS
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.
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.
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.
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.
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.
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 LocationARead-onlyIdempotentInspect
Get a reusable location/scene reference by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| location_id | Yes | The location ID to retrieve |
TDQS
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.
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.
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.
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.
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.
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 OutfitARead-onlyIdempotentInspect
Get one saved outfit by ID, including its member garments.
| Name | Required | Description | Default |
|---|---|---|---|
| outfit_id | Yes | ID of the outfit to retrieve |
TDQS
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.
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.
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.
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.
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.
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 TemplateARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| share_code | No | Public t-xxxx share code | |
| template_id | No | Template ID | |
| expected_template_kind | No | Optional expected kind. A mismatch returns both expected and actual kinds. |
TDQS
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.
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.
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.
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.
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.
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 BalanceARead-onlyIdempotentInspect
Get user's current credit balance.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 DirectionADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional rename request | |
| save | No | False returns an unsaved revision draft; true updates this same company ArtDirection | |
| sources | No | Optional new supported authoring sources such as text, public URLs, or uploaded files | |
| feedback | Yes | What the ArtDirection author should preserve, change, add, or remove | |
| image_urls | No | Draft-only new visual sources; use persistent attachments when save=true | |
| art_direction_id | Yes | Existing ArtDirection ID to revise | |
| reference_image_attachments | No | New persistent authoring references to add alongside existing references |
TDQS
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.
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.
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.
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.
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.
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 DirectionsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| limit | No | Number of compact ArtDirection summaries per page | |
| query | No | Hybrid search across saved ArtDirection names and creative content. |
TDQS
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.
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.
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.
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.
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.
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 AvatarsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| sort | No | Sort order: 'field:direction', e.g. 'created_at:desc'. Default: created_at:desc | |
| limit | No | Number of items per page | |
| query | No | Hybrid search across avatar/model names, metadata, and visual attributes. | |
| tag_ids | No | Filter to avatars with any of these tags | |
| end_date | No | Filter: created on or before this date (ISO format) | |
| avatar_ids | No | Filter to specific avatar IDs | |
| start_date | No | Filter: created on or after this date (ISO format) | |
| include_image_url | No | Set true when you need to inspect or reuse the avatar/model image URL. |
TDQS
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.
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.
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.
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.
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.
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 GarmentsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| sort | No | Sort order: 'field:direction', e.g. 'created_at:desc', 'clothing_item_name:asc'. Default: created_at:desc | |
| limit | No | Number of items per page | |
| query | No | Hybrid search across garment names, SKUs, metadata, and visual attributes. | |
| tag_ids | No | Filter to garments with any of these tags | |
| category | No | Filter to garments in any of these canonical categories; OR with body_zone when both are given. | |
| end_date | No | Filter: created on or before this date (ISO format) | |
| body_zone | No | Filter to categories in any of these body zones; OR with category when both are given. | |
| start_date | No | Filter: created on or after this date (ISO format, e.g. '2025-06-01') | |
| clothing_item_ids | No | Filter to specific garment IDs | |
| include_image_url | No | Set true when the garment image itself is needed for visual display or reuse. | |
| include_uncategorized | No | Also include garments with no category when category and/or body_zone filters are used. | |
| exclude_clothing_item_ids | No | Exclude these garment IDs, for example the attached garment. |
TDQS
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.
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.
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.
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.
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.
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 LocationsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| sort | No | Sort order: 'field:direction', e.g. 'created_at:desc', 'location_name:asc'. Default: created_at:desc | |
| limit | No | Number of items per page | |
| query | No | Hybrid search across location names, metadata, and visual attributes. | |
| tag_ids | No | Filter to locations with any of these tags | |
| end_date | No | Filter: created on or before this date (ISO format) | |
| start_date | No | Filter: created on or after this date (ISO format) | |
| location_ids | No | Filter to specific location IDs | |
| include_image_url | No | Set true when the location/reference image URL is needed for inspection or reuse. |
TDQS
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.
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.
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.
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.
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.
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 ModelsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| model_type | Yes | Type: generation, edit, upscale, video, backdrop |
TDQS
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.
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.
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.
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.
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.
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 OutfitsARead-onlyIdempotentInspect
List user's outfits (saved garment combinations). Filter by garment IDs, active status, date range, or query against contained garments.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| sort | No | Sort: 'field:direction'. Use 'latest_generation_at:desc' to surface recently generated outfits. Default: created_at:desc | |
| limit | No | Number of items per page | |
| query | No | Search outfit names and contained garments. | |
| source | No | Filter by outfit source. | |
| tag_ids | No | Filter to outfits with any of these tags | |
| end_date | No | Filter: created on or before this date (ISO format) | |
| is_active | No | Filter by status: 'true', 'false', or 'both' (default: both) | |
| outfit_ids | No | Filter to specific outfit IDs | |
| start_date | No | Filter: created on or after this date (ISO format) | |
| clothing_item_ids | No | Filter to outfits containing any of these garments |
TDQS
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.
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.
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.
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.
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.
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 TagsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 TemplatesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| use_case | No | Filter by a use_case present in any stored command | |
| share_code | No | Return the template assigned this public t-xxxx share code | |
| catalog_scope | No | Filter by library or owner_only. Owner-only templates are hidden unless explicitly requested. | |
| template_kind | No | Filter generation presets or read-only historical batch_workflow records | |
| items_per_page | No | Number of templates per page |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| context_items | Yes | Shoot Board items to append to the current list |
TDQS
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.
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.
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.
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.
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.
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 BoardADestructiveIdempotentInspect
App-only: clear all session context items, or only one context type.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Context type to remove; omit to clear the entire Shoot Board |
TDQS
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.
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.
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.
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.
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.
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 VideoADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| clips | Yes | Ordered generation-result clips to stitch into the montage | |
| fit_mode | Yes | How each clip fits the output frame: contain or cover | |
| aspect_ratio | Yes | Output video aspect ratio in W:H format | |
| base_resolution | Yes | Output base resolution in pixels |
TDQS
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.
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.
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.
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.
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.
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 ClipADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | Video model slug or supported model name | |
| prompt | No | Optional motion prompt for the video clip | |
| duration | No | Video duration in seconds; defaults to 5 | |
| image_url | No | HTTPS source image URL; provide exactly one source | |
| resolution | No | Optional output resolution; defaults to 480p | |
| generate_audio | No | Include audio in the delivered video. False delivers a silent file; fixed-audio providers are muted after generation at the same credits. | |
| last_frame_url | No | Optional final-frame image URL for supported video models | |
| uploaded_file_id | No | Uploaded file ID to use as the source image; provide exactly one source | |
| generation_result_id | No | Existing generation result ID to use as the source image; provide exactly one source |
TDQS
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.
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.
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.
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.
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.
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 BoardBRead-onlyIdempotentInspect
App-only: hydrate the session-scoped Uwear Shoot Board.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 FilesBRead-onlyIdempotentInspect
App-only: list uploaded files for the Uwear MCP workspace files tab.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for uploaded file results | |
| limit | No | Maximum number of uploaded files per page |
TDQS
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.
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.
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.
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.
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.
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 BoardADestructiveIdempotentInspect
App-only: replace the session-scoped Uwear Shoot Board items.
| Name | Required | Description | Default |
|---|---|---|---|
| context_items | No | Shoot Board items that replace the current list when context_state is omitted | |
| context_state | No | Complete Shoot Board state to sanitize and persist; takes precedence over context_items |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_name | No | Optional filename for the saved retouched image | |
| mime_type | No | Optional image MIME type; inferred from a data URL or defaults to image/png | |
| operations | No | Optional retouch operation metadata stored with the child result | |
| image_base64 | Yes | Retouched image encoded as base64 or an image data URL | |
| parent_generation_result_id | Yes | Generation result ID of the original image |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | Local image metadata in a stable order. The local paths never leave the client. |
TDQS
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.
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.
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.
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.
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.
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 ApprovalADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| commands | Yes | 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. | |
| creative_context | No | Required for photoshoot proposals and brief rewrites. Summarize the shoot-level creative approach that guided garment combos, avatars, prompts, and pipeline steps. By default prefer one cohesive art 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_immediately | No | Set true only when the user explicitly asks to prepare/create/generate/run the photoshoot without another review step. When true, Uwear persists the brief, confirms it, and executes it directly if credits and validation allow; otherwise it falls back to the editable BriefProposal. |
TDQS
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.
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.
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.
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.
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.
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 MontageARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Ordered list of montage items. Each is either an existing video or an image needing video generation. Min 1, max 10. | |
| aspect_ratio | No | Output aspect ratio (e.g. '9:16', '16:9', '1:1') | 9:16 |
| base_resolution | No | Output resolution height in pixels |
TDQS
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.
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.
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.
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.
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.
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 OutfitsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| max_outfits | No | Maximum number of outfit proposals to return | |
| instructions | No | Optional styling brief, occasion, season, constraints, or vibe | |
| clothing_item_ids | Yes | Accessible clothing item IDs to combine into outfit proposals |
TDQS
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.
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.
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.
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.
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.
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 ResultsADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| max_qa_retries | No | Maximum QA-triggered retry generations to allow. Retry generations can cost additional generation credits. | |
| generation_result_ids | Yes | Generation result IDs to QA. Queued or requeued QA costs 1 credit per result. |
TDQS
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.
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.
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.
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.
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.
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 ResultsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| generation_result_ids | Yes | Generation result IDs to read QA for |
TDQS
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.
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.
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.
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.
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.
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 AssetsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Instruction shown to the user, e.g. 'Select the clothing items you want to use and add them to the Shoot Board' | |
| min_items | No | Minimum number of items the user must provide | |
| expected_types | Yes | Accepted item types (match panel tabs): 'clothing', 'models', 'outfits', 'generations', 'files'. Legacy 'file' is accepted as an alias for 'files'. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the saved avatar/model | |
| generation_result_id | Yes | Completed image result ID returned by generate_avatar. Normal text-to-image results are not eligible because they do not contain reopenable avatar-creator inputs. | |
| additional_result_ids | No | Other completed generate_avatar result IDs to save into their own avatar_creator.view slots in the same avatar. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| files | No | Reference file metadata in the same order as image_file_1, image_file_2, etc. No base64. | |
| file_name | No | Single recovered display name | |
| image_url | No | Single resolved download URL used by automatic opaque-file recovery. | |
| mime_type | No | Single recovered MIME/content type, e.g. image/png | |
| image_file_1 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. | |
| image_file_2 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. | |
| image_file_3 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. | |
| image_file_4 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. | |
| image_file_5 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. | |
| image_file_6 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. | |
| image_file_7 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. | |
| image_file_8 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. | |
| image_file_9 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. | |
| image_file_10 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. |
TDQS
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.
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.
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.
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.
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.
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 TemplateADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Template name | |
| payload | Yes | Versioned template payload containing canonical generation commands | |
| description | No | Optional sentence explaining when to use the template | |
| template_id | No | Template ID when replacing an existing template | |
| catalog_scope | No | Template catalog scope: library or owner_only | library |
| template_kind | Yes | Template kind: generation_preset. Legacy batch_workflow writes are retired. | |
| expected_revision | No | Current revision when replacing an existing template; omit for create |
TDQS
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.
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.
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.
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.
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.
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 LibraryARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of hybrid matches to return | |
| query | Yes | 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. | |
| item_types | No | Optional item types to search. Omit to search clothing, avatars/models, locations, art directions, uploaded files, and generation results. | |
| refresh_index | No | Deprecated compatibility input. No index refresh is performed, even when true. Search uses the maintained index and current lexical metadata. Leave false. | |
| exclude_clothing_item_ids | No | Exclude these garment IDs after ranking and before the result limit; other item types are unaffected. |
TDQS
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.
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.
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.
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.
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.
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 FeedbackAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | The report the user explicitly approved. Include useful reproduction details, but never add secrets, credentials, full conversation history, raw provider payloads, or private URLs. | |
| subject | No | Short summary of the confirmed report. | |
| request_id | Yes | Stable unique ID for this submission. Reuse the same value only when retrying the same report. | |
| feedback_type | Yes | Use bug_report for broken behavior or feature_request for an idea or improvement. | |
| related_generation_id | No | Optional Uwear generation ID directly related to the report. | |
| related_generation_result_id | No | Optional Uwear generation-result ID directly related to the report. |
TDQS
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.
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.
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.
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.
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.
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 DirectionADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Updated ArtDirection name | |
| art_direction_id | Yes | The ArtDirection ID to update | |
| content_markdown | No | Updated complete ArtDirection markdown. If editing directly, every reusable alternative that should rotate across generations must live under `## Variation Controls` as `###` controls with `A. Option` lines; do not leave selectable worlds, pose families, or shot-role plans only in prose. | |
| reference_image_attachments | No | Replacement authoring reference image attachments. These are for iterating the markdown only, not generation-time references. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| commands | Yes | 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. | |
| creative_context | No | Required for photoshoot proposals and brief rewrites. Summarize the shoot-level creative approach that guided garment combos, avatars, prompts, and pipeline steps. By default prefer one cohesive art 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
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.
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.
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.
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.
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.
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 GarmentADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Updated garment name | |
| assets | No | Asset patch for garment product photos. A provided full front/back/side replaces that unique view; provided detail assets are added. Omitted existing assets are preserved. | |
| gender | No | Updated target gender: male, female, or unisex | |
| category | No | Updated canonical garment category | |
| description | No | Updated item-level garment description, or a hint to use when patching images | |
| image_file_1 | No | Generic top-level MCP file object for assets[].image_file references | |
| image_file_2 | No | Generic top-level MCP file object for assets[].image_file references | |
| image_file_3 | No | Generic top-level MCP file object for assets[].image_file references | |
| image_file_4 | No | Generic top-level MCP file object for assets[].image_file references | |
| image_file_5 | No | Generic top-level MCP file object for assets[].image_file references | |
| image_file_6 | No | Generic top-level MCP file object for assets[].image_file references | |
| image_file_7 | No | Generic top-level MCP file object for assets[].image_file references | |
| image_file_8 | No | Generic top-level MCP file object for assets[].image_file references | |
| image_file_9 | No | Generic top-level MCP file object for assets[].image_file references | |
| image_file_10 | No | Generic top-level MCP file object for assets[].image_file references | |
| image_file_11 | No | Generic top-level MCP file object for assets[].image_file references | |
| image_file_12 | No | Generic top-level MCP file object for assets[].image_file references | |
| image_file_13 | No | Generic top-level MCP file object for assets[].image_file references | |
| image_file_14 | No | Generic top-level MCP file object for assets[].image_file references | |
| image_file_15 | No | Generic top-level MCP file object for assets[].image_file references | |
| image_file_16 | No | Generic top-level MCP file object for assets[].image_file references | |
| image_file_17 | No | Generic top-level MCP file object for assets[].image_file references | |
| image_file_18 | No | Generic top-level MCP file object for assets[].image_file references | |
| image_file_19 | No | Generic top-level MCP file object for assets[].image_file references | |
| image_file_20 | No | Generic top-level MCP file object for assets[].image_file references | |
| clothing_item_id | Yes | The garment ID to update |
TDQS
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.
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.
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.
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.
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.
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 MontageARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| muted | No | Mute or unmute the selected clip(s). | |
| speed | No | Playback speed multiplier. | |
| prompt | No | Update the motion prompt for image-to-video montage items. | |
| remove | No | Remove the selected clip(s) from the proposal. | |
| end_time | No | Trim end time in seconds for legacy trim-range updates. | |
| clear_trim | No | For video clips, remove trim bounds and restore the full clip length in the proposal. | |
| operations | No | Ordered montage patch operations. Preferred over the legacy flat fields below. | |
| start_time | No | Trim start time in seconds for legacy trim-range updates. | |
| clip_number | No | 1-based clip number to update. Omit when apply_to_all=true. | |
| video_model | No | Update the video model for image-to-video montage items. | |
| apply_to_all | No | Apply changes to every clip in the current montage proposal. | |
| aspect_ratio | No | Update the montage output aspect ratio. | |
| clip_numbers | No | Optional list of 1-based clip numbers to update together. | |
| generate_audio | No | Enable or disable generated audio for image-to-video montage items. | |
| last_frame_url | No | Optional last-frame URL for image-to-video montage items. | |
| base_resolution | No | Update the montage output resolution height. | |
| target_duration | No | Desired final clip length in seconds. |
TDQS
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.
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.
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.
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.
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.
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 PreferencesADestructiveInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| add_prompt | No | Prompt to save: {text, category, is_favorite} | |
| preferences | No | Preference key-value updates. Model fields (default_model, default_edit_model, default_upscale_model, default_video_model, and process-level model) are explicit pins only; leave them unset for 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
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Single recovered avatar/model name | |
| build | No | Optional concrete physical build. Never inferred. | |
| avatars | No | Avatar/model metadata in the same order as image_file_1, image_file_2, etc. No base64. | |
| age_range | No | Optional concrete age or age range. Never inferred. | |
| file_name | No | Single recovered original file name | |
| height_cm | No | Optional height in centimeters. Never inferred. | |
| image_url | No | Single resolved download URL used by automatic opaque-file recovery. | |
| mime_type | No | Single recovered MIME/content type, e.g. image/png | |
| description | No | Single recovered avatar metadata | |
| image_file_1 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. | |
| image_file_2 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. | |
| image_file_3 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. | |
| image_file_4 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. | |
| image_file_5 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. | |
| image_file_6 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. | |
| image_file_7 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. | |
| image_file_8 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. | |
| image_file_9 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. | |
| image_file_10 | No | Host-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| garments | Yes | Garment metadata. Put files in top-level image_file_1..image_file_20 and reference those exact field names inside each garment. No base64. | |
| image_file_1 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. | |
| image_file_2 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. | |
| image_file_3 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. | |
| image_file_4 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. | |
| image_file_5 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. | |
| image_file_6 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. | |
| image_file_7 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. | |
| image_file_8 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. | |
| image_file_9 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. | |
| image_file_10 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. | |
| image_file_11 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. | |
| image_file_12 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. | |
| image_file_13 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. | |
| image_file_14 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. | |
| image_file_15 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. | |
| image_file_16 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. | |
| image_file_17 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. | |
| image_file_18 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. | |
| image_file_19 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. | |
| image_file_20 | No | Top-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Single garment name | |
| assets | No | Single garment full asset set. Use asset_kind/asset_view. Exactly one full front is required; full views are unique and detail views can repeat. | |
| gender | No | Single garment gender: male, female, unisex | |
| garments | No | Garments to upload from public HTTP(S) URLs. No chat file objects and no base64. | |
| file_name | No | Single original file name | |
| image_url | No | Single public HTTP(S) front image URL | |
| mime_type | No | Single MIME/content type, e.g. image/png | |
| description | No | Single item-level garment description hint | |
| back_image_url | No | Single optional public HTTP(S) back image URL | |
| side_image_url | No | Single optional public HTTP(S) side image URL | |
| processing_mode | No | Optional image processing. 'background_removal' removes the background (the platform upload default); 'none' stores the image as-is. Omit to use background removal. | |
| detail_image_urls | No | Single optional public HTTP(S) detail image URLs |
TDQS
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.
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.
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.
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.
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.
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 ImageARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| question | Yes | What to analyze: e.g. 'Is this a flat lay or worn on a model?', 'Does this need background removal?', 'Describe the garment details'. Do not use this as the primary tool for generation-result QA; use queue_generation_result_qa and read_generation_result_qa for QA requests. | |
| image_url | No | Public HTTPS image URL to analyze. Optional if generation_result_id or uploaded_file_id is provided. | |
| attachment_id | No | ID of the workspace record to view. Supply together with attachment_type. | |
| attachment_type | No | Type of an attached workspace record. Supply together with attachment_id, without another image source. | |
| uploaded_file_id | No | ID of an uploaded file to analyze. Use for items from the Files library. | |
| generation_result_id | No | ID of an existing generation result to analyze. Preferred for Shoot Board generation items because the server resolves the HTTPS image URL. |
TDQS
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.
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.
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.
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.
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.
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.
3 tool updates
- Changed
propose_brief2 fields changed- added
Input schema / $defs / GenerationReferenceAttachmentInput / properties / outfit_idAdded 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" +} - changed
Input schema / $defs / GenerationReferenceAttachmentInput / properties / type / enumPrevious value: -[ - "uploaded_file", - "generation_result", - "location", - "avatar", - "clothing_item" -]New value: +[ + "uploaded_file", + "generation_result", + "location", + "avatar", + "clothing_item", + "outfit" +]
- Changed
save_template2 fields changed- added
Input schema / $defs / GenerationReferenceAttachmentInput / properties / outfit_idAdded 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" +} - changed
Input schema / $defs / GenerationReferenceAttachmentInput / properties / type / enumPrevious value: -[ - "uploaded_file", - "generation_result", - "location", - "avatar", - "clothing_item" -]New value: +[ + "uploaded_file", + "generation_result", + "location", + "avatar", + "clothing_item", + "outfit" +]
- Changed
update_brief2 fields changed- added
Input schema / $defs / GenerationReferenceAttachmentInput / properties / outfit_idAdded 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" +} - changed
Input schema / $defs / GenerationReferenceAttachmentInput / properties / type / enumPrevious value: -[ - "uploaded_file", - "generation_result", - "location", - "avatar", - "clothing_item" -]New value: +[ + "uploaded_file", + "generation_result", + "location", + "avatar", + "clothing_item", + "outfit" +]
4 tool updates
- Changed
list_garments5 fields changed- added
Input schema / properties / body_zoneAdded 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" +} - changed
Input schema / properties / category / descriptionPrevious 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." - added
Input schema / properties / category / items / enumAdded 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" +] - added
Input schema / properties / exclude_clothing_item_idsAdded value: +{ + "default": null, + "description": "Exclude these garment IDs, for example the attached garment.", + "items": { + "type": "integer" + }, + "maxItems": 100, + "type": "array" +} - added
Input schema / properties / include_uncategorizedAdded value: +{ + "default": false, + "description": "Also include garments with no category when category and/or body_zone filters are used.", + "type": "boolean" +}
- Changed
search_uwear_library3 fields changed- added
Input schema / properties / exclude_clothing_item_idsAdded 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" +} - changed
Input schema / properties / query / descriptionPrevious 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." - changed
Input schema / properties / refresh_index / descriptionPrevious 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."
- Changed
update_garment1 field changed- added
Input schema / properties / category / enumAdded 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" +]
- Changed
view_image2 fields changed- added
Input schema / properties / attachment_idAdded value: +{ + "default": null, + "description": "ID of the workspace record to view. Supply together with attachment_type.", + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / attachment_typeAdded 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" +}
6 tool updates
- Removed
create_credit_checkout_session - Removed
mcp_create_credit_checkout_session - Changed
mcp_generate_clip1 field changed- changed
Input schema / properties / generate_audio / descriptionPrevious 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."
- Changed
propose_brief1 field changed- added
Input schema / $defs / GenerationIntent / properties / generate_audio / descriptionAdded 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."
- Changed
save_template1 field changed- added
Input schema / $defs / GenerationIntent / properties / generate_audio / descriptionAdded 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."
- Changed
update_brief1 field changed- added
Input schema / $defs / GenerationIntent / properties / generate_audio / descriptionAdded 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."
3 tool updates
- Changed
get_template1 field changed- added
Input schema / $defs / TemplateKind / descriptionAdded value: +"generation_preset is writable; batch_workflow is retained read-only history."
- Changed
list_templates2 fields changed- added
Input schema / $defs / TemplateKind / descriptionAdded value: +"generation_preset is writable; batch_workflow is retained read-only history." - changed
Input schema / properties / template_kind / descriptionPrevious value: -"Filter by generation_preset or batch_workflow"New value: +"Filter generation presets or read-only historical batch_workflow records"
- Changed
save_template2 fields changed- added
Input schema / $defs / TemplateKind / descriptionAdded value: +"generation_preset is writable; batch_workflow is retained read-only history." - changed
Input schema / properties / template_kind / descriptionPrevious value: -"Template kind: generation_preset or batch_workflow"New value: +"Template kind: generation_preset. Legacy batch_workflow writes are retired."
2 tool updates
- Added
copy_template_to_generate_node_config - Changed
generate_avatar1 field changed- added
Input schema / properties / expressionAdded value: +{ + "default": null, + "description": "Exact expression instruction for a supported reference view. Replaces the configured neutral expression default.", + "maxLength": 500, + "type": "string" +}
9 tool updates
- Added
apply_backdrop - Added
get_connection_identity - Added
get_outfit - Changed
list_garments1 field changed- added
Input schema / properties / categoryAdded value: +{ + "default": null, + "description": "Filter to garments in any of these canonical categories", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
list_outfits2 fields changed- changed
Input schema / properties / sort / descriptionPrevious 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" - added
Input schema / properties / sourceAdded value: +{ + "default": null, + "description": "Filter by outfit source.", + "enum": [ + "manual", + "auto", + "proposed" + ], + "type": "string" +}
- Changed
propose_brief2 fields changed- added
Input schema / $defs / GenerationIntent / properties / audio_ref_urlsAdded 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" +} - added
Input schema / $defs / GenerationIntent / properties / video_ref_urlsAdded 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" +}
- Changed
save_template2 fields changed- added
Input schema / $defs / GenerationIntent / properties / audio_ref_urlsAdded 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" +} - added
Input schema / $defs / GenerationIntent / properties / video_ref_urlsAdded 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" +}
- Changed
update_brief2 fields changed- added
Input schema / $defs / GenerationIntent / properties / audio_ref_urlsAdded 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" +} - added
Input schema / $defs / GenerationIntent / properties / video_ref_urlsAdded 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" +}
- Changed
update_garment1 field changed- added
Input schema / properties / categoryAdded value: +{ + "default": null, + "description": "Updated canonical garment category", + "type": "string" +}
6 tool updates
- Changed
get_generation_results3 fields changed- added
Input schema / properties / decisionAdded value: +{ + "default": null, + "description": "Filter by the unified result verdict.", + "enum": [ + "approved", + "rejected", + "undecided" + ], + "type": "string" +} - added
Input schema / properties / decision_sourceAdded value: +{ + "default": null, + "description": "Filter by the verdict source.", + "enum": [ + "auto", + "human" + ], + "type": "string" +} - removed
Input schema / properties / qa_decisionRemoved value: -{ - "default": null, - "description": "Filter by QA decision. true = accepted, false = rejected.", - "type": "boolean" -}
- Changed
get_template3 fields changed- added
Input schema / properties / share_codeAdded value: +{ + "default": null, + "description": "Public t-xxxx share code", + "pattern": "^t-[a-z0-9]{4}$", + "type": "string" +} - added
Input schema / properties / template_id / defaultAdded value: +null - removed
Input schema / requiredRemoved value: -[ - "template_id" -]
- Changed
list_templates1 field changed- added
Input schema / properties / share_codeAdded value: +{ + "default": null, + "description": "Return the template assigned this public t-xxxx share code", + "pattern": "^t-[a-z0-9]{4}$", + "type": "string" +}
- Changed
propose_brief1 field changed- changed
Input schema / $defs / GenerationIntent / properties / prompt / descriptionPrevious 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."
- Changed
save_template1 field changed- changed
Input schema / $defs / GenerationIntent / properties / prompt / descriptionPrevious 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."
- Changed
update_brief1 field changed- changed
Input schema / $defs / GenerationIntent / properties / prompt / descriptionPrevious 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."
13 tool updates
- Added
add_avatar_reference - Changed
author_art_direction3 fields changed- added
Input schema / $defs / ArtDirectionAuthoringSourceInputAdded 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" +} - added
Input schema / $defs / ArtDirectionAuthoringSourceTypeAdded value: +{ + "enum": [ + "text", + "image_url", + "reference_image_attachment", + "public_url", + "uploaded_file", + "website_crawl" + ], + "type": "string" +} - added
Input schema / properties / sourcesAdded 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" +}
- Added
create_avatar_from_references - Removed
download_generation_results - Changed
generate_avatar8 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / age_range / descriptionPrevious value: -"Optional concrete age or age range for the avatar footer."New value: +"Optional concrete age or age range. Never inferred." - added
Input schema / properties / avatar_idAdded 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" +} - changed
Input schema / properties / build / descriptionPrevious 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." - added
Input schema / properties / height_cmAdded value: +{ + "default": null, + "description": "Optional height in centimeters. Never inferred.", + "maximum": 220, + "minimum": 40, + "type": "integer" +} - added
Input schema / properties / identity_reference_urlsAdded 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" +} - changed
Input schema / properties / prompt / descriptionPrevious 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" - added
Input schema / properties / viewAdded 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" +}
- Added
iterate_art_direction - Changed
propose_brief1 field changed- added
Input schema / $defs / GenerationIntent / properties / last_frame_attachmentAdded 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." +}
- Changed
save_generated_avatar4 fields changed- added
Input schema / properties / additional_result_idsAdded 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" +} - removed
Input schema / properties / descriptionRemoved value: -{ - "additionalProperties": true, - "default": null, - "description": "Optional avatar metadata. If omitted, the system can analyze the image.", - "type": "object" -} - removed
Input schema / properties / enhance_descriptionRemoved value: -{ - "default": true, - "description": "Analyze the image to create avatar metadata when description is omitted", - "type": "boolean" -} - added
Input schema / properties / generation_result_id / exclusiveMinimumAdded value: +0
- Changed
save_template1 field changed- added
Input schema / $defs / GenerationIntent / properties / last_frame_attachmentAdded 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." +}
- Added
submit_uwear_feedback - Changed
update_brief1 field changed- added
Input schema / $defs / GenerationIntent / properties / last_frame_attachmentAdded 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." +}
- Changed
upload_avatar_from_chat_file8 fields changed- added
Input schema / $defs / AvatarChatFileUploadItem / additionalPropertiesAdded value: +false - added
Input schema / $defs / AvatarChatFileUploadItem / properties / age_rangeAdded value: +{ + "default": null, + "description": "Optional concrete age or age range. Never inferred.", + "maxLength": 20, + "type": "string" +} - added
Input schema / $defs / AvatarChatFileUploadItem / properties / buildAdded value: +{ + "default": null, + "description": "Optional concrete physical build. Never inferred.", + "maxLength": 100, + "type": "string" +} - added
Input schema / $defs / AvatarChatFileUploadItem / properties / height_cmAdded value: +{ + "default": null, + "description": "Optional height in centimeters. Never inferred.", + "maximum": 220, + "minimum": 40, + "type": "integer" +} - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / age_rangeAdded value: +{ + "default": null, + "description": "Optional concrete age or age range. Never inferred.", + "maxLength": 20, + "type": "string" +} - added
Input schema / properties / buildAdded value: +{ + "default": null, + "description": "Optional concrete physical build. Never inferred.", + "maxLength": 100, + "type": "string" +} - added
Input schema / properties / height_cmAdded value: +{ + "default": null, + "description": "Optional height in centimeters. Never inferred.", + "maximum": 220, + "minimum": 40, + "type": "integer" +}
- Changed
view_image5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / generation_result_id / minimumAdded value: +1 - added
Input schema / properties / question / maxLengthAdded value: +4000 - added
Input schema / properties / question / minLengthAdded value: +1 - added
Input schema / properties / uploaded_file_id / minimumAdded value: +1
23 tool updates
- Removed
archive_production_workflow - Removed
create_production_workflow - Removed
create_production_workflow_version - Removed
get_production_workflow - Removed
get_production_workflow_control - Removed
get_production_workflow_run - Removed
get_production_workflow_version - Removed
list_production_workflow_runs - Removed
list_production_workflow_versions - Removed
list_production_workflows - Changed
propose_brief5 fields changed- changed
Input schema / $defs / GenerationIntent / descriptionPrevious 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." - removed
Input schema / $defs / GenerationIntent / properties / webhook_eventsRemoved value: -{ - "default": null, - "items": { - "enum": [ - "generation.completed", - "generation.failed" - ], - "type": "string" - }, - "type": "array" -} - removed
Input schema / $defs / GenerationIntent / properties / webhook_secretRemoved value: -{ - "default": null, - "description": "Optional HMAC signing secret for customer callbacks.", - "type": "string", - "ui": { - "sensitive": true - } -} - removed
Input schema / $defs / GenerationIntent / properties / webhook_urlRemoved value: -{ - "default": null, - "type": "string" -} - changed
Input schema / properties / commands / descriptionPrevious 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."
- Removed
publish_production_workflow_version - Changed
save_reference_file_from_chat_file32 fields changed- removed
Input schema / $defs / MCPFileReferenceRemoved 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" -} - added
Input schema / $defs / OpenAIFileAdded 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" +} - added
Input schema / properties / image_file_1 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_1 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_1 / defaultRemoved value: -null - added
Input schema / properties / image_file_10 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_10 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_10 / defaultRemoved value: -null - added
Input schema / properties / image_file_2 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_2 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_2 / defaultRemoved value: -null - added
Input schema / properties / image_file_3 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_3 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_3 / defaultRemoved value: -null - added
Input schema / properties / image_file_4 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_4 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_4 / defaultRemoved value: -null - added
Input schema / properties / image_file_5 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_5 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_5 / defaultRemoved value: -null - added
Input schema / properties / image_file_6 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_6 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_6 / defaultRemoved value: -null - added
Input schema / properties / image_file_7 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_7 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_7 / defaultRemoved value: -null - added
Input schema / properties / image_file_8 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_8 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_8 / defaultRemoved value: -null - added
Input schema / properties / image_file_9 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_9 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_9 / defaultRemoved value: -null
- Changed
save_template4 fields changed- changed
Input schema / $defs / GenerationIntent / descriptionPrevious 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." - removed
Input schema / $defs / GenerationIntent / properties / webhook_eventsRemoved value: -{ - "default": null, - "items": { - "enum": [ - "generation.completed", - "generation.failed" - ], - "type": "string" - }, - "type": "array" -} - removed
Input schema / $defs / GenerationIntent / properties / webhook_secretRemoved value: -{ - "default": null, - "description": "Optional HMAC signing secret for customer callbacks.", - "type": "string", - "ui": { - "sensitive": true - } -} - removed
Input schema / $defs / GenerationIntent / properties / webhook_urlRemoved value: -{ - "default": null, - "type": "string" -}
- Removed
start_production_workflow_run - Removed
start_production_workflow_run_batch - Changed
update_brief5 fields changed- changed
Input schema / $defs / GenerationIntent / descriptionPrevious 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." - removed
Input schema / $defs / GenerationIntent / properties / webhook_eventsRemoved value: -{ - "default": null, - "items": { - "enum": [ - "generation.completed", - "generation.failed" - ], - "type": "string" - }, - "type": "array" -} - removed
Input schema / $defs / GenerationIntent / properties / webhook_secretRemoved value: -{ - "default": null, - "description": "Optional HMAC signing secret for customer callbacks.", - "type": "string", - "ui": { - "sensitive": true - } -} - removed
Input schema / $defs / GenerationIntent / properties / webhook_urlRemoved value: -{ - "default": null, - "type": "string" -} - changed
Input schema / properties / commands / descriptionPrevious 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."
- Changed
update_garment41 fields changed- added
Input schema / $defs / OpenAIFileAdded 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" +} - added
Input schema / properties / image_file_1 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_1 / defaultRemoved value: -null - added
Input schema / properties / image_file_10 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_10 / defaultRemoved value: -null - added
Input schema / properties / image_file_11 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_11 / defaultRemoved value: -null - added
Input schema / properties / image_file_12 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_12 / defaultRemoved value: -null - added
Input schema / properties / image_file_13 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_13 / defaultRemoved value: -null - added
Input schema / properties / image_file_14 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_14 / defaultRemoved value: -null - added
Input schema / properties / image_file_15 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_15 / defaultRemoved value: -null - added
Input schema / properties / image_file_16 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_16 / defaultRemoved value: -null - added
Input schema / properties / image_file_17 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_17 / defaultRemoved value: -null - added
Input schema / properties / image_file_18 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_18 / defaultRemoved value: -null - added
Input schema / properties / image_file_19 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_19 / defaultRemoved value: -null - added
Input schema / properties / image_file_2 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_2 / defaultRemoved value: -null - added
Input schema / properties / image_file_20 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_20 / defaultRemoved value: -null - added
Input schema / properties / image_file_3 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_3 / defaultRemoved value: -null - added
Input schema / properties / image_file_4 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_4 / defaultRemoved value: -null - added
Input schema / properties / image_file_5 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_5 / defaultRemoved value: -null - added
Input schema / properties / image_file_6 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_6 / defaultRemoved value: -null - added
Input schema / properties / image_file_7 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_7 / defaultRemoved value: -null - added
Input schema / properties / image_file_8 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_8 / defaultRemoved value: -null - added
Input schema / properties / image_file_9 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_9 / defaultRemoved value: -null
- Removed
update_production_workflow - Removed
update_production_workflow_control - Removed
update_production_workflow_version - Changed
upload_avatar_from_chat_file32 fields changed- removed
Input schema / $defs / MCPFileReferenceRemoved 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" -} - added
Input schema / $defs / OpenAIFileAdded 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" +} - added
Input schema / properties / image_file_1 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_1 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_1 / defaultRemoved value: -null - added
Input schema / properties / image_file_10 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_10 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_10 / defaultRemoved value: -null - added
Input schema / properties / image_file_2 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_2 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_2 / defaultRemoved value: -null - added
Input schema / properties / image_file_3 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_3 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_3 / defaultRemoved value: -null - added
Input schema / properties / image_file_4 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_4 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_4 / defaultRemoved value: -null - added
Input schema / properties / image_file_5 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_5 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_5 / defaultRemoved value: -null - added
Input schema / properties / image_file_6 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_6 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_6 / defaultRemoved value: -null - added
Input schema / properties / image_file_7 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_7 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_7 / defaultRemoved value: -null - added
Input schema / properties / image_file_8 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_8 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_8 / defaultRemoved value: -null - added
Input schema / properties / image_file_9 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_9 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_9 / defaultRemoved value: -null
- Changed
upload_garment_from_chat_file62 fields changed- removed
Input schema / $defs / MCPFileReferenceRemoved 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" -} - added
Input schema / $defs / OpenAIFileAdded 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" +} - added
Input schema / properties / image_file_1 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_1 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_1 / defaultRemoved value: -null - added
Input schema / properties / image_file_10 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_10 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_10 / defaultRemoved value: -null - added
Input schema / properties / image_file_11 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_11 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_11 / defaultRemoved value: -null - added
Input schema / properties / image_file_12 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_12 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_12 / defaultRemoved value: -null - added
Input schema / properties / image_file_13 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_13 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_13 / defaultRemoved value: -null - added
Input schema / properties / image_file_14 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_14 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_14 / defaultRemoved value: -null - added
Input schema / properties / image_file_15 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_15 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_15 / defaultRemoved value: -null - added
Input schema / properties / image_file_16 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_16 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_16 / defaultRemoved value: -null - added
Input schema / properties / image_file_17 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_17 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_17 / defaultRemoved value: -null - added
Input schema / properties / image_file_18 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_18 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_18 / defaultRemoved value: -null - added
Input schema / properties / image_file_19 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_19 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_19 / defaultRemoved value: -null - added
Input schema / properties / image_file_2 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_2 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_2 / defaultRemoved value: -null - added
Input schema / properties / image_file_20 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_20 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_20 / defaultRemoved value: -null - added
Input schema / properties / image_file_3 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_3 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_3 / defaultRemoved value: -null - added
Input schema / properties / image_file_4 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_4 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_4 / defaultRemoved value: -null - added
Input schema / properties / image_file_5 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_5 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_5 / defaultRemoved value: -null - added
Input schema / properties / image_file_6 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_6 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_6 / defaultRemoved value: -null - added
Input schema / properties / image_file_7 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_7 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_7 / defaultRemoved value: -null - added
Input schema / properties / image_file_8 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_8 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_8 / defaultRemoved value: -null - added
Input schema / properties / image_file_9 / $refAdded value: +"#/$defs/OpenAIFile" - removed
Input schema / properties / image_file_9 / anyOfRemoved value: -[ - { - "$ref": "#/$defs/MCPFileReference" - }, - { - "type": "string" - } -] - removed
Input schema / properties / image_file_9 / defaultRemoved value: -null
21 tool updates
- Changed
archive_production_workflow14 fields changed- removed
Input schema / properties / workflow_id / titleRemoved value: -"Workflow Id" - removed
Input schema / titleRemoved value: -"WorkflowIdentityInput" - removed
Output schema / properties / archived / titleRemoved value: -"Archived" - removed
Output schema / properties / company_id / titleRemoved value: -"Company Id" - removed
Output schema / properties / created_at / titleRemoved value: -"Created At" - removed
Output schema / properties / created_by_profile_id / titleRemoved value: -"Created By Profile Id" - removed
Output schema / properties / enabled / titleRemoved value: -"Enabled" - removed
Output schema / properties / enabled_version_id / titleRemoved value: -"Enabled Version Id" - removed
Output schema / properties / id / titleRemoved value: -"Id" - removed
Output schema / properties / name / titleRemoved value: -"Name" - removed
Output schema / properties / run_time_slot_kinds / titleRemoved value: -"Run Time Slot Kinds" - removed
Output schema / properties / updated_at / titleRemoved value: -"Updated At" - removed
Output schema / properties / updated_by_profile_id / titleRemoved value: -"Updated By Profile Id" - removed
Output schema / titleRemoved value: -"WorkflowResourceRead"
- Changed
create_production_workflow16 fields changed- removed
Input schema / $defs / WorkflowCreate / properties / enabled / titleRemoved value: -"Enabled" - removed
Input schema / $defs / WorkflowCreate / properties / name / titleRemoved value: -"Name" - removed
Input schema / $defs / WorkflowCreate / titleRemoved value: -"WorkflowCreate" - removed
Input schema / titleRemoved value: -"CreateWorkflowInput" - removed
Output schema / properties / archived / titleRemoved value: -"Archived" - removed
Output schema / properties / company_id / titleRemoved value: -"Company Id" - removed
Output schema / properties / created_at / titleRemoved value: -"Created At" - removed
Output schema / properties / created_by_profile_id / titleRemoved value: -"Created By Profile Id" - removed
Output schema / properties / enabled / titleRemoved value: -"Enabled" - removed
Output schema / properties / enabled_version_id / titleRemoved value: -"Enabled Version Id" - removed
Output schema / properties / id / titleRemoved value: -"Id" - removed
Output schema / properties / name / titleRemoved value: -"Name" - removed
Output schema / properties / run_time_slot_kinds / titleRemoved value: -"Run Time Slot Kinds" - removed
Output schema / properties / updated_at / titleRemoved value: -"Updated At" - removed
Output schema / properties / updated_by_profile_id / titleRemoved value: -"Updated By Profile Id" - removed
Output schema / titleRemoved value: -"WorkflowResourceRead"
- Changed
create_production_workflow_version8 fields changed- removed
Input schema / $defsRemoved 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" - } -} - removed
Input schema / properties / definition / $refRemoved value: -"#/$defs/WorkflowVersionCreate" - added
Input schema / properties / definition / additionalPropertiesAdded value: +false - added
Input schema / properties / definition / propertiesAdded 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" + } +} - added
Input schema / properties / definition / requiredAdded value: +[ + "failure_policy", + "nodes", + "edges" +] - added
Input schema / properties / definition / typeAdded value: +"object" - removed
Input schema / properties / workflow_id / titleRemoved value: -"Workflow Id" - removed
Input schema / titleRemoved value: -"CreateWorkflowVersionInput"
- Changed
finish_local_garment_upload1 field changed- removed
Input schema / $defsRemoved 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" - } -}
- Changed
get_production_workflow33 fields changed- removed
Input schema / properties / versions_items_per_page / titleRemoved value: -"Versions Items Per Page" - removed
Input schema / properties / versions_page / titleRemoved value: -"Versions Page" - removed
Input schema / properties / workflow_id / titleRemoved value: -"Workflow Id" - removed
Input schema / titleRemoved value: -"GetWorkflowInput" - removed
Output schema / $defs / WorkflowVersionState / titleRemoved value: -"WorkflowVersionState" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / base_version_id / titleRemoved value: -"Base Version Id" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / contract_version / titleRemoved value: -"Contract Version" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / created_at / titleRemoved value: -"Created At" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / created_by_profile_id / titleRemoved value: -"Created By Profile Id" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / definition_hash / titleRemoved value: -"Definition Hash" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / estimated_credit_units / titleRemoved value: -"Estimated Credit Units" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / number / titleRemoved value: -"Number" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / published_at / titleRemoved value: -"Published At" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / published_by_profile_id / titleRemoved value: -"Published By Profile Id" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / updated_at / titleRemoved value: -"Updated At" - removed
Output schema / $defs / WorkflowVersionSummaryRead / titleRemoved value: -"WorkflowVersionSummaryRead" - removed
Output schema / properties / archived / titleRemoved value: -"Archived" - removed
Output schema / properties / company_id / titleRemoved value: -"Company Id" - removed
Output schema / properties / created_at / titleRemoved value: -"Created At" - removed
Output schema / properties / created_by_profile_id / titleRemoved value: -"Created By Profile Id" - removed
Output schema / properties / enabled / titleRemoved value: -"Enabled" - removed
Output schema / properties / enabled_version_id / titleRemoved value: -"Enabled Version Id" - removed
Output schema / properties / id / titleRemoved value: -"Id" - removed
Output schema / properties / name / titleRemoved value: -"Name" - removed
Output schema / properties / run_time_slot_kinds / titleRemoved value: -"Run Time Slot Kinds" - removed
Output schema / properties / updated_at / titleRemoved value: -"Updated At" - removed
Output schema / properties / updated_by_profile_id / titleRemoved value: -"Updated By Profile Id" - removed
Output schema / properties / versions / titleRemoved value: -"Versions" - removed
Output schema / properties / versions_items_per_page / titleRemoved value: -"Versions Items Per Page" - removed
Output schema / properties / versions_page / titleRemoved value: -"Versions Page" - removed
Output schema / properties / versions_total_count / titleRemoved value: -"Versions Total Count" - removed
Output schema / titleRemoved value: -"WorkflowDetailRead"
- Changed
get_production_workflow_control9 fields changed- removed
Input schema / titleRemoved value: -"_ToolInput" - removed
Output schema / properties / changed_at / titleRemoved value: -"Changed At" - removed
Output schema / properties / changed_by_profile_id / titleRemoved value: -"Changed By Profile Id" - removed
Output schema / properties / company_id / titleRemoved value: -"Company Id" - removed
Output schema / properties / contract_version / titleRemoved value: -"Contract Version" - removed
Output schema / properties / reason / titleRemoved value: -"Reason" - removed
Output schema / properties / resource_type / titleRemoved value: -"Resource Type" - removed
Output schema / properties / stopped / titleRemoved value: -"Stopped" - removed
Output schema / titleRemoved value: -"WorkflowControlRead"
- Changed
get_production_workflow_run130 fields changed- removed
Input schema / properties / workflow_run_id / titleRemoved value: -"Workflow Run Id" - removed
Input schema / titleRemoved value: -"WorkflowRunIdentityInput" - removed
Output schema / $defs / WorkflowArtifactRead / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / WorkflowArtifactRead / properties / media_type / titleRemoved value: -"Media Type" - removed
Output schema / $defs / WorkflowArtifactRead / properties / role / titleRemoved value: -"Role" - removed
Output schema / $defs / WorkflowArtifactRead / properties / thumbnail_url / titleRemoved value: -"Thumbnail Url" - removed
Output schema / $defs / WorkflowArtifactRead / properties / url / titleRemoved value: -"Url" - removed
Output schema / $defs / WorkflowArtifactRead / titleRemoved value: -"WorkflowArtifactRead" - removed
Output schema / $defs / WorkflowBillingMovementRead / properties / external_charge_id / titleRemoved value: -"External Charge Id" - removed
Output schema / $defs / WorkflowBillingMovementRead / properties / kind / titleRemoved value: -"Kind" - removed
Output schema / $defs / WorkflowBillingMovementRead / properties / units / titleRemoved value: -"Units" - removed
Output schema / $defs / WorkflowBillingMovementRead / titleRemoved value: -"WorkflowBillingMovementRead" - removed
Output schema / $defs / WorkflowBillingRead / properties / debited_units / titleRemoved value: -"Debited Units" - removed
Output schema / $defs / WorkflowBillingRead / properties / estimated_units / titleRemoved value: -"Estimated Units" - removed
Output schema / $defs / WorkflowBillingRead / properties / movements / titleRemoved value: -"Movements" - removed
Output schema / $defs / WorkflowBillingRead / properties / net_units / titleRemoved value: -"Net Units" - removed
Output schema / $defs / WorkflowBillingRead / properties / refunded_units / titleRemoved value: -"Refunded Units" - removed
Output schema / $defs / WorkflowBillingRead / titleRemoved value: -"WorkflowBillingRead" - removed
Output schema / $defs / WorkflowContentAttemptRead / properties / artifacts / titleRemoved value: -"Artifacts" - removed
Output schema / $defs / WorkflowContentAttemptRead / properties / billed_units / titleRemoved value: -"Billed Units" - removed
Output schema / $defs / WorkflowContentAttemptRead / properties / error / titleRemoved value: -"Error" - removed
Output schema / $defs / WorkflowContentAttemptRead / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / WorkflowContentAttemptRead / properties / number / titleRemoved value: -"Number" - removed
Output schema / $defs / WorkflowContentAttemptRead / properties / primitive_bindings / titleRemoved value: -"Primitive Bindings" - removed
Output schema / $defs / WorkflowContentAttemptRead / properties / refunded_units / titleRemoved value: -"Refunded Units" - removed
Output schema / $defs / WorkflowContentAttemptRead / properties / status / titleRemoved value: -"Status" - removed
Output schema / $defs / WorkflowContentAttemptRead / titleRemoved value: -"WorkflowContentAttemptRead" - removed
Output schema / $defs / WorkflowInfrastructureAttemptRead / properties / error / titleRemoved value: -"Error" - removed
Output schema / $defs / WorkflowInfrastructureAttemptRead / properties / finished_at / titleRemoved value: -"Finished At" - removed
Output schema / $defs / WorkflowInfrastructureAttemptRead / properties / number / titleRemoved value: -"Number" - removed
Output schema / $defs / WorkflowInfrastructureAttemptRead / properties / started_at / titleRemoved value: -"Started At" - removed
Output schema / $defs / WorkflowInfrastructureAttemptRead / properties / status / titleRemoved value: -"Status" - removed
Output schema / $defs / WorkflowInfrastructureAttemptRead / titleRemoved value: -"WorkflowInfrastructureAttemptRead" - removed
Output schema / $defs / WorkflowMissingInputRead / properties / edge_id / titleRemoved value: -"Edge Id" - removed
Output schema / $defs / WorkflowMissingInputRead / properties / reason / titleRemoved value: -"Reason" - removed
Output schema / $defs / WorkflowMissingInputRead / properties / required / titleRemoved value: -"Required" - removed
Output schema / $defs / WorkflowMissingInputRead / properties / source_node_id / titleRemoved value: -"Source Node Id" - removed
Output schema / $defs / WorkflowMissingInputRead / properties / source_port / titleRemoved value: -"Source Port" - removed
Output schema / $defs / WorkflowMissingInputRead / properties / state / titleRemoved value: -"State" - removed
Output schema / $defs / WorkflowMissingInputRead / properties / target_port / titleRemoved value: -"Target Port" - removed
Output schema / $defs / WorkflowMissingInputRead / titleRemoved value: -"WorkflowMissingInputRead" - removed
Output schema / $defs / WorkflowNodeRunRead / properties / artifacts / titleRemoved value: -"Artifacts" - removed
Output schema / $defs / WorkflowNodeRunRead / properties / content_attempts / titleRemoved value: -"Content Attempts" - removed
Output schema / $defs / WorkflowNodeRunRead / properties / error / titleRemoved value: -"Error" - removed
Output schema / $defs / WorkflowNodeRunRead / properties / execution_iteration / titleRemoved value: -"Execution Iteration" - removed
Output schema / $defs / WorkflowNodeRunRead / properties / finished_at / titleRemoved value: -"Finished At" - removed
Output schema / $defs / WorkflowNodeRunRead / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / WorkflowNodeRunRead / properties / infrastructure_attempts / titleRemoved value: -"Infrastructure Attempts" - removed
Output schema / $defs / WorkflowNodeRunRead / properties / inputs / titleRemoved value: -"Inputs" - removed
Output schema / $defs / WorkflowNodeRunRead / properties / missing_inputs / titleRemoved value: -"Missing Inputs" - removed
Output schema / $defs / WorkflowNodeRunRead / properties / node_id / titleRemoved value: -"Node Id" - removed
Output schema / $defs / WorkflowNodeRunRead / properties / outputs / titleRemoved value: -"Outputs" - removed
Output schema / $defs / WorkflowNodeRunRead / properties / primitive_bindings / titleRemoved value: -"Primitive Bindings" - removed
Output schema / $defs / WorkflowNodeRunRead / properties / skip_reason / titleRemoved value: -"Skip Reason" - removed
Output schema / $defs / WorkflowNodeRunRead / properties / started_at / titleRemoved value: -"Started At" - removed
Output schema / $defs / WorkflowNodeRunRead / properties / status / titleRemoved value: -"Status" - removed
Output schema / $defs / WorkflowNodeRunRead / titleRemoved value: -"WorkflowNodeRunRead" - removed
Output schema / $defs / WorkflowNodeType / titleRemoved value: -"WorkflowNodeType" - removed
Output schema / $defs / WorkflowPortValueRead / properties / declared_type / titleRemoved value: -"Declared Type" - removed
Output schema / $defs / WorkflowPortValueRead / properties / port / titleRemoved value: -"Port" - removed
Output schema / $defs / WorkflowPortValueRead / properties / value / titleRemoved value: -"Value" - removed
Output schema / $defs / WorkflowPortValueRead / titleRemoved value: -"WorkflowPortValueRead" - removed
Output schema / $defs / WorkflowPrimitiveBindingRead / properties / primitive_id / titleRemoved value: -"Primitive Id" - removed
Output schema / $defs / WorkflowPrimitiveBindingRead / properties / primitive_type / titleRemoved value: -"Primitive Type" - removed
Output schema / $defs / WorkflowPrimitiveBindingRead / properties / role / titleRemoved value: -"Role" - removed
Output schema / $defs / WorkflowPrimitiveBindingRead / titleRemoved value: -"WorkflowPrimitiveBindingRead" - removed
Output schema / $defs / WorkflowResultArtifactRead / properties / kind / titleRemoved value: -"Kind" - removed
Output schema / $defs / WorkflowResultArtifactRead / properties / media_type / titleRemoved value: -"Media Type" - removed
Output schema / $defs / WorkflowResultArtifactRead / properties / thumbnail_url / titleRemoved value: -"Thumbnail Url" - removed
Output schema / $defs / WorkflowResultArtifactRead / properties / url / titleRemoved value: -"Url" - removed
Output schema / $defs / WorkflowResultArtifactRead / titleRemoved value: -"WorkflowResultArtifactRead" - removed
Output schema / $defs / WorkflowResultBillingRead / properties / debited_units / titleRemoved value: -"Debited Units" - removed
Output schema / $defs / WorkflowResultBillingRead / properties / estimated_units / titleRemoved value: -"Estimated Units" - removed
Output schema / $defs / WorkflowResultBillingRead / properties / net_units / titleRemoved value: -"Net Units" - removed
Output schema / $defs / WorkflowResultBillingRead / properties / refunded_units / titleRemoved value: -"Refunded Units" - removed
Output schema / $defs / WorkflowResultBillingRead / titleRemoved value: -"WorkflowResultBillingRead" - removed
Output schema / $defs / WorkflowResultOriginRead / properties / asset_sha256 / titleRemoved value: -"Asset Sha256" - removed
Output schema / $defs / WorkflowResultOriginRead / properties / compliance_version / titleRemoved value: -"Compliance Version" - removed
Output schema / $defs / WorkflowResultOriginRead / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / WorkflowResultOriginRead / properties / model_slug / titleRemoved value: -"Model Slug" - removed
Output schema / $defs / WorkflowResultOriginRead / properties / provenance_id / titleRemoved value: -"Provenance Id" - removed
Output schema / $defs / WorkflowResultOriginRead / properties / provider / titleRemoved value: -"Provider" - removed
Output schema / $defs / WorkflowResultOriginRead / properties / status / titleRemoved value: -"Status" - removed
Output schema / $defs / WorkflowResultOriginRead / properties / uwear_c2pa_applied / titleRemoved value: -"Uwear C2Pa Applied" - removed
Output schema / $defs / WorkflowResultOriginRead / properties / uwear_watermark_applied / titleRemoved value: -"Uwear Watermark Applied" - removed
Output schema / $defs / WorkflowResultOriginRead / properties / watermark_method / titleRemoved value: -"Watermark Method" - removed
Output schema / $defs / WorkflowResultOriginRead / properties / watermark_strength / titleRemoved value: -"Watermark Strength" - removed
Output schema / $defs / WorkflowResultOriginRead / properties / watermark_version / titleRemoved value: -"Watermark Version" - removed
Output schema / $defs / WorkflowResultOriginRead / titleRemoved value: -"WorkflowResultOriginRead" - removed
Output schema / $defs / WorkflowResultProvenanceRead / properties / generation_id / titleRemoved value: -"Generation Id" - removed
Output schema / $defs / WorkflowResultProvenanceRead / properties / generation_result_id / titleRemoved value: -"Generation Result Id" - removed
Output schema / $defs / WorkflowResultProvenanceRead / titleRemoved value: -"WorkflowResultProvenanceRead" - removed
Output schema / $defs / WorkflowResultQaRead / properties / decision / titleRemoved value: -"Decision" - removed
Output schema / $defs / WorkflowResultQaRead / properties / error / titleRemoved value: -"Error" - removed
Output schema / $defs / WorkflowResultQaRead / properties / status / titleRemoved value: -"Status" - removed
Output schema / $defs / WorkflowResultQaRead / titleRemoved value: -"WorkflowResultQaRead" - removed
Output schema / $defs / WorkflowResultRead / properties / generation_result_id / titleRemoved value: -"Generation Result Id" - removed
Output schema / $defs / WorkflowResultRead / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / WorkflowResultRead / titleRemoved value: -"WorkflowResultRead" - removed
Output schema / $defs / WorkflowRunStatus / titleRemoved value: -"WorkflowRunStatus" - removed
Output schema / $defs / WorkflowTriggerActorRead / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / WorkflowTriggerActorRead / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / WorkflowTriggerActorRead / titleRemoved value: -"WorkflowTriggerActorRead" - removed
Output schema / $defs / WorkflowTriggerEventRead / properties / company_id / titleRemoved value: -"Company Id" - removed
Output schema / $defs / WorkflowTriggerEventRead / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / WorkflowTriggerEventRead / properties / payload / titleRemoved value: -"Payload" - removed
Output schema / $defs / WorkflowTriggerEventRead / properties / received_at / titleRemoved value: -"Received At" - removed
Output schema / $defs / WorkflowTriggerEventRead / titleRemoved value: -"WorkflowTriggerEventRead" - removed
Output schema / $defs / WorkflowTriggerIdentityRead / properties / external_event_id / titleRemoved value: -"External Event Id" - removed
Output schema / $defs / WorkflowTriggerIdentityRead / properties / original_trigger_event_id / titleRemoved value: -"Original Trigger Event Id" - removed
Output schema / $defs / WorkflowTriggerIdentityRead / properties / payload_hash / titleRemoved value: -"Payload Hash" - removed
Output schema / $defs / WorkflowTriggerIdentityRead / properties / replay_id / titleRemoved value: -"Replay Id" - removed
Output schema / $defs / WorkflowTriggerIdentityRead / properties / source / titleRemoved value: -"Source" - removed
Output schema / $defs / WorkflowTriggerIdentityRead / titleRemoved value: -"WorkflowTriggerIdentityRead" - removed
Output schema / $defs / WorkflowTriggerObjectRead / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / WorkflowTriggerObjectRead / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / WorkflowTriggerObjectRead / titleRemoved value: -"WorkflowTriggerObjectRead" - removed
Output schema / properties / contract_version / titleRemoved value: -"Contract Version" - removed
Output schema / properties / created_at / titleRemoved value: -"Created At" - removed
Output schema / properties / definition_hash / titleRemoved value: -"Definition Hash" - removed
Output schema / properties / finished_at / titleRemoved value: -"Finished At" - removed
Output schema / properties / id / titleRemoved value: -"Id" - removed
Output schema / properties / is_test / titleRemoved value: -"Is Test" - removed
Output schema / properties / node_runs / titleRemoved value: -"Node Runs" - removed
Output schema / properties / resource_type / titleRemoved value: -"Resource Type" - removed
Output schema / properties / results / titleRemoved value: -"Results" - removed
Output schema / properties / started_at / titleRemoved value: -"Started At" - removed
Output schema / properties / workflow_id / titleRemoved value: -"Workflow Id" - removed
Output schema / properties / workflow_version_id / titleRemoved value: -"Workflow Version Id" - removed
Output schema / titleRemoved value: -"WorkflowRunDetailRead"
- Changed
get_production_workflow_version149 fields changed- removed
Input schema / properties / version_id / titleRemoved value: -"Version Id" - removed
Input schema / properties / workflow_id / titleRemoved value: -"Workflow Id" - removed
Input schema / titleRemoved value: -"WorkflowVersionIdentityInput" - removed
Output schema / $defs / AiModelInputConfig / properties / model_slug / titleRemoved value: -"Model Slug" - removed
Output schema / $defs / AiModelInputConfig / titleRemoved value: -"AiModelInputConfig" - removed
Output schema / $defs / AiModelInputNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / AiModelInputNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / AiModelInputNodeInput / titleRemoved value: -"AiModelInputNodeInput" - removed
Output schema / $defs / ArtDirectionInputConfig / properties / art_direction_id / titleRemoved value: -"Art Direction Id" - removed
Output schema / $defs / ArtDirectionInputConfig / properties / ask_at_run_time / titleRemoved value: -"Ask At Run Time" - removed
Output schema / $defs / ArtDirectionInputConfig / titleRemoved value: -"ArtDirectionInputConfig" - removed
Output schema / $defs / ArtDirectionInputNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / ArtDirectionInputNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / ArtDirectionInputNodeInput / titleRemoved value: -"ArtDirectionInputNodeInput" - removed
Output schema / $defs / AvatarInputConfig / properties / ask_at_run_time / titleRemoved value: -"Ask At Run Time" - removed
Output schema / $defs / AvatarInputConfig / properties / avatar_id / titleRemoved value: -"Avatar Id" - removed
Output schema / $defs / AvatarInputConfig / titleRemoved value: -"AvatarInputConfig" - removed
Output schema / $defs / AvatarInputNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / AvatarInputNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / AvatarInputNodeInput / titleRemoved value: -"AvatarInputNodeInput" - removed
Output schema / $defs / BranchNodeConfig / properties / cases / titleRemoved value: -"Cases" - removed
Output schema / $defs / BranchNodeConfig / properties / condition_type / titleRemoved value: -"Condition Type" - removed
Output schema / $defs / BranchNodeConfig / titleRemoved value: -"BranchNodeConfig" - removed
Output schema / $defs / BranchNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / BranchNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / BranchNodeInput / titleRemoved value: -"BranchNodeInput" - removed
Output schema / $defs / ClothingInputConfig / properties / ask_at_run_time / titleRemoved value: -"Ask At Run Time" - removed
Output schema / $defs / ClothingInputConfig / properties / clothing_item_id / titleRemoved value: -"Clothing Item Id" - removed
Output schema / $defs / ClothingInputConfig / titleRemoved value: -"ClothingInputConfig" - removed
Output schema / $defs / ClothingInputNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / ClothingInputNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / ClothingInputNodeInput / titleRemoved value: -"ClothingInputNodeInput" - removed
Output schema / $defs / DeliverTagDestination / properties / tag_ids / titleRemoved value: -"Tag Ids" - removed
Output schema / $defs / DeliverTagDestination / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / DeliverTagDestination / titleRemoved value: -"DeliverTagDestination" - removed
Output schema / $defs / DeliverWebhookDestination / properties / event_type / titleRemoved value: -"Event Type" - removed
Output schema / $defs / DeliverWebhookDestination / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / DeliverWebhookDestination / properties / webhook_id / titleRemoved value: -"Webhook Id" - removed
Output schema / $defs / DeliverWebhookDestination / titleRemoved value: -"DeliverWebhookDestination" - removed
Output schema / $defs / EdgeBindingInput / properties / mode / titleRemoved value: -"Mode" - removed
Output schema / $defs / EdgeBindingInput / properties / required / titleRemoved value: -"Required" - removed
Output schema / $defs / EdgeBindingInput / properties / role / titleRemoved value: -"Role" - removed
Output schema / $defs / EdgeBindingInput / titleRemoved value: -"EdgeBindingInput" - removed
Output schema / $defs / EdgeEndpointInput / properties / node_id / titleRemoved value: -"Node Id" - removed
Output schema / $defs / EdgeEndpointInput / properties / port / titleRemoved value: -"Port" - removed
Output schema / $defs / EdgeEndpointInput / titleRemoved value: -"EdgeEndpointInput" - removed
Output schema / $defs / GenerateNodeConfig / properties / model_slug / titleRemoved value: -"Model Slug" - removed
Output schema / $defs / GenerateNodeConfig / properties / parameters / titleRemoved value: -"Parameters" - removed
Output schema / $defs / GenerateNodeConfig / properties / variant / titleRemoved value: -"Variant" - removed
Output schema / $defs / GenerateNodeConfig / titleRemoved value: -"GenerateNodeConfig" - removed
Output schema / $defs / GenerateNodeConfigV1_2 / properties / model_slug / titleRemoved value: -"Model Slug" - removed
Output schema / $defs / GenerateNodeConfigV1_2 / properties / parameters / titleRemoved value: -"Parameters" - removed
Output schema / $defs / GenerateNodeConfigV1_2 / properties / variant / titleRemoved value: -"Variant" - removed
Output schema / $defs / GenerateNodeConfigV1_2 / titleRemoved value: -"GenerateNodeConfigV1_2" - removed
Output schema / $defs / GenerateNodeInput / properties / config / titleRemoved value: -"Config" - removed
Output schema / $defs / GenerateNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / GenerateNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / GenerateNodeInput / titleRemoved value: -"GenerateNodeInput" - removed
Output schema / $defs / ImageInputConfig / properties / ask_at_run_time / titleRemoved value: -"Ask At Run Time" - removed
Output schema / $defs / ImageInputConfig / properties / generation_result_id / titleRemoved value: -"Generation Result Id" - removed
Output schema / $defs / ImageInputConfig / titleRemoved value: -"ImageInputConfig" - removed
Output schema / $defs / ImageInputNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / ImageInputNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / ImageInputNodeInput / titleRemoved value: -"ImageInputNodeInput" - removed
Output schema / $defs / InfrastructureRetryInput / properties / initial_backoff_seconds / titleRemoved value: -"Initial Backoff Seconds" - removed
Output schema / $defs / InfrastructureRetryInput / properties / max_attempts / titleRemoved value: -"Max Attempts" - removed
Output schema / $defs / InfrastructureRetryInput / properties / max_backoff_seconds / titleRemoved value: -"Max Backoff Seconds" - removed
Output schema / $defs / InfrastructureRetryInput / titleRemoved value: -"InfrastructureRetryInput" - removed
Output schema / $defs / LocationInputConfig / properties / ask_at_run_time / titleRemoved value: -"Ask At Run Time" - removed
Output schema / $defs / LocationInputConfig / properties / location_id / titleRemoved value: -"Location Id" - removed
Output schema / $defs / LocationInputConfig / titleRemoved value: -"LocationInputConfig" - removed
Output schema / $defs / LocationInputNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / LocationInputNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / LocationInputNodeInput / titleRemoved value: -"LocationInputNodeInput" - removed
Output schema / $defs / NotifyNodeConfig / properties / event_type / titleRemoved value: -"Event Type" - removed
Output schema / $defs / NotifyNodeConfig / properties / webhook_id / titleRemoved value: -"Webhook Id" - removed
Output schema / $defs / NotifyNodeConfig / titleRemoved value: -"NotifyNodeConfig" - removed
Output schema / $defs / NotifyNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / NotifyNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / NotifyNodeInput / titleRemoved value: -"NotifyNodeInput" - removed
Output schema / $defs / OutputNodeConfig / properties / projection / titleRemoved value: -"Projection" - removed
Output schema / $defs / OutputNodeConfig / titleRemoved value: -"OutputNodeConfig" - removed
Output schema / $defs / OutputNodeConfigV1_2 / properties / projection / titleRemoved value: -"Projection" - removed
Output schema / $defs / OutputNodeConfigV1_2 / titleRemoved value: -"OutputNodeConfigV1_2" - removed
Output schema / $defs / OutputNodeConfigV1_3 / properties / destinations / titleRemoved value: -"Destinations" - removed
Output schema / $defs / OutputNodeConfigV1_3 / properties / projection / titleRemoved value: -"Projection" - removed
Output schema / $defs / OutputNodeConfigV1_3 / titleRemoved value: -"OutputNodeConfigV1_3" - removed
Output schema / $defs / OutputNodeConfigV1_4 / properties / destinations / titleRemoved value: -"Destinations" - removed
Output schema / $defs / OutputNodeConfigV1_4 / titleRemoved value: -"OutputNodeConfigV1_4" - removed
Output schema / $defs / OutputNodeInput / properties / config / titleRemoved value: -"Config" - removed
Output schema / $defs / OutputNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / OutputNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / OutputNodeInput / titleRemoved value: -"OutputNodeInput" - removed
Output schema / $defs / PromptInputConfig / properties / ask_at_run_time / titleRemoved value: -"Ask At Run Time" - removed
Output schema / $defs / PromptInputConfig / properties / text / titleRemoved value: -"Text" - removed
Output schema / $defs / PromptInputConfig / titleRemoved value: -"PromptInputConfig" - removed
Output schema / $defs / PromptInputNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / PromptInputNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / PromptInputNodeInput / titleRemoved value: -"PromptInputNodeInput" - removed
Output schema / $defs / QaGateNodeConfig / properties / max_content_retries / titleRemoved value: -"Max Content Retries" - removed
Output schema / $defs / QaGateNodeConfig / properties / policy / titleRemoved value: -"Policy" - removed
Output schema / $defs / QaGateNodeConfig / titleRemoved value: -"QaGateNodeConfig" - removed
Output schema / $defs / QaGateNodeConfigV1_2 / properties / max_content_retries / titleRemoved value: -"Max Content Retries" - removed
Output schema / $defs / QaGateNodeConfigV1_2 / properties / policy / titleRemoved value: -"Policy" - removed
Output schema / $defs / QaGateNodeConfigV1_2 / titleRemoved value: -"QaGateNodeConfigV1_2" - removed
Output schema / $defs / QaGateNodeInput / properties / config / titleRemoved value: -"Config" - removed
Output schema / $defs / QaGateNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / QaGateNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / QaGateNodeInput / titleRemoved value: -"QaGateNodeInput" - removed
Output schema / $defs / QaGraphRetryConfig / properties / max_retries / titleRemoved value: -"Max Retries" - removed
Output schema / $defs / QaGraphRetryConfig / properties / retry_from_node_id / titleRemoved value: -"Retry From Node Id" - removed
Output schema / $defs / QaGraphRetryConfig / titleRemoved value: -"QaGraphRetryConfig" - removed
Output schema / $defs / ReadinessInput / properties / mode / titleRemoved value: -"Mode" - removed
Output schema / $defs / ReadinessInput / titleRemoved value: -"ReadinessInput" - removed
Output schema / $defs / TriggerNodeConfig / properties / settings / titleRemoved value: -"Settings" - removed
Output schema / $defs / TriggerNodeConfig / properties / source / titleRemoved value: -"Source" - removed
Output schema / $defs / TriggerNodeConfig / titleRemoved value: -"TriggerNodeConfig" - removed
Output schema / $defs / TriggerNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / TriggerNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / TriggerNodeInput / titleRemoved value: -"TriggerNodeInput" - removed
Output schema / $defs / WorkflowDefinitionVersionRead / properties / base_version_id / titleRemoved value: -"Base Version Id" - removed
Output schema / $defs / WorkflowDefinitionVersionRead / properties / contract_version / titleRemoved value: -"Contract Version" - removed
Output schema / $defs / WorkflowDefinitionVersionRead / properties / created_at / titleRemoved value: -"Created At" - removed
Output schema / $defs / WorkflowDefinitionVersionRead / properties / created_by_profile_id / titleRemoved value: -"Created By Profile Id" - removed
Output schema / $defs / WorkflowDefinitionVersionRead / properties / definition_hash / titleRemoved value: -"Definition Hash" - removed
Output schema / $defs / WorkflowDefinitionVersionRead / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / WorkflowDefinitionVersionRead / properties / number / titleRemoved value: -"Number" - removed
Output schema / $defs / WorkflowDefinitionVersionRead / properties / published_at / titleRemoved value: -"Published At" - removed
Output schema / $defs / WorkflowDefinitionVersionRead / titleRemoved value: -"WorkflowDefinitionVersionRead" - removed
Output schema / $defs / WorkflowDefinitionWorkflowRead / properties / archived / titleRemoved value: -"Archived" - removed
Output schema / $defs / WorkflowDefinitionWorkflowRead / properties / company_id / titleRemoved value: -"Company Id" - removed
Output schema / $defs / WorkflowDefinitionWorkflowRead / properties / created_by_profile_id / titleRemoved value: -"Created By Profile Id" - removed
Output schema / $defs / WorkflowDefinitionWorkflowRead / properties / enabled / titleRemoved value: -"Enabled" - removed
Output schema / $defs / WorkflowDefinitionWorkflowRead / properties / enabled_version_id / titleRemoved value: -"Enabled Version Id" - removed
Output schema / $defs / WorkflowDefinitionWorkflowRead / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / WorkflowDefinitionWorkflowRead / properties / name / titleRemoved value: -"Name" - removed
Output schema / $defs / WorkflowDefinitionWorkflowRead / properties / updated_by_profile_id / titleRemoved value: -"Updated By Profile Id" - removed
Output schema / $defs / WorkflowDefinitionWorkflowRead / titleRemoved value: -"WorkflowDefinitionWorkflowRead" - removed
Output schema / $defs / WorkflowEdgeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / WorkflowEdgeInput / titleRemoved value: -"WorkflowEdgeInput" - removed
Output schema / $defs / WorkflowFailurePolicy / titleRemoved value: -"WorkflowFailurePolicy" - removed
Output schema / $defs / WorkflowVersionState / titleRemoved value: -"WorkflowVersionState" - removed
Output schema / properties / contract_version / titleRemoved value: -"Contract Version" - removed
Output schema / properties / edges / titleRemoved value: -"Edges" - removed
Output schema / properties / estimated_credit_units / titleRemoved value: -"Estimated Credit Units" - removed
Output schema / properties / nodes / titleRemoved value: -"Nodes" - removed
Output schema / properties / resource_type / titleRemoved value: -"Resource Type" - removed
Output schema / properties / result_projection / titleRemoved value: -"Result Projection" - removed
Output schema / titleRemoved value: -"WorkflowDefinitionRead"
- Changed
list_production_workflow_runs29 fields changed- removed
Input schema / $defs / WorkflowRunStatus / titleRemoved value: -"WorkflowRunStatus" - removed
Input schema / properties / items_per_page / titleRemoved value: -"Items Per Page" - removed
Input schema / properties / page / titleRemoved value: -"Page" - removed
Input schema / properties / workflow_id / titleRemoved value: -"Workflow Id" - removed
Input schema / titleRemoved value: -"ListWorkflowRunsInput" - removed
Output schema / $defs / WorkflowRunStatus / titleRemoved value: -"WorkflowRunStatus" - removed
Output schema / $defs / WorkflowRunSummaryRead / properties / contract_version / titleRemoved value: -"Contract Version" - removed
Output schema / $defs / WorkflowRunSummaryRead / properties / created_at / titleRemoved value: -"Created At" - removed
Output schema / $defs / WorkflowRunSummaryRead / properties / debited_credit_units / titleRemoved value: -"Debited Credit Units" - removed
Output schema / $defs / WorkflowRunSummaryRead / properties / definition_hash / titleRemoved value: -"Definition Hash" - removed
Output schema / $defs / WorkflowRunSummaryRead / properties / estimated_credit_units / titleRemoved value: -"Estimated Credit Units" - removed
Output schema / $defs / WorkflowRunSummaryRead / properties / finished_at / titleRemoved value: -"Finished At" - removed
Output schema / $defs / WorkflowRunSummaryRead / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / WorkflowRunSummaryRead / properties / is_test / titleRemoved value: -"Is Test" - removed
Output schema / $defs / WorkflowRunSummaryRead / properties / net_credit_units / titleRemoved value: -"Net Credit Units" - removed
Output schema / $defs / WorkflowRunSummaryRead / properties / refunded_credit_units / titleRemoved value: -"Refunded Credit Units" - removed
Output schema / $defs / WorkflowRunSummaryRead / properties / resource_type / titleRemoved value: -"Resource Type" - removed
Output schema / $defs / WorkflowRunSummaryRead / properties / started_at / titleRemoved value: -"Started At" - removed
Output schema / $defs / WorkflowRunSummaryRead / properties / trigger_object_id / titleRemoved value: -"Trigger Object Id" - removed
Output schema / $defs / WorkflowRunSummaryRead / properties / trigger_object_type / titleRemoved value: -"Trigger Object Type" - removed
Output schema / $defs / WorkflowRunSummaryRead / properties / trigger_source / titleRemoved value: -"Trigger Source" - removed
Output schema / $defs / WorkflowRunSummaryRead / properties / workflow_id / titleRemoved value: -"Workflow Id" - removed
Output schema / $defs / WorkflowRunSummaryRead / properties / workflow_version_id / titleRemoved value: -"Workflow Version Id" - removed
Output schema / $defs / WorkflowRunSummaryRead / titleRemoved value: -"WorkflowRunSummaryRead" - removed
Output schema / properties / data / titleRemoved value: -"Data" - removed
Output schema / properties / items_per_page / titleRemoved value: -"Items Per Page" - removed
Output schema / properties / page / titleRemoved value: -"Page" - removed
Output schema / properties / total_count / titleRemoved value: -"Total Count" - removed
Output schema / titleRemoved value: -"PaginatedWorkflowRunRead"
- Changed
list_production_workflow_versions22 fields changed- removed
Input schema / properties / items_per_page / titleRemoved value: -"Items Per Page" - removed
Input schema / properties / page / titleRemoved value: -"Page" - removed
Input schema / properties / workflow_id / titleRemoved value: -"Workflow Id" - removed
Input schema / titleRemoved value: -"ListWorkflowVersionsInput" - removed
Output schema / $defs / WorkflowVersionState / titleRemoved value: -"WorkflowVersionState" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / base_version_id / titleRemoved value: -"Base Version Id" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / contract_version / titleRemoved value: -"Contract Version" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / created_at / titleRemoved value: -"Created At" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / created_by_profile_id / titleRemoved value: -"Created By Profile Id" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / definition_hash / titleRemoved value: -"Definition Hash" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / estimated_credit_units / titleRemoved value: -"Estimated Credit Units" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / number / titleRemoved value: -"Number" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / published_at / titleRemoved value: -"Published At" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / published_by_profile_id / titleRemoved value: -"Published By Profile Id" - removed
Output schema / $defs / WorkflowVersionSummaryRead / properties / updated_at / titleRemoved value: -"Updated At" - removed
Output schema / $defs / WorkflowVersionSummaryRead / titleRemoved value: -"WorkflowVersionSummaryRead" - removed
Output schema / properties / data / titleRemoved value: -"Data" - removed
Output schema / properties / items_per_page / titleRemoved value: -"Items Per Page" - removed
Output schema / properties / page / titleRemoved value: -"Page" - removed
Output schema / properties / total_count / titleRemoved value: -"Total Count" - removed
Output schema / titleRemoved value: -"WorkflowVersionListRead"
- Changed
list_production_workflows19 fields changed- removed
Input schema / properties / include_archived / titleRemoved value: -"Include Archived" - removed
Input schema / properties / items_per_page / titleRemoved value: -"Items Per Page" - removed
Input schema / properties / page / titleRemoved value: -"Page" - removed
Input schema / titleRemoved value: -"ListWorkflowsInput" - removed
Output schema / $defs / WorkflowResourceRead / properties / archived / titleRemoved value: -"Archived" - removed
Output schema / $defs / WorkflowResourceRead / properties / company_id / titleRemoved value: -"Company Id" - removed
Output schema / $defs / WorkflowResourceRead / properties / created_at / titleRemoved value: -"Created At" - removed
Output schema / $defs / WorkflowResourceRead / properties / created_by_profile_id / titleRemoved value: -"Created By Profile Id" - removed
Output schema / $defs / WorkflowResourceRead / properties / enabled / titleRemoved value: -"Enabled" - removed
Output schema / $defs / WorkflowResourceRead / properties / enabled_version_id / titleRemoved value: -"Enabled Version Id" - removed
Output schema / $defs / WorkflowResourceRead / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / WorkflowResourceRead / properties / name / titleRemoved value: -"Name" - removed
Output schema / $defs / WorkflowResourceRead / properties / run_time_slot_kinds / titleRemoved value: -"Run Time Slot Kinds" - removed
Output schema / $defs / WorkflowResourceRead / properties / updated_at / titleRemoved value: -"Updated At" - removed
Output schema / $defs / WorkflowResourceRead / properties / updated_by_profile_id / titleRemoved value: -"Updated By Profile Id" - removed
Output schema / $defs / WorkflowResourceRead / titleRemoved value: -"WorkflowResourceRead" - removed
Output schema / properties / data / titleRemoved value: -"Data" - removed
Output schema / properties / total_count / titleRemoved value: -"Total Count" - removed
Output schema / titleRemoved value: -"PaginatedWorkflowRead"
- Changed
prepare_local_garment_upload1 field changed- removed
Input schema / $defsRemoved 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" - } -}
- Changed
propose_brief5 fields changed- removed
Input schema / $defs / GenerationCommand / properties / source / discriminator / mappingRemoved value: -{ - "generation_result": "#/$defs/GenerationResultCommandSource", - "pipeline_step": "#/$defs/PipelineStepCommandSource", - "public_url": "#/$defs/PublicUrlCommandSource", - "uploaded_file": "#/$defs/UploadedFileCommandSource" -} - removed
Input schema / $defs / GenerationResultCommandSourceRemoved value: -{ - "properties": { - "generation_result_id": { - "minimum": 1, - "type": "integer" - }, - "type": { - "const": "generation_result", - "type": "string" - } - }, - "required": [ - "type", - "generation_result_id" - ], - "type": "object" -} - removed
Input schema / $defs / PipelineStepCommandSourceRemoved 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" -} - removed
Input schema / $defs / PublicUrlCommandSourceRemoved value: -{ - "properties": { - "image_url": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "public_url", - "type": "string" - } - }, - "required": [ - "type", - "image_url" - ], - "type": "object" -} - removed
Input schema / $defs / UploadedFileCommandSourceRemoved value: -{ - "properties": { - "type": { - "const": "uploaded_file", - "type": "string" - }, - "uploaded_file_id": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "type", - "uploaded_file_id" - ], - "type": "object" -}
- Changed
publish_production_workflow_version149 fields changed- removed
Input schema / properties / version_id / titleRemoved value: -"Version Id" - removed
Input schema / properties / workflow_id / titleRemoved value: -"Workflow Id" - removed
Input schema / titleRemoved value: -"WorkflowVersionIdentityInput" - removed
Output schema / $defs / AiModelInputConfig / properties / model_slug / titleRemoved value: -"Model Slug" - removed
Output schema / $defs / AiModelInputConfig / titleRemoved value: -"AiModelInputConfig" - removed
Output schema / $defs / AiModelInputNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / AiModelInputNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / AiModelInputNodeInput / titleRemoved value: -"AiModelInputNodeInput" - removed
Output schema / $defs / ArtDirectionInputConfig / properties / art_direction_id / titleRemoved value: -"Art Direction Id" - removed
Output schema / $defs / ArtDirectionInputConfig / properties / ask_at_run_time / titleRemoved value: -"Ask At Run Time" - removed
Output schema / $defs / ArtDirectionInputConfig / titleRemoved value: -"ArtDirectionInputConfig" - removed
Output schema / $defs / ArtDirectionInputNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / ArtDirectionInputNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / ArtDirectionInputNodeInput / titleRemoved value: -"ArtDirectionInputNodeInput" - removed
Output schema / $defs / AvatarInputConfig / properties / ask_at_run_time / titleRemoved value: -"Ask At Run Time" - removed
Output schema / $defs / AvatarInputConfig / properties / avatar_id / titleRemoved value: -"Avatar Id" - removed
Output schema / $defs / AvatarInputConfig / titleRemoved value: -"AvatarInputConfig" - removed
Output schema / $defs / AvatarInputNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / AvatarInputNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / AvatarInputNodeInput / titleRemoved value: -"AvatarInputNodeInput" - removed
Output schema / $defs / BranchNodeConfig / properties / cases / titleRemoved value: -"Cases" - removed
Output schema / $defs / BranchNodeConfig / properties / condition_type / titleRemoved value: -"Condition Type" - removed
Output schema / $defs / BranchNodeConfig / titleRemoved value: -"BranchNodeConfig" - removed
Output schema / $defs / BranchNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / BranchNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / BranchNodeInput / titleRemoved value: -"BranchNodeInput" - removed
Output schema / $defs / ClothingInputConfig / properties / ask_at_run_time / titleRemoved value: -"Ask At Run Time" - removed
Output schema / $defs / ClothingInputConfig / properties / clothing_item_id / titleRemoved value: -"Clothing Item Id" - removed
Output schema / $defs / ClothingInputConfig / titleRemoved value: -"ClothingInputConfig" - removed
Output schema / $defs / ClothingInputNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / ClothingInputNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / ClothingInputNodeInput / titleRemoved value: -"ClothingInputNodeInput" - removed
Output schema / $defs / DeliverTagDestination / properties / tag_ids / titleRemoved value: -"Tag Ids" - removed
Output schema / $defs / DeliverTagDestination / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / DeliverTagDestination / titleRemoved value: -"DeliverTagDestination" - removed
Output schema / $defs / DeliverWebhookDestination / properties / event_type / titleRemoved value: -"Event Type" - removed
Output schema / $defs / DeliverWebhookDestination / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / DeliverWebhookDestination / properties / webhook_id / titleRemoved value: -"Webhook Id" - removed
Output schema / $defs / DeliverWebhookDestination / titleRemoved value: -"DeliverWebhookDestination" - removed
Output schema / $defs / EdgeBindingInput / properties / mode / titleRemoved value: -"Mode" - removed
Output schema / $defs / EdgeBindingInput / properties / required / titleRemoved value: -"Required" - removed
Output schema / $defs / EdgeBindingInput / properties / role / titleRemoved value: -"Role" - removed
Output schema / $defs / EdgeBindingInput / titleRemoved value: -"EdgeBindingInput" - removed
Output schema / $defs / EdgeEndpointInput / properties / node_id / titleRemoved value: -"Node Id" - removed
Output schema / $defs / EdgeEndpointInput / properties / port / titleRemoved value: -"Port" - removed
Output schema / $defs / EdgeEndpointInput / titleRemoved value: -"EdgeEndpointInput" - removed
Output schema / $defs / GenerateNodeConfig / properties / model_slug / titleRemoved value: -"Model Slug" - removed
Output schema / $defs / GenerateNodeConfig / properties / parameters / titleRemoved value: -"Parameters" - removed
Output schema / $defs / GenerateNodeConfig / properties / variant / titleRemoved value: -"Variant" - removed
Output schema / $defs / GenerateNodeConfig / titleRemoved value: -"GenerateNodeConfig" - removed
Output schema / $defs / GenerateNodeConfigV1_2 / properties / model_slug / titleRemoved value: -"Model Slug" - removed
Output schema / $defs / GenerateNodeConfigV1_2 / properties / parameters / titleRemoved value: -"Parameters" - removed
Output schema / $defs / GenerateNodeConfigV1_2 / properties / variant / titleRemoved value: -"Variant" - removed
Output schema / $defs / GenerateNodeConfigV1_2 / titleRemoved value: -"GenerateNodeConfigV1_2" - removed
Output schema / $defs / GenerateNodeInput / properties / config / titleRemoved value: -"Config" - removed
Output schema / $defs / GenerateNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / GenerateNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / GenerateNodeInput / titleRemoved value: -"GenerateNodeInput" - removed
Output schema / $defs / ImageInputConfig / properties / ask_at_run_time / titleRemoved value: -"Ask At Run Time" - removed
Output schema / $defs / ImageInputConfig / properties / generation_result_id / titleRemoved value: -"Generation Result Id" - removed
Output schema / $defs / ImageInputConfig / titleRemoved value: -"ImageInputConfig" - removed
Output schema / $defs / ImageInputNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / ImageInputNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / ImageInputNodeInput / titleRemoved value: -"ImageInputNodeInput" - removed
Output schema / $defs / InfrastructureRetryInput / properties / initial_backoff_seconds / titleRemoved value: -"Initial Backoff Seconds" - removed
Output schema / $defs / InfrastructureRetryInput / properties / max_attempts / titleRemoved value: -"Max Attempts" - removed
Output schema / $defs / InfrastructureRetryInput / properties / max_backoff_seconds / titleRemoved value: -"Max Backoff Seconds" - removed
Output schema / $defs / InfrastructureRetryInput / titleRemoved value: -"InfrastructureRetryInput" - removed
Output schema / $defs / LocationInputConfig / properties / ask_at_run_time / titleRemoved value: -"Ask At Run Time" - removed
Output schema / $defs / LocationInputConfig / properties / location_id / titleRemoved value: -"Location Id" - removed
Output schema / $defs / LocationInputConfig / titleRemoved value: -"LocationInputConfig" - removed
Output schema / $defs / LocationInputNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / LocationInputNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / LocationInputNodeInput / titleRemoved value: -"LocationInputNodeInput" - removed
Output schema / $defs / NotifyNodeConfig / properties / event_type / titleRemoved value: -"Event Type" - removed
Output schema / $defs / NotifyNodeConfig / properties / webhook_id / titleRemoved value: -"Webhook Id" - removed
Output schema / $defs / NotifyNodeConfig / titleRemoved value: -"NotifyNodeConfig" - removed
Output schema / $defs / NotifyNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / NotifyNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / NotifyNodeInput / titleRemoved value: -"NotifyNodeInput" - removed
Output schema / $defs / OutputNodeConfig / properties / projection / titleRemoved value: -"Projection" - removed
Output schema / $defs / OutputNodeConfig / titleRemoved value: -"OutputNodeConfig" - removed
Output schema / $defs / OutputNodeConfigV1_2 / properties / projection / titleRemoved value: -"Projection" - removed
Output schema / $defs / OutputNodeConfigV1_2 / titleRemoved value: -"OutputNodeConfigV1_2" - removed
Output schema / $defs / OutputNodeConfigV1_3 / properties / destinations / titleRemoved value: -"Destinations" - removed
Output schema / $defs / OutputNodeConfigV1_3 / properties / projection / titleRemoved value: -"Projection" - removed
Output schema / $defs / OutputNodeConfigV1_3 / titleRemoved value: -"OutputNodeConfigV1_3" - removed
Output schema / $defs / OutputNodeConfigV1_4 / properties / destinations / titleRemoved value: -"Destinations" - removed
Output schema / $defs / OutputNodeConfigV1_4 / titleRemoved value: -"OutputNodeConfigV1_4" - removed
Output schema / $defs / OutputNodeInput / properties / config / titleRemoved value: -"Config" - removed
Output schema / $defs / OutputNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / OutputNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / OutputNodeInput / titleRemoved value: -"OutputNodeInput" - removed
Output schema / $defs / PromptInputConfig / properties / ask_at_run_time / titleRemoved value: -"Ask At Run Time" - removed
Output schema / $defs / PromptInputConfig / properties / text / titleRemoved value: -"Text" - removed
Output schema / $defs / PromptInputConfig / titleRemoved value: -"PromptInputConfig" - removed
Output schema / $defs / PromptInputNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / PromptInputNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / PromptInputNodeInput / titleRemoved value: -"PromptInputNodeInput" - removed
Output schema / $defs / QaGateNodeConfig / properties / max_content_retries / titleRemoved value: -"Max Content Retries" - removed
Output schema / $defs / QaGateNodeConfig / properties / policy / titleRemoved value: -"Policy" - removed
Output schema / $defs / QaGateNodeConfig / titleRemoved value: -"QaGateNodeConfig" - removed
Output schema / $defs / QaGateNodeConfigV1_2 / properties / max_content_retries / titleRemoved value: -"Max Content Retries" - removed
Output schema / $defs / QaGateNodeConfigV1_2 / properties / policy / titleRemoved value: -"Policy" - removed
Output schema / $defs / QaGateNodeConfigV1_2 / titleRemoved value: -"QaGateNodeConfigV1_2" - removed
Output schema / $defs / QaGateNodeInput / properties / config / titleRemoved value: -"Config" - removed
Output schema / $defs / QaGateNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / QaGateNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / QaGateNodeInput / titleRemoved value: -"QaGateNodeInput" - removed
Output schema / $defs / QaGraphRetryConfig / properties / max_retries / titleRemoved value: -"Max Retries" - removed
Output schema / $defs / QaGraphRetryConfig / properties / retry_from_node_id / titleRemoved value: -"Retry From Node Id" - removed
Output schema / $defs / QaGraphRetryConfig / titleRemoved value: -"QaGraphRetryConfig" - removed
Output schema / $defs / ReadinessInput / properties / mode / titleRemoved value: -"Mode" - removed
Output schema / $defs / ReadinessInput / titleRemoved value: -"ReadinessInput" - removed
Output schema / $defs / TriggerNodeConfig / properties / settings / titleRemoved value: -"Settings" - removed
Output schema / $defs / TriggerNodeConfig / properties / source / titleRemoved value: -"Source" - removed
Output schema / $defs / TriggerNodeConfig / titleRemoved value: -"TriggerNodeConfig" - removed
Output schema / $defs / TriggerNodeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / TriggerNodeInput / properties / type / titleRemoved value: -"Type" - removed
Output schema / $defs / TriggerNodeInput / titleRemoved value: -"TriggerNodeInput" - removed
Output schema / $defs / WorkflowDefinitionVersionRead / properties / base_version_id / titleRemoved value: -"Base Version Id" - removed
Output schema / $defs / WorkflowDefinitionVersionRead / properties / contract_version / titleRemoved value: -"Contract Version" - removed
Output schema / $defs / WorkflowDefinitionVersionRead / properties / created_at / titleRemoved value: -"Created At" - removed
Output schema / $defs / WorkflowDefinitionVersionRead / properties / created_by_profile_id / titleRemoved value: -"Created By Profile Id" - removed
Output schema / $defs / WorkflowDefinitionVersionRead / properties / definition_hash / titleRemoved value: -"Definition Hash" - removed
Output schema / $defs / WorkflowDefinitionVersionRead / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / WorkflowDefinitionVersionRead / properties / number / titleRemoved value: -"Number" - removed
Output schema / $defs / WorkflowDefinitionVersionRead / properties / published_at / titleRemoved value: -"Published At" - removed
Output schema / $defs / WorkflowDefinitionVersionRead / titleRemoved value: -"WorkflowDefinitionVersionRead" - removed
Output schema / $defs / WorkflowDefinitionWorkflowRead / properties / archived / titleRemoved value: -"Archived" - removed
Output schema / $defs / WorkflowDefinitionWorkflowRead / properties / company_id / titleRemoved value: -"Company Id" - removed
Output schema / $defs / WorkflowDefinitionWorkflowRead / properties / created_by_profile_id / titleRemoved value: -"Created By Profile Id" - removed
Output schema / $defs / WorkflowDefinitionWorkflowRead / properties / enabled / titleRemoved value: -"Enabled" - removed
Output schema / $defs / WorkflowDefinitionWorkflowRead / properties / enabled_version_id / titleRemoved value: -"Enabled Version Id" - removed
Output schema / $defs / WorkflowDefinitionWorkflowRead / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / WorkflowDefinitionWorkflowRead / properties / name / titleRemoved value: -"Name" - removed
Output schema / $defs / WorkflowDefinitionWorkflowRead / properties / updated_by_profile_id / titleRemoved value: -"Updated By Profile Id" - removed
Output schema / $defs / WorkflowDefinitionWorkflowRead / titleRemoved value: -"WorkflowDefinitionWorkflowRead" - removed
Output schema / $defs / WorkflowEdgeInput / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / WorkflowEdgeInput / titleRemoved value: -"WorkflowEdgeInput" - removed
Output schema / $defs / WorkflowFailurePolicy / titleRemoved value: -"WorkflowFailurePolicy" - removed
Output schema / $defs / WorkflowVersionState / titleRemoved value: -"WorkflowVersionState" - removed
Output schema / properties / contract_version / titleRemoved value: -"Contract Version" - removed
Output schema / properties / edges / titleRemoved value: -"Edges" - removed
Output schema / properties / estimated_credit_units / titleRemoved value: -"Estimated Credit Units" - removed
Output schema / properties / nodes / titleRemoved value: -"Nodes" - removed
Output schema / properties / resource_type / titleRemoved value: -"Resource Type" - removed
Output schema / properties / result_projection / titleRemoved value: -"Result Projection" - removed
Output schema / titleRemoved value: -"WorkflowDefinitionRead"
- Changed
save_template5 fields changed- removed
Input schema / $defs / GenerationCommand / properties / source / discriminator / mappingRemoved value: -{ - "generation_result": "#/$defs/GenerationResultCommandSource", - "pipeline_step": "#/$defs/PipelineStepCommandSource", - "public_url": "#/$defs/PublicUrlCommandSource", - "uploaded_file": "#/$defs/UploadedFileCommandSource" -} - removed
Input schema / $defs / GenerationResultCommandSourceRemoved value: -{ - "properties": { - "generation_result_id": { - "minimum": 1, - "type": "integer" - }, - "type": { - "const": "generation_result", - "type": "string" - } - }, - "required": [ - "type", - "generation_result_id" - ], - "type": "object" -} - removed
Input schema / $defs / PipelineStepCommandSourceRemoved 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" -} - removed
Input schema / $defs / PublicUrlCommandSourceRemoved value: -{ - "properties": { - "image_url": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "public_url", - "type": "string" - } - }, - "required": [ - "type", - "image_url" - ], - "type": "object" -} - removed
Input schema / $defs / UploadedFileCommandSourceRemoved value: -{ - "properties": { - "type": { - "const": "uploaded_file", - "type": "string" - }, - "uploaded_file_id": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "type", - "uploaded_file_id" - ], - "type": "object" -}
- Changed
start_production_workflow_run27 fields changed- removed
Input schema / $defs / WorkflowRunCreate / properties / object_id / titleRemoved value: -"Object Id" - removed
Input schema / $defs / WorkflowRunCreate / properties / object_type / titleRemoved value: -"Object Type" - removed
Input schema / $defs / WorkflowRunCreate / properties / payload / titleRemoved value: -"Payload" - removed
Input schema / $defs / WorkflowRunCreate / properties / slot_bindings / titleRemoved value: -"Slot Bindings" - removed
Input schema / $defs / WorkflowRunCreate / properties / version_id / titleRemoved value: -"Version Id" - removed
Input schema / $defs / WorkflowRunCreate / titleRemoved value: -"WorkflowRunCreate" - removed
Input schema / properties / idempotency_key / titleRemoved value: -"Idempotency Key" - removed
Input schema / properties / workflow_id / titleRemoved value: -"Workflow Id" - removed
Input schema / titleRemoved value: -"StartWorkflowRunInput" - removed
Output schema / $defs / WorkflowRunStatus / titleRemoved value: -"WorkflowRunStatus" - removed
Output schema / properties / contract_version / titleRemoved value: -"Contract Version" - removed
Output schema / properties / created_at / titleRemoved value: -"Created At" - removed
Output schema / properties / debited_credit_units / titleRemoved value: -"Debited Credit Units" - removed
Output schema / properties / definition_hash / titleRemoved value: -"Definition Hash" - removed
Output schema / properties / estimated_credit_units / titleRemoved value: -"Estimated Credit Units" - removed
Output schema / properties / finished_at / titleRemoved value: -"Finished At" - removed
Output schema / properties / id / titleRemoved value: -"Id" - removed
Output schema / properties / is_test / titleRemoved value: -"Is Test" - removed
Output schema / properties / net_credit_units / titleRemoved value: -"Net Credit Units" - removed
Output schema / properties / refunded_credit_units / titleRemoved value: -"Refunded Credit Units" - removed
Output schema / properties / replayed / titleRemoved value: -"Replayed" - removed
Output schema / properties / resource_type / titleRemoved value: -"Resource Type" - removed
Output schema / properties / started_at / titleRemoved value: -"Started At" - removed
Output schema / properties / trigger_event_id / titleRemoved value: -"Trigger Event Id" - removed
Output schema / properties / workflow_id / titleRemoved value: -"Workflow Id" - removed
Output schema / properties / workflow_version_id / titleRemoved value: -"Workflow Version Id" - removed
Output schema / titleRemoved value: -"WorkflowRunStartRead"
- Changed
start_production_workflow_run_batch34 fields changed- removed
Input schema / $defs / WorkflowRunBatchCreate / properties / object_ids / titleRemoved value: -"Object Ids" - removed
Input schema / $defs / WorkflowRunBatchCreate / properties / object_type / titleRemoved value: -"Object Type" - removed
Input schema / $defs / WorkflowRunBatchCreate / properties / payload / titleRemoved value: -"Payload" - removed
Input schema / $defs / WorkflowRunBatchCreate / properties / slot_bindings / titleRemoved value: -"Slot Bindings" - removed
Input schema / $defs / WorkflowRunBatchCreate / properties / version_id / titleRemoved value: -"Version Id" - removed
Input schema / $defs / WorkflowRunBatchCreate / titleRemoved value: -"WorkflowRunBatchCreate" - removed
Input schema / properties / idempotency_key / titleRemoved value: -"Idempotency Key" - removed
Input schema / properties / workflow_id / titleRemoved value: -"Workflow Id" - removed
Input schema / titleRemoved value: -"StartWorkflowRunBatchInput" - removed
Output schema / $defs / WorkflowRunBatchFailure / properties / detail / titleRemoved value: -"Detail" - removed
Output schema / $defs / WorkflowRunBatchFailure / properties / object_id / titleRemoved value: -"Object Id" - removed
Output schema / $defs / WorkflowRunBatchFailure / titleRemoved value: -"WorkflowRunBatchFailure" - removed
Output schema / $defs / WorkflowRunStartRead / properties / contract_version / titleRemoved value: -"Contract Version" - removed
Output schema / $defs / WorkflowRunStartRead / properties / created_at / titleRemoved value: -"Created At" - removed
Output schema / $defs / WorkflowRunStartRead / properties / debited_credit_units / titleRemoved value: -"Debited Credit Units" - removed
Output schema / $defs / WorkflowRunStartRead / properties / definition_hash / titleRemoved value: -"Definition Hash" - removed
Output schema / $defs / WorkflowRunStartRead / properties / estimated_credit_units / titleRemoved value: -"Estimated Credit Units" - removed
Output schema / $defs / WorkflowRunStartRead / properties / finished_at / titleRemoved value: -"Finished At" - removed
Output schema / $defs / WorkflowRunStartRead / properties / id / titleRemoved value: -"Id" - removed
Output schema / $defs / WorkflowRunStartRead / properties / is_test / titleRemoved value: -"Is Test" - removed
Output schema / $defs / WorkflowRunStartRead / properties / net_credit_units / titleRemoved value: -"Net Credit Units" - removed
Output schema / $defs / WorkflowRunStartRead / properties / refunded_credit_units / titleRemoved value: -"Refunded Credit Units" - removed
Output schema / $defs / WorkflowRunStartRead / properties / replayed / titleRemoved value: -"Replayed" - removed
Output schema / $defs / WorkflowRunStartRead / properties / resource_type / titleRemoved value: -"Resource Type" - removed
Output schema / $defs / WorkflowRunStartRead / properties / started_at / titleRemoved value: -"Started At" - removed
Output schema / $defs / WorkflowRunStartRead / properties / trigger_event_id / titleRemoved value: -"Trigger Event Id" - removed
Output schema / $defs / WorkflowRunStartRead / properties / workflow_id / titleRemoved value: -"Workflow Id" - removed
Output schema / $defs / WorkflowRunStartRead / properties / workflow_version_id / titleRemoved value: -"Workflow Version Id" - removed
Output schema / $defs / WorkflowRunStartRead / titleRemoved value: -"WorkflowRunStartRead" - removed
Output schema / $defs / WorkflowRunStatus / titleRemoved value: -"WorkflowRunStatus" - removed
Output schema / properties / failures / titleRemoved value: -"Failures" - removed
Output schema / properties / resource_type / titleRemoved value: -"Resource Type" - removed
Output schema / properties / runs / titleRemoved value: -"Runs" - removed
Output schema / titleRemoved value: -"WorkflowRunBatchStartRead"
- Changed
update_brief5 fields changed- removed
Input schema / $defs / GenerationCommand / properties / source / discriminator / mappingRemoved value: -{ - "generation_result": "#/$defs/GenerationResultCommandSource", - "pipeline_step": "#/$defs/PipelineStepCommandSource", - "public_url": "#/$defs/PublicUrlCommandSource", - "uploaded_file": "#/$defs/UploadedFileCommandSource" -} - removed
Input schema / $defs / GenerationResultCommandSourceRemoved value: -{ - "properties": { - "generation_result_id": { - "minimum": 1, - "type": "integer" - }, - "type": { - "const": "generation_result", - "type": "string" - } - }, - "required": [ - "type", - "generation_result_id" - ], - "type": "object" -} - removed
Input schema / $defs / PipelineStepCommandSourceRemoved 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" -} - removed
Input schema / $defs / PublicUrlCommandSourceRemoved value: -{ - "properties": { - "image_url": { - "minLength": 1, - "type": "string" - }, - "type": { - "const": "public_url", - "type": "string" - } - }, - "required": [ - "type", - "image_url" - ], - "type": "object" -} - removed
Input schema / $defs / UploadedFileCommandSourceRemoved value: -{ - "properties": { - "type": { - "const": "uploaded_file", - "type": "string" - }, - "uploaded_file_id": { - "minimum": 1, - "type": "integer" - } - }, - "required": [ - "type", - "uploaded_file_id" - ], - "type": "object" -}
- Changed
update_production_workflow18 fields changed- removed
Input schema / $defs / WorkflowUpdate / properties / archived / titleRemoved value: -"Archived" - removed
Input schema / $defs / WorkflowUpdate / properties / enabled / titleRemoved value: -"Enabled" - removed
Input schema / $defs / WorkflowUpdate / properties / name / titleRemoved value: -"Name" - removed
Input schema / $defs / WorkflowUpdate / titleRemoved value: -"WorkflowUpdate" - removed
Input schema / properties / workflow_id / titleRemoved value: -"Workflow Id" - removed
Input schema / titleRemoved value: -"UpdateWorkflowInput" - removed
Output schema / properties / archived / titleRemoved value: -"Archived" - removed
Output schema / properties / company_id / titleRemoved value: -"Company Id" - removed
Output schema / properties / created_at / titleRemoved value: -"Created At" - removed
Output schema / properties / created_by_profile_id / titleRemoved value: -"Created By Profile Id" - removed
Output schema / properties / enabled / titleRemoved value: -"Enabled" - removed
Output schema / properties / enabled_version_id / titleRemoved value: -"Enabled Version Id" - removed
Output schema / properties / id / titleRemoved value: -"Id" - removed
Output schema / properties / name / titleRemoved value: -"Name" - removed
Output schema / properties / run_time_slot_kinds / titleRemoved value: -"Run Time Slot Kinds" - removed
Output schema / properties / updated_at / titleRemoved value: -"Updated At" - removed
Output schema / properties / updated_by_profile_id / titleRemoved value: -"Updated By Profile Id" - removed
Output schema / titleRemoved value: -"WorkflowResourceRead"
- Changed
update_production_workflow_control12 fields changed- removed
Input schema / $defs / WorkflowControlUpdate / properties / reason / titleRemoved value: -"Reason" - removed
Input schema / $defs / WorkflowControlUpdate / properties / stopped / titleRemoved value: -"Stopped" - removed
Input schema / $defs / WorkflowControlUpdate / titleRemoved value: -"WorkflowControlUpdate" - removed
Input schema / titleRemoved value: -"UpdateWorkflowControlInput" - removed
Output schema / properties / changed_at / titleRemoved value: -"Changed At" - removed
Output schema / properties / changed_by_profile_id / titleRemoved value: -"Changed By Profile Id" - removed
Output schema / properties / company_id / titleRemoved value: -"Company Id" - removed
Output schema / properties / contract_version / titleRemoved value: -"Contract Version" - removed
Output schema / properties / reason / titleRemoved value: -"Reason" - removed
Output schema / properties / resource_type / titleRemoved value: -"Resource Type" - removed
Output schema / properties / stopped / titleRemoved value: -"Stopped" - removed
Output schema / titleRemoved value: -"WorkflowControlRead"
- Changed
update_production_workflow_version8 fields changed- removed
Input schema / $defsRemoved 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" - } -} - removed
Input schema / properties / update / $refRemoved value: -"#/$defs/WorkflowVersionUpdate" - added
Input schema / properties / update / additionalPropertiesAdded value: +false - added
Input schema / properties / update / propertiesAdded 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" + } +} - added
Input schema / properties / update / typeAdded value: +"object" - removed
Input schema / properties / version_id / titleRemoved value: -"Version Id" - removed
Input schema / properties / workflow_id / titleRemoved value: -"Workflow Id" - removed
Input schema / titleRemoved value: -"UpdateWorkflowVersionInput"
77 tool updates
- First observed
archive_production_workflow - First observed
author_art_direction - First observed
build_avatar_prompt - First observed
confirm_brief - First observed
create_art_direction - First observed
create_credit_checkout_session - First observed
create_location - First observed
create_outfit_from_garment_ids - First observed
create_production_workflow - First observed
create_production_workflow_version - First observed
create_tag - First observed
delete_template - First observed
download_generation_results - First observed
duplicate_art_direction - First observed
estimate_cost - First observed
finish_local_garment_upload - First observed
generate_avatar - First observed
get_art_direction - First observed
get_art_direction_authoring_job - First observed
get_brief - First observed
get_garment - First observed
get_generation_results - First observed
get_generation_status - First observed
get_items_by_tag - First observed
get_location - First observed
get_production_workflow - First observed
get_production_workflow_control - First observed
get_production_workflow_run - First observed
get_production_workflow_version - First observed
get_template - First observed
get_user_credits - First observed
list_art_directions - First observed
list_avatars - First observed
list_garments - First observed
list_locations - First observed
list_models - First observed
list_outfits - First observed
list_production_workflow_runs - First observed
list_production_workflow_versions - First observed
list_production_workflows - First observed
list_tags - First observed
list_templates - First observed
mcp_add_context - First observed
mcp_clear_context - First observed
mcp_create_credit_checkout_session - First observed
mcp_export_montage - First observed
mcp_generate_clip - First observed
mcp_get_context - First observed
mcp_list_files - First observed
mcp_replace_context - First observed
mcp_save_retouch - First observed
prepare_local_garment_upload - First observed
propose_brief - First observed
propose_montage - First observed
propose_outfits - First observed
publish_production_workflow_version - First observed
queue_generation_result_qa - First observed
read_generation_result_qa - First observed
request_user_context - First observed
save_generated_avatar - First observed
save_reference_file_from_chat_file - First observed
save_template - First observed
search_uwear_library - First observed
start_production_workflow_run - First observed
start_production_workflow_run_batch - First observed
update_art_direction - First observed
update_brief - First observed
update_garment - First observed
update_montage_proposal - First observed
update_preferences - First observed
update_production_workflow - First observed
update_production_workflow_control - First observed
update_production_workflow_version - First observed
upload_avatar_from_chat_file - First observed
upload_garment_from_chat_file - First observed
upload_garment_from_public_url - First observed
view_image
Related MCP Connectors
AI fashion design — product photos, videos, tech packs, colorways & fabric sims.
Virtual try-on and on-model AI fashion photography: catalog search, try-on grids, HD delivery.
AI product photography for fashion sellers: Shopify photo audits, seasonal guides, AI try-on.
AI jewelry photography: retouching, virtual try-on, and product video generation.
Related MCP Servers
- AlicenseAqualityCmaintenanceAI image and video generation, editing, and region repair via Gemini, OpenAI, and Grok1170 npm5MIT
- AlicenseAqualityBmaintenanceByteDance Seedream AI image generation and editing (style transfer, background change, virtual try-on) with multiple models, multi-resolution up to 4K, and streaming delivery.7382 PyPI3MIT
- FlicenseNot gradedqualityDmaintenanceMCP server implementing visual vocabulary and structural parameters for brassiere/lingerie design. Maps professional design taxonomy to image-generation-ready specifications with zero LLM cost for composition.-
- AlicenseNot gradedqualityCmaintenanceGenerate 3D models from text or image. Browse 10K+ free 3D models. AI creative platform with API1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.