Skip to main content
Glama

Upload Garments from Chat

upload_garment_from_chat_file

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

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
garmentsYesGarment metadata. Put files in top-level image_file_1..image_file_20 and reference those exact field names inside each garment. No base64.
image_file_1NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
image_file_2NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
image_file_3NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
image_file_4NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
image_file_5NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
image_file_6NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
image_file_7NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
image_file_8NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
image_file_9NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
image_file_10NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
image_file_11NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
image_file_12NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
image_file_13NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
image_file_14NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
image_file_15NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
image_file_16NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
image_file_17NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
image_file_18NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
image_file_19NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.
image_file_20NoTop-level ChatGPT file attachment. In garments[], reference this exact field name from assets[].image_file, e.g. image_file='image_file_1'. Do not rely on item order.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed62 schema fields changed
    • removedInput schema / $defs / MCPFileReference
      Removed value: -{
      -  "additionalProperties": true,
      -  "description": "Host-provided MCP file reference for user-uploaded images.",
      -  "properties": {
      -    "content_type": {
      -      "default": null,
      -      "description": "File content type, e.g. image/png",
      -      "type": "string"
      -    },
      -    "download_url": {
      -      "default": null,
      -      "description": "Temporary host-authorized download URL for this file",
      -      "type": "string"
      -    },
      -    "file_id": {
      -      "default": null,
      -      "description": "Host file ID",
      -      "type": "string"
      -    },
      -    "file_name": {
      -      "default": null,
      -      "description": "Original uploaded file name",
      -      "type": "string"
      -    },
      -    "mime_type": {
      -      "default": null,
      -      "description": "File MIME type, e.g. image/png",
      -      "type": "string"
      -    },
      -    "name": {
      -      "default": null,
      -      "description": "Original uploaded file name when the host uses name",
      -      "type": "string"
      -    },
      -    "uri": {
      -      "default": null,
      -      "description": "Host file URI when available",
      -      "type": "string"
      -    },
      -    "url": {
      -      "default": null,
      -      "description": "Temporary/public file URL when the host exposes one",
      -      "type": "string"
      -    }
      -  },
      -  "type": "object"
      -}
    • addedInput schema / $defs / OpenAIFile
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "download_url": {
      +      "type": "string"
      +    },
      +    "file_id": {
      +      "type": "string"
      +    },
      +    "file_name": {
      +      "type": "string"
      +    },
      +    "mime_type": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "download_url",
      +    "file_id"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / image_file_1 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_1 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_1 / default
      Removed value: -null
    • addedInput schema / properties / image_file_10 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_10 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_10 / default
      Removed value: -null
    • addedInput schema / properties / image_file_11 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_11 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_11 / default
      Removed value: -null
    • addedInput schema / properties / image_file_12 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_12 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_12 / default
      Removed value: -null
    • addedInput schema / properties / image_file_13 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_13 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_13 / default
      Removed value: -null
    • addedInput schema / properties / image_file_14 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_14 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_14 / default
      Removed value: -null
    • addedInput schema / properties / image_file_15 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_15 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_15 / default
      Removed value: -null
    • addedInput schema / properties / image_file_16 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_16 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_16 / default
      Removed value: -null
    • addedInput schema / properties / image_file_17 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_17 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_17 / default
      Removed value: -null
    • addedInput schema / properties / image_file_18 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_18 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_18 / default
      Removed value: -null
    • addedInput schema / properties / image_file_19 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_19 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_19 / default
      Removed value: -null
    • addedInput schema / properties / image_file_2 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_2 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_2 / default
      Removed value: -null
    • addedInput schema / properties / image_file_20 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_20 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_20 / default
      Removed value: -null
    • addedInput schema / properties / image_file_3 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_3 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_3 / default
      Removed value: -null
    • addedInput schema / properties / image_file_4 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_4 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_4 / default
      Removed value: -null
    • addedInput schema / properties / image_file_5 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_5 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_5 / default
      Removed value: -null
    • addedInput schema / properties / image_file_6 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_6 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_6 / default
      Removed value: -null
    • addedInput schema / properties / image_file_7 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_7 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_7 / default
      Removed value: -null
    • addedInput schema / properties / image_file_8 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_8 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_8 / default
      Removed value: -null
    • addedInput schema / properties / image_file_9 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_9 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_9 / default
      Removed value: -null
  2. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false, openWorldHint=true, and destructiveHint=false, so the description carries the burden of explaining side effects. It adds meaningful behavioral context: the default background removal, the processing_mode override, the rule that every asset must reference its exact top-level field name, and the constraint 'No base64 and no local paths.' It does not explicitly describe the response shape or error behavior, but it covers the most important quirks that would trip up an agent. The description does not contradict any annotation.

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

Conciseness4/5

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

The description is a single dense paragraph, but every sentence carries necessary information. It front-loads the core purpose and then methodically covers file-passing, asset classification rules, and alternatives. It could be improved with bullet points for the constraints, but for the complexity involved, it remains efficient and avoids redundancy. No filler words or tautological statements.

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

Completeness4/5

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

Given the tool's complexity (21 parameters, nested asset structures, multiple rules), the description covers the essential operational details: file referencing, asset pairing, required full-front constraint, processing modes, and exclusions for other sources. It does not mention the maxItems=10 limit, but that is in the schema. There is no output schema, so the description could benefit from stating what a successful upload returns, but that is a minor gap. Overall, an agent has sufficient information to call it correctly.

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

Parameters4/5

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

Schema description coverage is 100% and the schema itself is highly descriptive, especially for the image_file_N fields which repeat the pairing rule. The description adds value beyond the schema by stating that actual file objects must be passed, clarifying the default for processing_mode, and adding the no-base64/no-local-path constraint. It also explains the pairing principle ('Do not rely on array position') which is not fully captured in the schema's field descriptions. This is above baseline for a schema that already covers the basics.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Batch upload garments from ChatGPT attachments.' It clearly distinguishes from siblings by naming the alternatives for URLs and local files. It also notes the default processing mode, which is a specific operational detail. This leaves no ambiguity about what the tool does.

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

Usage Guidelines5/5

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

The description explicitly states when not to use this tool: 'No image_url here; use upload_garment_from_public_url for URLs' and 'For local filesystem files, use prepare_local_garment_upload instead.' It also provides clear usage guidance on how to pass files and reference them, including the critical rule 'Do not rely on array position to pair assets.' This is exemplary routing and usage direction.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources