Skip to main content
Glama

Get a page scan

get_scan
Read-onlyIdempotent

One page scan with every image it found, newest first, the ones it skipped with the reason for each, the totals saved, and, once it has finished, its page report in audit: how many images are oversized, lack width and height or alt text, or are lazy loaded in the wrong place, and the largest contentful paint. Pass audit_images true, once, after the scan is done, for every image address on the page with what is worth fixing about each; leave it out while polling. Poll this, a few seconds apart, while a scan runs: it is done once its status is no longer queued or scanning and images_in_progress is 0, and its report's suggested_alt texts once alt_texts_in_progress is 0 too. To download every finished image at once, call create_zip with the scan's id.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesThe scan's id.
audit_imagesNoAdd the page report's entry for every image address on the page (up to 1000). Ask once the scan is done, not while polling.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoThe scan's id.
urlNoThe page scanned.
hintNoWhat to do next, while the scan or its images are still running.
noteNoWhat the scan found, or why it stopped.
auditNoThe page audit: oversized images, missing dimensions and alt text, lazy loading in the wrong place, the largest contentful paint. Null until the scan has finished.
imagesNoThe images the scan found, newest first.
statusNo
skippedNoThe images the scan found and did not compress, each with why.
settingsNo
share_urlNoThe page report's public link while it is shared; it answers only while the account has Pro.
created_atNo
updated_atNo
saved_bytesNo
images_countNo
original_sizeNoBytes, over the finished images.
saved_percentNo
optimized_sizeNoBytes, over the finished images.
images_finishedNo
images_in_progressNo
alt_texts_in_progressNoFinished images whose AI alt text for the audit's suggested_alt is still being written.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedOutput schema / properties / alt_texts_in_progress
      Added value: +{
      +  "description": "Finished images whose AI alt text for the audit's suggested_alt is still being written.",
      +  "type": "integer"
      +}
    • addedOutput schema / properties / audit / properties / images / items / properties / suggested_alt
      Added value: +{
      +  "description": "An AI alt text for an image the page shows without one, once written; null while alt_texts_in_progress counts it, or when it was skipped, failed or not asked for.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / audit / properties / images / items / required
      Previous value: -[
      -  "url",
      -  "format",
      -  "bytes",
      -  "natural_width",
      -  "natural_height",
      -  "rendered_width",
      -  "rendered_height",
      -  "above_fold",
      -  "largest_paint",
      -  "alt",
      -  "findings",
      -  "wasted_bytes",
      -  "outcome",
      -  "skip_reason",
      -  "image_id",
      -  "format_sizes"
      -]New value: +[
      +  "url",
      +  "format",
      +  "bytes",
      +  "natural_width",
      +  "natural_height",
      +  "rendered_width",
      +  "rendered_height",
      +  "above_fold",
      +  "largest_paint",
      +  "alt",
      +  "findings",
      +  "wasted_bytes",
      +  "outcome",
      +  "skip_reason",
      +  "image_id",
      +  "format_sizes",
      +  "suggested_alt"
      +]
    • 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"
      +]
  2. Changed1 schema field changed
    • addedOutput schema / properties / share_url
      Added value: +{
      +  "description": "The page report's public link while it is shared; it answers only while the account has Pro.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  3. Changed2 schema fields changed
    • addedInput schema / properties / audit_images
      Added value: +{
      +  "description": "Add the page report's entry for every image address on the page (up to 1000). Ask once the scan is done, not while polling.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / audit
      Added value: +{
      +  "description": "The page audit: oversized images, missing dimensions and alt text, lazy loading in the wrong place, the largest contentful paint. Null until the scan has finished.",
      +  "properties": {
      +    "bytes": {
      +      "description": "What a browser downloaded for the images listed.",
      +      "type": "integer"
      +    },
      +    "findings": {
      +      "description": "How many images have each finding.",
      +      "properties": {
      +        "eager_below_fold": {
      +          "type": "integer"
      +        },
      +        "lazy_above_fold": {
      +          "type": "integer"
      +        },
      +        "lcp_not_prioritized": {
      +          "type": "integer"
      +        },
      +        "missing_alt": {
      +          "type": "integer"
      +        },
      +        "oversized": {
      +          "type": "integer"
      +        },
      +        "without_dimensions": {
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "oversized",
      +        "without_dimensions",
      +        "lazy_above_fold",
      +        "eager_below_fold",
      +        "missing_alt",
      +        "lcp_not_prioritized"
      +      ],
      +      "type": "object"
      +    },
      +    "formats": {
      +      "description": "How many images arrived in each format, as a browser received them.",
      +      "items": {
      +        "properties": {
      +          "count": {
      +            "type": "integer"
      +          },
      +          "format": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "format",
      +          "count"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "images": {
      +      "description": "Every image address the page had, in the page's order. Only when get_scan is called with audit_images.",
      +      "items": {
      +        "properties": {
      +          "above_fold": {
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "alt": {
      +            "enum": [
      +              "missing",
      +              "empty",
      +              "present",
      +              null
      +            ],
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "bytes": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "findings": {
      +            "items": {
      +              "enum": [
      +                "oversized",
      +                "without_dimensions",
      +                "lazy_above_fold",
      +                "eager_below_fold",
      +                "missing_alt",
      +                "lcp_not_prioritized"
      +              ],
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "format": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "format_sizes": {
      +            "description": "What each format came to when the scan's format was auto.",
      +            "items": {
      +              "properties": {
      +                "bytes": {
      +                  "type": "integer"
      +                },
      +                "format": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "format",
      +                "bytes"
      +              ],
      +              "type": "object"
      +            },
      +            "type": [
      +              "array",
      +              "null"
      +            ]
      +          },
      +          "image_id": {
      +            "description": "The compressed image, for get_image.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "largest_paint": {
      +            "type": "boolean"
      +          },
      +          "natural_height": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "natural_width": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "outcome": {
      +            "enum": [
      +              "compressed",
      +              "skipped",
      +              "left_out"
      +            ],
      +            "type": "string"
      +          },
      +          "rendered_height": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "rendered_width": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "skip_reason": {
      +            "enum": [
      +              "duplicate",
      +              "unsupported_format",
      +              "too_large",
      +              "tracking_pixel",
      +              "private_network",
      +              "unreadable",
      +              "unreachable",
      +              "refused",
      +              "failed",
      +              null
      +            ],
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "url": {
      +            "type": "string"
      +          },
      +          "wasted_bytes": {
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "url",
      +          "format",
      +          "bytes",
      +          "natural_width",
      +          "natural_height",
      +          "rendered_width",
      +          "rendered_height",
      +          "above_fold",
      +          "largest_paint",
      +          "alt",
      +          "findings",
      +          "wasted_bytes",
      +          "outcome",
      +          "skip_reason",
      +          "image_id",
      +          "format_sizes"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "images_found": {
      +      "type": "integer"
      +    },
      +    "largest_paint": {
      +      "description": "The largest contentful paint: the biggest thing in the first screen.",
      +      "properties": {
      +        "element": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "kind": {
      +          "enum": [
      +            "image",
      +            "text",
      +            "none"
      +          ],
      +          "type": "string"
      +        },
      +        "url": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "kind",
      +        "element",
      +        "url"
      +      ],
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "oversized_bytes": {
      +      "description": "About how many bytes the oversized images would shed at twice their shown size.",
      +      "type": "integer"
      +    },
      +    "rendered": {
      +      "description": "False when only the page's HTML could be read, so nothing about how images are shown is known.",
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "rendered",
      +    "images_found",
      +    "largest_paint",
      +    "findings",
      +    "oversized_bytes",
      +    "bytes",
      +    "formats"
      +  ],
      +  "type": [
      +    "object",
      +    "null"
      +  ]
      +}
  4. 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"
      +]
  5. Changed3 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"
      +]
    • addedOutput schema / properties / skipped
      Added value: +{
      +  "description": "The images the scan found and did not compress, each with why.",
      +  "items": {
      +    "properties": {
      +      "message": {
      +        "type": "string"
      +      },
      +      "reason": {
      +        "enum": [
      +          "duplicate",
      +          "unsupported_format",
      +          "too_large",
      +          "tracking_pixel",
      +          "private_network",
      +          "unreadable",
      +          "unreachable",
      +          "refused",
      +          "failed"
      +        ],
      +        "type": "string"
      +      },
      +      "url": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "url",
      +      "reason",
      +      "message"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  6. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "created_at": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "hint": {
      +      "description": "What to do next, while the scan or its images are still running.",
      +      "type": "string"
      +    },
      +    "id": {
      +      "description": "The scan's id.",
      +      "type": "string"
      +    },
      +    "images": {
      +      "description": "The images the scan found, newest first.",
      +      "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"
      +    },
      +    "images_count": {
      +      "type": "integer"
      +    },
      +    "images_finished": {
      +      "type": "integer"
      +    },
      +    "images_in_progress": {
      +      "type": "integer"
      +    },
      +    "note": {
      +      "description": "What the scan found, or why it stopped.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "optimized_size": {
      +      "description": "Bytes, over the finished images.",
      +      "type": "integer"
      +    },
      +    "original_size": {
      +      "description": "Bytes, over the finished images.",
      +      "type": "integer"
      +    },
      +    "saved_bytes": {
      +      "type": "integer"
      +    },
      +    "saved_percent": {
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "settings": {
      +      "properties": {
      +        "format": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "height": {
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "keep_metadata": {
      +          "type": "boolean"
      +        },
      +        "level": {
      +          "enum": [
      +            "none",
      +            "lossless",
      +            "ultra",
      +            "smart"
      +          ],
      +          "type": "string"
      +        },
      +        "scale": {
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        },
      +        "width": {
      +          "type": [
      +            "integer",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "level",
      +        "format",
      +        "keep_metadata",
      +        "width",
      +        "height",
      +        "scale"
      +      ],
      +      "type": "object"
      +    },
      +    "status": {
      +      "enum": [
      +        "queued",
      +        "scanning",
      +        "completed",
      +        "failed",
      +        "no-image-found",
      +        "cancelled"
      +      ],
      +      "type": "string"
      +    },
      +    "updated_at": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "url": {
      +      "description": "The page scanned.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  7. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources