Skip to main content
Glama

Create a zip

create_zip

One download address for a zip of the optimized copies of several finished images, by their ids, by a page scan's id or by a site crawl's id. A scan's zip keeps each image in the folders of its address on the page and adds manifest.csv, mapping each address it fetched to its file. A crawl's zip has a folder for each page laid out the same way, with its own manifest.csv, once get_crawl says the crawl is done. Otherwise an image sent to compress_images with a folder goes in that folder, and the rest at the top of the zip. Images that have not finished are left out and listed, and responsive sizes are never in it: get_image's responsive.download_url zips an image's sizes. The address works without a token and expires after an hour. For a single image, get_image's optimized.download_url downloads it directly.

Input Schema

NameRequiredDescriptionDefault
idsNoUp to 150 image ids, as compress_images, get_image and list_images return them. Send one of ids, scan_id and crawl_id.
scan_idNoThe id scan_page returned, to zip every finished image that scan found. Send one of ids, scan_id and crawl_id.
crawl_idNoThe id crawl_site returned, to zip every page of a finished site crawl. Send one of ids, scan_id and crawl_id.

Output Schema

NameRequiredDescriptionDefault
imagesNoHow many images the zip holds.
left_outNoThe ids of the images left out because they had not finished.
expires_atNo
download_urlNoWorks without a token until expires_at.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / crawl_id
      Added value: +{
      +  "description": "The id crawl_site returned, to zip every page of a finished site crawl. Send one of ids, scan_id and crawl_id.",
      +  "type": "string"
      +}
    • changedInput schema / properties / ids / description
      Previous value: -"Up to 150 image ids, as compress_images, get_image and list_images return them. Send this or scan_id, not both."New value: +"Up to 150 image ids, as compress_images, get_image and list_images return them. Send one of ids, scan_id and crawl_id."
    • changedInput schema / properties / scan_id / description
      Previous value: -"The id scan_page returned, to zip every finished image that scan found. Send this or ids, not both."New value: +"The id scan_page returned, to zip every finished image that scan found. Send one of ids, scan_id and crawl_id."
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "download_url": {
      +      "description": "Works without a token until expires_at.",
      +      "type": "string"
      +    },
      +    "expires_at": {
      +      "type": "string"
      +    },
      +    "images": {
      +      "description": "How many images the zip holds.",
      +      "type": "integer"
      +    },
      +    "left_out": {
      +      "description": "The ids of the images left out because they had not finished.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
  3. Changed2 schema fields changed
    • changedInput schema / properties / ids / description
      Previous value: -"The images, by id, up to 150. Send this or scan_id."New value: +"Up to 150 image ids, as compress_images, get_image and list_images return them. Send this or scan_id, not both."
    • changedInput schema / properties / scan_id / description
      Previous value: -"A page scan's id, to zip every finished image it found. Send this or ids."New value: +"The id scan_page returned, to zip every finished image that scan found. Send this or ids, not both."
  4. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false): the returned address needs no token and expires after an hour, unfinished images are left out and listed, responsive sizes are never included, and scan/crawl zips have a defined folder layout plus manifest.csv. Those are exactly the operational facts an agent cannot get from structured fields.

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

Conciseness5/5

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

Front-loaded with the core purpose, then alternatives and constraints in a compact block with no filler sentence. Dense but every clause carries either a routing decision or a behavioral fact.

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

Completeness5/5

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

Output schema exists, so return values need not be explained, and the description still covers the expiry, tokenless access, and omission behavior that matter for correct use. Nothing an agent needs in order to call this with the right selector is missing.

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 coverage is 100%, so the baseline is 3, but the description explains the consequence of each selector – what a scan_id zip looks like versus a crawl_id zip, and how folder assignments from compress_images affect layout. It does not add anything about ids itself beyond the schema's 150-id cap note, which is already documented.

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 and resource – a single download address for a zip of optimized image copies – and immediately scopes the three ways to select content (image ids, a scan id, a crawl id). It is clearly distinct from sibling get_image, whose direct download it explicitly contrasts with.

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?

Gives explicit routing rules: use get_image's optimized.download_url for a single image, responsive.download_url for an image's sizes, and only zip a crawl once get_crawl says it is done. It also states that unfinished images are omitted rather than failing the call, which tells the agent what to expect before invoking.

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