Skip to main content
Glama

Save Reference Images

save_reference_file_from_chat_file

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 Clothing or Models.

Input Schema

NameRequiredDescriptionDefault
filesNoReference file 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.
file_nameNoSingle recovered display name
image_urlNoSingle resolved download URL used by automatic opaque-file recovery.
mime_typeNoSingle recovered MIME/content type, e.g. image/png
image_file_1NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
image_file_2NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
image_file_3NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
image_file_4NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
image_file_5NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
image_file_6NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
image_file_7NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
image_file_8NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
image_file_9NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.
image_file_10NoHost-provided uploaded file reference for the matching item index when it has no image_url. Use the file object supplied by the host, not a bare file_... ID.

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. 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
  3. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations cover the safety profile (not read-only, not destructive, open-world, non-idempotent), so the description adds the operational constraints instead: ordering between files[] and image_file_N, and the format bans on base64 and local paths. It stays silent on board_id requiring an open Shoot Board and on conflict/error behavior.

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?

Three tight sentences, front-loaded with the core action before the mechanics and the routing rule. No filler, though the schema description noticeably duplicates the ordering instruction.

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 15-parameter nested tool with no output schema, the description covers the essentials an agent needs: purpose, the batch/ordering contract, accepted input formats, and routing exclusions. The rich schema carries the field detail, though the board_id precondition and result behavior are left implicit.

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

Parameters3/5

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

Schema coverage is 100%, so all 15 parameters are already documented at the field level, including the files[]-to-image_file_N ordering note. The description largely restates this and adds only the 'no base64, no local paths' constraint, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb (save), resource (reference images), and source (chat attachments) plus destination (Files library). Crucially it distinguishes itself from siblings by scoping out Clothing and Models, which routes the agent away from upload_garment_from_public_url and upload_avatar_from_chat_file.

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

Usage Guidelines4/5

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

Gives clear usage context ('mood boards, backgrounds, and other reference images') and an explicit when-not ('not Clothing or Models'). It does not name the alternative tools by name, but the exclusion criteria are strong enough to steer selection.

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