Skip to main content
Glama

Upload Models from Chat

upload_avatar_from_chat_file

Batch upload reusable 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 only when the user explicitly wants a specific or consistent person.

Input Schema

NameRequiredDescriptionDefault
nameNoSingle recovered avatar/model name
buildNoOptional concrete physical build. Never inferred.
avatarsNoAvatar/model metadata in the same order as image_file_1, image_file_2, etc. No base64.
board_idNoThe open Shoot Board's board_id, from Open Shoot Board or your context.
age_rangeNoOptional concrete age or age range. Never inferred.
file_nameNoSingle recovered original file name
height_cmNoOptional height in centimeters. Never inferred.
image_urlNoSingle resolved download URL used by automatic opaque-file recovery.
mime_typeNoSingle recovered MIME/content type, e.g. image/png
descriptionNoSingle recovered avatar metadata
image_file_1NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
image_file_2NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
image_file_3NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
image_file_4NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
image_file_5NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
image_file_6NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
image_file_7NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
image_file_8NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
image_file_9NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
image_file_10NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed53 schema fields changed
    • removedInput schema / $defs / OpenAIFile
      Removed 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 / board_id
      Added value: +{
      +  "description": "The open Shoot Board's board_id, from Open Shoot Board or your context.",
      +  "type": "string"
      +}
    • removedInput schema / properties / image_file_1 / $ref
      Removed value: -"#/$defs/OpenAIFile"
    • addedInput schema / properties / image_file_1 / additionalProperties
      Added value: +false
    • addedInput schema / properties / image_file_1 / properties
      Added value: +{
      +  "download_url": {
      +    "type": "string"
      +  },
      +  "file_id": {
      +    "type": "string"
      +  },
      +  "file_name": {
      +    "type": "string"
      +  },
      +  "mime_type": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / image_file_1 / required
      Added value: +[
      +  "download_url",
      +  "file_id"
      +]
    • addedInput schema / properties / image_file_1 / type
      Added value: +"object"
    • removedInput schema / properties / image_file_10 / $ref
      Removed value: -"#/$defs/OpenAIFile"
    • addedInput schema / properties / image_file_10 / additionalProperties
      Added value: +false
    • addedInput schema / properties / image_file_10 / properties
      Added value: +{
      +  "download_url": {
      +    "type": "string"
      +  },
      +  "file_id": {
      +    "type": "string"
      +  },
      +  "file_name": {
      +    "type": "string"
      +  },
      +  "mime_type": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / image_file_10 / required
      Added value: +[
      +  "download_url",
      +  "file_id"
      +]
    • addedInput schema / properties / image_file_10 / type
      Added value: +"object"
    • removedInput schema / properties / image_file_2 / $ref
      Removed value: -"#/$defs/OpenAIFile"
    • addedInput schema / properties / image_file_2 / additionalProperties
      Added value: +false
    • addedInput schema / properties / image_file_2 / properties
      Added value: +{
      +  "download_url": {
      +    "type": "string"
      +  },
      +  "file_id": {
      +    "type": "string"
      +  },
      +  "file_name": {
      +    "type": "string"
      +  },
      +  "mime_type": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / image_file_2 / required
      Added value: +[
      +  "download_url",
      +  "file_id"
      +]
    • addedInput schema / properties / image_file_2 / type
      Added value: +"object"
    • removedInput schema / properties / image_file_3 / $ref
      Removed value: -"#/$defs/OpenAIFile"
    • addedInput schema / properties / image_file_3 / additionalProperties
      Added value: +false
    • addedInput schema / properties / image_file_3 / properties
      Added value: +{
      +  "download_url": {
      +    "type": "string"
      +  },
      +  "file_id": {
      +    "type": "string"
      +  },
      +  "file_name": {
      +    "type": "string"
      +  },
      +  "mime_type": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / image_file_3 / required
      Added value: +[
      +  "download_url",
      +  "file_id"
      +]
    • addedInput schema / properties / image_file_3 / type
      Added value: +"object"
    • removedInput schema / properties / image_file_4 / $ref
      Removed value: -"#/$defs/OpenAIFile"
    • addedInput schema / properties / image_file_4 / additionalProperties
      Added value: +false
    • addedInput schema / properties / image_file_4 / properties
      Added value: +{
      +  "download_url": {
      +    "type": "string"
      +  },
      +  "file_id": {
      +    "type": "string"
      +  },
      +  "file_name": {
      +    "type": "string"
      +  },
      +  "mime_type": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / image_file_4 / required
      Added value: +[
      +  "download_url",
      +  "file_id"
      +]
    • addedInput schema / properties / image_file_4 / type
      Added value: +"object"
    • removedInput schema / properties / image_file_5 / $ref
      Removed value: -"#/$defs/OpenAIFile"
    • addedInput schema / properties / image_file_5 / additionalProperties
      Added value: +false
    • addedInput schema / properties / image_file_5 / properties
      Added value: +{
      +  "download_url": {
      +    "type": "string"
      +  },
      +  "file_id": {
      +    "type": "string"
      +  },
      +  "file_name": {
      +    "type": "string"
      +  },
      +  "mime_type": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / image_file_5 / required
      Added value: +[
      +  "download_url",
      +  "file_id"
      +]
    • addedInput schema / properties / image_file_5 / type
      Added value: +"object"
    • removedInput schema / properties / image_file_6 / $ref
      Removed value: -"#/$defs/OpenAIFile"
    • addedInput schema / properties / image_file_6 / additionalProperties
      Added value: +false
    • addedInput schema / properties / image_file_6 / properties
      Added value: +{
      +  "download_url": {
      +    "type": "string"
      +  },
      +  "file_id": {
      +    "type": "string"
      +  },
      +  "file_name": {
      +    "type": "string"
      +  },
      +  "mime_type": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / image_file_6 / required
      Added value: +[
      +  "download_url",
      +  "file_id"
      +]
    • addedInput schema / properties / image_file_6 / type
      Added value: +"object"
    • removedInput schema / properties / image_file_7 / $ref
      Removed value: -"#/$defs/OpenAIFile"
    • addedInput schema / properties / image_file_7 / additionalProperties
      Added value: +false
    • addedInput schema / properties / image_file_7 / properties
      Added value: +{
      +  "download_url": {
      +    "type": "string"
      +  },
      +  "file_id": {
      +    "type": "string"
      +  },
      +  "file_name": {
      +    "type": "string"
      +  },
      +  "mime_type": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / image_file_7 / required
      Added value: +[
      +  "download_url",
      +  "file_id"
      +]
    • addedInput schema / properties / image_file_7 / type
      Added value: +"object"
    • removedInput schema / properties / image_file_8 / $ref
      Removed value: -"#/$defs/OpenAIFile"
    • addedInput schema / properties / image_file_8 / additionalProperties
      Added value: +false
    • addedInput schema / properties / image_file_8 / properties
      Added value: +{
      +  "download_url": {
      +    "type": "string"
      +  },
      +  "file_id": {
      +    "type": "string"
      +  },
      +  "file_name": {
      +    "type": "string"
      +  },
      +  "mime_type": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / image_file_8 / required
      Added value: +[
      +  "download_url",
      +  "file_id"
      +]
    • addedInput schema / properties / image_file_8 / type
      Added value: +"object"
    • removedInput schema / properties / image_file_9 / $ref
      Removed value: -"#/$defs/OpenAIFile"
    • addedInput schema / properties / image_file_9 / additionalProperties
      Added value: +false
    • addedInput schema / properties / image_file_9 / properties
      Added value: +{
      +  "download_url": {
      +    "type": "string"
      +  },
      +  "file_id": {
      +    "type": "string"
      +  },
      +  "file_name": {
      +    "type": "string"
      +  },
      +  "mime_type": {
      +    "type": "string"
      +  }
      +}
    • addedInput schema / properties / image_file_9 / required
      Added value: +[
      +  "download_url",
      +  "file_id"
      +]
    • addedInput schema / properties / image_file_9 / type
      Added value: +"object"
    • addedInput schema / required
      Added value: +[]
  2. Changed8 schema fields changed
    • addedInput schema / $defs / AvatarChatFileUploadItem / additionalProperties
      Added value: +false
    • addedInput schema / $defs / AvatarChatFileUploadItem / properties / age_range
      Added value: +{
      +  "default": null,
      +  "description": "Optional concrete age or age range. Never inferred.",
      +  "maxLength": 20,
      +  "type": "string"
      +}
    • addedInput schema / $defs / AvatarChatFileUploadItem / properties / build
      Added value: +{
      +  "default": null,
      +  "description": "Optional concrete physical build. Never inferred.",
      +  "maxLength": 100,
      +  "type": "string"
      +}
    • addedInput schema / $defs / AvatarChatFileUploadItem / properties / height_cm
      Added value: +{
      +  "default": null,
      +  "description": "Optional height in centimeters. Never inferred.",
      +  "maximum": 220,
      +  "minimum": 40,
      +  "type": "integer"
      +}
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / age_range
      Added value: +{
      +  "default": null,
      +  "description": "Optional concrete age or age range. Never inferred.",
      +  "maxLength": 20,
      +  "type": "string"
      +}
    • addedInput schema / properties / build
      Added value: +{
      +  "default": null,
      +  "description": "Optional concrete physical build. Never inferred.",
      +  "maxLength": 100,
      +  "type": "string"
      +}
    • addedInput schema / properties / height_cm
      Added value: +{
      +  "default": null,
      +  "description": "Optional height in centimeters. Never inferred.",
      +  "maximum": 220,
      +  "minimum": 40,
      +  "type": "integer"
      +}
  3. Changed32 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_2 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_2 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_2 / default
      Removed value: -null
    • addedInput schema / properties / image_file_3 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_3 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_3 / default
      Removed value: -null
    • addedInput schema / properties / image_file_4 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_4 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_4 / default
      Removed value: -null
    • addedInput schema / properties / image_file_5 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_5 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_5 / default
      Removed value: -null
    • addedInput schema / properties / image_file_6 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_6 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_6 / default
      Removed value: -null
    • addedInput schema / properties / image_file_7 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_7 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_7 / default
      Removed value: -null
    • addedInput schema / properties / image_file_8 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_8 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_8 / default
      Removed value: -null
    • addedInput schema / properties / image_file_9 / $ref
      Added value: +"#/$defs/OpenAIFile"
    • removedInput schema / properties / image_file_9 / anyOf
      Removed value: -[
      -  {
      -    "$ref": "#/$defs/MCPFileReference"
      -  },
      -  {
      -    "type": "string"
      -  }
      -]
    • removedInput schema / properties / image_file_9 / default
      Removed value: -null
  4. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare this as a non-readonly, non-destructive, non-idempotent, open-world write. The description adds genuine behavioral context beyond that: traits are never inferred, no base64 or local paths are accepted, and each uploaded photo maps to a repeatable identity anchor.

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?

Purpose is front-loaded in the first sentence, followed by mechanics and then guardrails ('Traits are never guessed', 'No base64'). It is slightly dense with multiple operating instructions, but nearly every sentence carries actionable content.

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

Completeness4/5

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

For a 20-parameter write tool with nested objects and no output schema, the description covers the essential call mechanics (ordering, prohibited inputs, trait policy, usage trigger). It does not describe what the tool returns, which an agent might reasonably want for follow-up steps.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description adds real semantics: it explains the positional contract between avatars[] metadata and the top-level image_file_1..N fields ('in the same order') and which trait fields the agent may supply versus infer. The single-vs-batch duality is still somewhat under-explained.

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

Purpose4/5

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

States a specific verb and resource: 'Batch upload reusable Models from person photos the user attached in chat', and clarifies the artifact produced (an upper_body_front identity anchor). It is clearly distinguishable from a generic image upload, though it never names the close siblings (save_reference_file_from_chat_file, mcp_upload_intake_photo) that an agent might confuse it with.

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

Usage Guidelines4/5

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

Gives an explicit positive condition ('Use only when the user explicitly wants a specific or consistent person') and a negative one ('Do not use ordinary text-to-image results as an upload fallback'). These are strong selection cues, but no named alternative tools are offered for the excluded cases.

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