Skip to main content
Glama

Share a page report

share_scan_report
Idempotent

Give a finished page scan's report a public page, returned as share_url, where anyone with the link can read it, with thumbnails of the compressed images, without signing in. For handing the report to a client or a colleague. The page is kept out of search engines and answers only while the account is on a paid plan. Comes with a paid plan, and is refused with pro_required on other plans. Sharing a report that is already shared keeps its link. The link can be switched off from the website's report or the API.

Input Schema

NameRequiredDescriptionDefault
idYesThe scan's id, as scan_page returned it.

Output Schema

NameRequiredDescriptionDefault
idNoThe scan's id.
urlNoThe page scanned.
hintNoWhat to do next: poll again while the scan or its images are still running, then where to read its images.
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.
statusNo
skippedNoThe images the scan found and did not compress, each with why.
crawl_idNoThe site crawl this scan is a page of, for get_crawl, or null.
settingsNo
share_urlNoThe page report's public link while it is shared; it answers only while the account is on a paid plan.
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. Changed1 schema field changed
    • changedOutput schema / properties / share_url / description
      Previous value: -"The page report's public link while it is shared; it answers only while the account has Pro."New value: +"The page report's public link while it is shared; it answers only while the account is on a paid plan."
  2. Changed3 schema fields changed
    • changedOutput schema / properties / audit / properties / images / items / properties / skip_reason / enum
      Previous value: -[
      -  "duplicate",
      -  "unsupported_format",
      -  "too_large",
      -  "tracking_pixel",
      -  "private_network",
      -  "unreadable",
      -  "unreachable",
      -  "refused",
      -  "failed",
      -  null
      -]New value: +[
      +  "duplicate",
      +  "unsupported_format",
      +  "too_large",
      +  "tracking_pixel",
      +  "private_network",
      +  "unreadable",
      +  "unreachable",
      +  "refused",
      +  "failed",
      +  "unchanged",
      +  null
      +]
    • addedOutput schema / properties / crawl_id
      Added value: +{
      +  "description": "The site crawl this scan is a page of, for get_crawl, or null.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • changedOutput schema / properties / skipped / items / properties / reason / enum
      Previous value: -[
      -  "duplicate",
      -  "unsupported_format",
      -  "too_large",
      -  "tracking_pixel",
      -  "private_network",
      -  "unreadable",
      -  "unreachable",
      -  "refused",
      -  "failed"
      -]New value: +[
      +  "duplicate",
      +  "unsupported_format",
      +  "too_large",
      +  "tracking_pixel",
      +  "private_network",
      +  "unreadable",
      +  "unreachable",
      +  "refused",
      +  "failed",
      +  "unchanged"
      +]
  3. Changed2 schema fields changed
    • changedOutput schema / properties / hint / description
      Previous value: -"What to do next, while the scan or its images are still running."New value: +"What to do next: poll again while the scan or its images are still running, then where to read its images."
    • removedOutput schema / properties / images
      Removed value: -{
      -  "description": "The images the scan found, newest first.",
      -  "items": {
      -    "properties": {
      -      "alt_text": {
      -        "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"
      -        ]
      -      },
      -      "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": {
      -          "format": {
      -            "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"
      -            ]
      -          },
      -          "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",
      -          "format",
      -          "keep_metadata",
      -          "width",
      -          "height",
      -          "scale"
      -        ],
      -        "type": "object"
      -      },
      -      "share_url": {
      -        "description": "Its public page, once shared.",
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "source_url": {
      -        "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"
      -        ]
      -      },
      -      "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",
      -      "alt_text",
      -      "scan_id",
      -      "source_url",
      -      "share_url",
      -      "created_at",
      -      "updated_at"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
  4. 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"
      +]
  5. Added

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that the link is public, readable without sign-in, excluded from search engines, tied to a paid plan, idempotent for already-shared reports, and revocable from the website or API. These are meaningful behavioral traits that an agent would not infer from the annotations alone.

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?

The purpose is front-loaded and the description is generally efficient. However, the paid-plan requirement is stated twice in adjacent sentences, creating minor redundancy.

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?

Given the rich annotations, complete schema coverage, and an output schema that handles return values, the description covers the remaining behavioral and access requirements. It explains the public exposure, paid-plan gate, idempotency, and revocation path, leaving no significant gap.

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?

The only parameter, id, is already fully documented in the schema as the scan id returned by scan_page. Schema description coverage is 100%, so the description does not need to explain it further and adds no additional parameter semantics.

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: giving a finished page scan's report a public page and returning a share_url. It distinguishes itself from share_image by focusing on a page scan report rather than an image, so an agent can select it without opening the schema.

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?

It clearly frames the intended use case as handing a report to a client or colleague, and explains the paid-plan prerequisite with the pro_required refusal. It does not explicitly compare against export_scan_report or share_image, so it lacks full alternative routing guidance.

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