Skip to main content
Glama

List images

list_images
Read-onlyIdempotent

The account's images, newest first: uploads, images found by page scans, and re-runs. Filter by status, by source (upload or scan) or by one scan's id, which is how a page scan's images are read once get_scan says they are done. An image with responsive sizes carries only their status here; get_image has their links. Pages of up to 50; ask for the next page while page is below last_page. For one image whose id you already have, call get_image instead.

Input Schema

NameRequiredDescriptionDefault
pageNoThe page to read, starting at 1 (the default).
scanNoOnly the images one page scan found, by the id scan_page returned.
sourceNo"upload" for images that were sent, "scan" for the ones page scans found.
statusNoOnly images with this status. queued and optimizing are still running; completed, already-optimized, failed and cancelled are finished.
per_pageNoImages a page, from 1 to 50. 15 by default.

Output Schema

NameRequiredDescriptionDefault
pageNo
totalNo
imagesNo
per_pageNo
last_pageNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / images / items / properties / responsive / description
      Previous value: -"The responsive sizes (Pro), or null when none were asked for. list_images carries only their status."New value: +"The responsive sizes (paid plans), or null when none were asked for. list_images carries only their status."
  2. Changed8 schema fields changed
    • addedOutput schema / properties / images / items / properties / content_credentials
      Added value: +{
      +  "description": "The Content Credentials (a signed C2PA record of where the image came from) the file sent carried, or null when it carried none, and until the image has finished.",
      +  "properties": {
      +    "generative_ai": {
      +      "description": "Whether they say generative AI made the image, as they state it; the signature is not checked.",
      +      "type": "boolean"
      +    },
      +    "status": {
      +      "description": "removed: the optimized copy no longer carries them. kept: the optimized copy is the file that was sent, unchanged.",
      +      "enum": [
      +        "removed",
      +        "kept"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "generative_ai"
      +  ],
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / images / items / properties / folder
      Added value: +{
      +  "description": "The folder it was sent with, which a zip puts it in. Null for an image on its own.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / images / items / properties / responsive
      Added value: +{
      +  "description": "The responsive sizes (Pro), or null when none were asked for. list_images carries only their status.",
      +  "properties": {
      +    "download_url": {
      +      "description": "A zip of every width, once ready. Works without a token for an hour. Not in list_images.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "files": {
      +      "description": "Each width, narrowest first, once ready. Not in list_images.",
      +      "items": {
      +        "properties": {
      +          "download_url": {
      +            "description": "Works without a token for an hour.",
      +            "type": "string"
      +          },
      +          "height": {
      +            "type": "integer"
      +          },
      +          "name": {
      +            "description": "The name it downloads under, which html uses.",
      +            "type": "string"
      +          },
      +          "size": {
      +            "description": "Bytes.",
      +            "type": "integer"
      +          },
      +          "width": {
      +            "type": "integer"
      +          }
      +        },
      +        "required": [
      +          "width",
      +          "height",
      +          "size",
      +          "name",
      +          "download_url"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "html": {
      +      "description": "An <img srcset> naming the files, once ready. Not in list_images.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "description": "pending: being made, a few seconds after the image is completed or already-optimized. ready: every width is made. failed: none was kept; compress it again with responsive_widths. skipped: an animation gets none.",
      +      "enum": [
      +        "pending",
      +        "ready",
      +        "failed",
      +        "skipped"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "status"
      +  ],
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / images / items / properties / settings / properties / responsive_widths
      Added value: +{
      +  "description": "The responsive widths asked for, or null.",
      +  "items": {
      +    "type": "integer"
      +  },
      +  "type": [
      +    "array",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / images / items / properties / settings / properties / size_limit
      Added value: +{
      +  "description": "The most the optimized copy may weigh, in KB of 1,000 bytes, or null.",
      +  "type": [
      +    "integer",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / images / items / properties / settings / required
      Previous value: -[
      -  "level",
      -  "format",
      -  "keep_metadata",
      -  "width",
      -  "height",
      -  "scale"
      -]New value: +[
      +  "level",
      +  "format",
      +  "keep_metadata",
      +  "width",
      +  "height",
      +  "scale",
      +  "size_limit",
      +  "responsive_widths"
      +]
    • addedOutput schema / properties / images / items / properties / size_limit_status
      Added value: +{
      +  "description": "Against settings.size_limit: under, resized (made smaller in pixels to fit) or over. Null without a limit, and until the image has finished.",
      +  "enum": [
      +    "under",
      +    "resized",
      +    "over",
      +    null
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / images / items / required
      Previous value: -[
      -  "id",
      -  "status",
      -  "name",
      -  "original",
      -  "optimized",
      -  "saved_bytes",
      -  "saved_percent",
      -  "settings",
      -  "alt_text",
      -  "scan_id",
      -  "source_url",
      -  "share_url",
      -  "created_at",
      -  "updated_at"
      -]New value: +[
      +  "id",
      +  "status",
      +  "name",
      +  "original",
      +  "optimized",
      +  "saved_bytes",
      +  "saved_percent",
      +  "settings",
      +  "size_limit_status",
      +  "content_credentials",
      +  "alt_text",
      +  "responsive",
      +  "scan_id",
      +  "source_url",
      +  "folder",
      +  "share_url",
      +  "created_at",
      +  "updated_at"
      +]
  3. Changed2 schema fields changed
    • changedInput schema / properties / per_page / description
      Previous value: -"Images a page, from 1 to 100. 15 by default."New value: +"Images a page, from 1 to 50. 15 by default."
    • changedInput schema / properties / per_page / maximum
      Previous value: -100New value: +50
  4. Changed2 schema fields changed
    • addedOutput schema / properties / images / items / properties / alt_text
      Added value: +{
      +  "description": "The AI alt text, or null when none was asked for.",
      +  "properties": {
      +    "language": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "status": {
      +      "description": "pending: being written, a few seconds after the image is completed or already-optimized; it waits for a retry while the image is failed or cancelled. written: ready. failed: ask again with write_alt_text. skipped: the day's AI alt texts were used up.",
      +      "enum": [
      +        "pending",
      +        "written",
      +        "failed",
      +        "skipped"
      +      ],
      +      "type": "string"
      +    },
      +    "suggested_name": {
      +      "description": "A descriptive file name without an extension, for rename_image.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "text": {
      +      "description": "One sentence for the image's alt attribute, once written.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "text",
      +    "language",
      +    "suggested_name"
      +  ],
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / images / items / required
      Previous value: -[
      -  "id",
      -  "status",
      -  "name",
      -  "original",
      -  "optimized",
      -  "saved_bytes",
      -  "saved_percent",
      -  "settings",
      -  "scan_id",
      -  "source_url",
      -  "share_url",
      -  "created_at",
      -  "updated_at"
      -]New value: +[
      +  "id",
      +  "status",
      +  "name",
      +  "original",
      +  "optimized",
      +  "saved_bytes",
      +  "saved_percent",
      +  "settings",
      +  "alt_text",
      +  "scan_id",
      +  "source_url",
      +  "share_url",
      +  "created_at",
      +  "updated_at"
      +]
  5. Changed2 schema fields changed
    • addedOutput schema / properties / images / items / properties / source_url
      Added value: +{
      +  "description": "The address it was fetched from: its address on the scanned page, or the url it was sent as. Null for a file.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / images / items / required
      Previous value: -[
      -  "id",
      -  "status",
      -  "name",
      -  "original",
      -  "optimized",
      -  "saved_bytes",
      -  "saved_percent",
      -  "settings",
      -  "scan_id",
      -  "share_url",
      -  "created_at",
      -  "updated_at"
      -]New value: +[
      +  "id",
      +  "status",
      +  "name",
      +  "original",
      +  "optimized",
      +  "saved_bytes",
      +  "saved_percent",
      +  "settings",
      +  "scan_id",
      +  "source_url",
      +  "share_url",
      +  "created_at",
      +  "updated_at"
      +]
  6. Changed2 schema fields changed
    • addedOutput schema / properties / images / items / properties / settings / properties / format
      Added value: +{
      +  "description": "The format asked for, or null when none was sent. auto stays auto after the image finishes.",
      +  "enum": [
      +    "auto",
      +    "webp",
      +    "avif",
      +    "png",
      +    "jpg",
      +    null
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / images / items / properties / settings / required
      Previous value: -[
      -  "level",
      -  "keep_metadata",
      -  "width",
      -  "height",
      -  "scale"
      -]New value: +[
      +  "level",
      +  "format",
      +  "keep_metadata",
      +  "width",
      +  "height",
      +  "scale"
      +]
  7. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "images": {
      +      "items": {
      +        "properties": {
      +          "created_at": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "hint": {
      +            "description": "What to do next, when the status alone does not say.",
      +            "type": "string"
      +          },
      +          "id": {
      +            "description": "The image's id.",
      +            "type": "string"
      +          },
      +          "name": {
      +            "description": "The name the optimized copy downloads under.",
      +            "type": "string"
      +          },
      +          "optimized": {
      +            "description": "Null until the image has finished.",
      +            "properties": {
      +              "download_url": {
      +                "description": "Works without a token for an hour.",
      +                "type": "string"
      +              },
      +              "format": {
      +                "type": "string"
      +              },
      +              "height": {
      +                "type": "integer"
      +              },
      +              "name": {
      +                "type": "string"
      +              },
      +              "size": {
      +                "description": "Bytes.",
      +                "type": "integer"
      +              },
      +              "width": {
      +                "type": "integer"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "format",
      +              "size",
      +              "width",
      +              "height",
      +              "download_url"
      +            ],
      +            "type": [
      +              "object",
      +              "null"
      +            ]
      +          },
      +          "original": {
      +            "properties": {
      +              "download_url": {
      +                "description": "Works without a token for an hour.",
      +                "type": "string"
      +              },
      +              "format": {
      +                "type": "string"
      +              },
      +              "height": {
      +                "type": "integer"
      +              },
      +              "name": {
      +                "type": "string"
      +              },
      +              "size": {
      +                "description": "Bytes.",
      +                "type": "integer"
      +              },
      +              "width": {
      +                "type": "integer"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "format",
      +              "size",
      +              "width",
      +              "height",
      +              "download_url"
      +            ],
      +            "type": "object"
      +          },
      +          "saved_bytes": {
      +            "description": "Negative when the optimized copy is larger.",
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "saved_percent": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "scan_id": {
      +            "description": "The page scan that found it, if one did.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "settings": {
      +            "properties": {
      +              "height": {
      +                "type": [
      +                  "integer",
      +                  "null"
      +                ]
      +              },
      +              "keep_metadata": {
      +                "type": "boolean"
      +              },
      +              "level": {
      +                "enum": [
      +                  "none",
      +                  "lossless",
      +                  "ultra",
      +                  "smart",
      +                  null
      +                ],
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "scale": {
      +                "type": [
      +                  "integer",
      +                  "null"
      +                ]
      +              },
      +              "width": {
      +                "type": [
      +                  "integer",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "level",
      +              "keep_metadata",
      +              "width",
      +              "height",
      +              "scale"
      +            ],
      +            "type": "object"
      +          },
      +          "share_url": {
      +            "description": "Its public page, once shared.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "enum": [
      +              "queued",
      +              "optimizing",
      +              "completed",
      +              "failed",
      +              "already-optimized",
      +              "cancelled"
      +            ],
      +            "type": "string"
      +          },
      +          "updated_at": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "status",
      +          "name",
      +          "original",
      +          "optimized",
      +          "saved_bytes",
      +          "saved_percent",
      +          "settings",
      +          "scan_id",
      +          "share_url",
      +          "created_at",
      +          "updated_at"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "last_page": {
      +      "type": "integer"
      +    },
      +    "page": {
      +      "type": "integer"
      +    },
      +    "per_page": {
      +      "type": "integer"
      +    },
      +    "total": {
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
  8. Changed4 schema fields changed
    • changedInput schema / properties / page / description
      Previous value: -"The page to read, from 1."New value: +"The page to read, starting at 1 (the default)."
    • changedInput schema / properties / per_page / description
      Previous value: -"Images a page. 15 by default."New value: +"Images a page, from 1 to 100. 15 by default."
    • changedInput schema / properties / scan / description
      Previous value: -"Only the images of this page scan, by its id."New value: +"Only the images one page scan found, by the id scan_page returned."
    • changedInput schema / properties / status / description
      Previous value: -"Only images with this status."New value: +"Only images with this status. queued and optimizing are still running; completed, already-optimized, failed and cancelled are finished."
  9. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already establish that this is a safe read-only, idempotent operation. The description adds useful behavioral detail beyond that: results are newest first, pagination is capped at 50 per page, responsive-size images expose only status here, and get_image provides their links.

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?

The description is dense but efficient, with the core listing scope front-loaded and filtering, pagination, and the get_image alternative following in logical order. Every sentence contributes useful selection or invocation guidance.

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?

With an output schema present, the description need not explain return values. It still covers ordering, filters, scan workflow, pagination limits, and the key responsive-size caveat, making it complete for an agent to call this tool 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 coverage is 100%, so the schema already documents all five parameters. The description still adds semantic context for the scan parameter by tying it to get_scan completion and for pagination by explaining how to advance pages, going slightly beyond the structured fields.

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 states a specific verb and resource: listing the account's images, newest first, including uploads, scan-found images, and re-runs. It clearly distinguishes this listing operation from get_image, which should be used for a single image.

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?

It gives explicit filtering guidance by status, source, and scan id, explains the scan workflow after get_scan reports completion, and names get_image as the alternative when an image id is already known. Pagination guidance is also explicit: request the next page while page is below last_page.

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