Skip to main content
Glama

Attach images to a product

attach_product_images
Destructive

Attach previously uploaded image URLs to a Fourthwall product by providing product ID plus each image's URL, width, and height.

Instructions

Rate limit: 100 requests / 10 seconds per shop. See Rate limiting.

Attaches images to a product. Images should be uploaded first via the media upload endpoint.

Input Schema

NameRequiredDescriptionDefault
imagesNo
accountNoExact private shop profile label; not a provider identity or authorization proof.
confirmNoSet true only when the user asked for exactly this action.
payloadNoComplete current native JSON body; cannot mix with native body flags or payload_file.
product_idYesNative productId
payload_fileNoAbsolute regular non-symlink native JSON body file, at most1MiB. Cannot mix with payload or body flags.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 schema fields changedv3.0.0
    • addedInput schema / $defs
      Added value: +{
      +  "images": {
      +    "description": "List of images to attach",
      +    "items": {
      +      "properties": {
      +        "height": {
      +          "description": "Image height in pixels",
      +          "format": "int32",
      +          "type": "integer"
      +        },
      +        "url": {
      +          "description": "Image URL",
      +          "type": "string"
      +        },
      +        "width": {
      +          "description": "Image width in pixels",
      +          "format": "int32",
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "height",
      +        "url",
      +        "width"
      +      ],
      +      "title": "Image Input",
      +      "type": "object"
      +    },
      +    "type": "array"
      +  }
      +}
    • changedInput schema / properties / confirm / description
      Previous value: -"Explicit approval for this exact provider effect or local private-file operation."New value: +"Set true only when the user asked for exactly this action."
    • addedInput schema / properties / images / $ref
      Added value: +"#/$defs/images"
    • removedInput schema / properties / images / description
      Removed value: -"List of images to attach"
    • removedInput schema / properties / images / items
      Removed value: -{
      -  "properties": {
      -    "height": {
      -      "description": "Image height in pixels",
      -      "format": "int32",
      -      "type": "integer"
      -    },
      -    "url": {
      -      "description": "Image URL",
      -      "type": "string"
      -    },
      -    "width": {
      -      "description": "Image width in pixels",
      -      "format": "int32",
      -      "type": "integer"
      -    }
      -  },
      -  "required": [
      -    "height",
      -    "url",
      -    "width"
      -  ],
      -  "title": "Image Input",
      -  "type": "object"
      -}
    • removedInput schema / properties / images / type
      Removed value: -"array"
    • addedInput schema / properties / payload / properties / images / $ref
      Added value: +"#/$defs/images"
    • removedInput schema / properties / payload / properties / images / description
      Removed value: -"List of images to attach"
    • removedInput schema / properties / payload / properties / images / items
      Removed value: -{
      -  "properties": {
      -    "height": {
      -      "description": "Image height in pixels",
      -      "format": "int32",
      -      "type": "integer"
      -    },
      -    "url": {
      -      "description": "Image URL",
      -      "type": "string"
      -    },
      -    "width": {
      -      "description": "Image width in pixels",
      -      "format": "int32",
      -      "type": "integer"
      -    }
      -  },
      -  "required": [
      -    "height",
      -    "url",
      -    "width"
      -  ],
      -  "title": "Image Input",
      -  "type": "object"
      -}
    • removedInput schema / properties / payload / properties / images / type
      Removed value: -"array"
  2. First observedv2.0.0

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=false and openWorldHint=true, so the safety profile is covered. The description adds context the annotations do not carry: an explicit rate limit (100 requests / 10 seconds per shop) and the media-upload prerequisite. It still does not say whether attaching replaces or appends to existing images.

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?

Very short and free of filler; two sentences plus the rate-limit note. The rate limit is front-loaded ahead of the purpose statement, which is slightly off-optimal ordering but still compact and readable.

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

Completeness3/5

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

For a 6-parameter, nested-object, destructive write with no output schema, the description leaves notable gaps: it does not explain the confirm guard, the payload vs payload_file vs native-flag exclusivity, or the effect on existing product images. It covers enough to call the tool but not enough to call it safely without reading the schema.

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

Parameters3/5

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

Schema description coverage is 83%, so the schema already documents product_id, account, confirm, payload and payload_file. The description only indirectly touches the images parameter via the upload prerequisite and adds no format or semantics for the remaining parameters, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource ('Attaches images to a product'), which is clearly distinct from siblings like remove_product_images, save_media_image and upload_file. It does not explicitly name a sibling or scope the operation, so it stops short of a 5.

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 a concrete prerequisite workflow: images must first be uploaded via the media upload endpoint. That is actionable ordering guidance, though it names no explicit alternative tool or when-not condition.

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

Deploy Server

Other Tools