Skip to main content
Glama

Get a previous scan by id

get_scan
Read-onlyIdempotent

Fetches a completed or in-progress scan by its id. Only scans owned by the authenticated API key's user are returned.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesThe scan id returned by scan_site (also the share token in a /scan/<id> URL).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesThe scan id.
statusYesScan status: running, completed, or failed.
pollUrlNoPoll URL while the scan is still running.
rootUrlNoThe scanned site URL.
shareUrlNoPath to the shareable report (/scan/<id>).
vercelScoreNoScore against the Vercel Agent Readability Spec (0–100); null while running.
llmstxtScoreNollms.txt score (0–100).
pagesScannedNoNumber of pages scanned.
vercelRatingNoRating band for the Vercel score.
pagesDiscoveredNoNumber of pages discovered.
protocolResultsNoAgent-protocol checks (C-series) that ran — only for endpoints the site actually exposes.
accessibilityScoreNoAccessibility / layout-stability sub-score (0–100) over the homepage WCAG checks; null when none ran. Separate from the Vercel score.
accessibilityChecksNoAccessibility / layout-stability checks (A-series) run over the homepage.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed1 schema field changed
    • changedOutput schema / properties / vercelScore / description
      Previous value: -"Vercel agent-readability score (0–100); null while running."New value: +"Score against the Vercel Agent Readability Spec (0–100); null while running."
  2. Changed3 schema fields changed
    • addedOutput schema / properties / accessibilityChecks
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "checkId": {
      +            "type": "string"
      +          },
      +          "howToFix": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "message": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "pass",
      +              "fail",
      +              "warn",
      +              "error"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "checkId",
      +          "name",
      +          "status",
      +          "message",
      +          "howToFix"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Accessibility / layout-stability checks (A-series) run over the homepage."
      +}
    • addedOutput schema / properties / accessibilityScore
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "number"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Accessibility / layout-stability sub-score (0–100) over the homepage WCAG checks; null when none ran. Separate from the Vercel score."
      +}
    • addedOutput schema / properties / protocolResults
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "checkId": {
      +            "type": "string"
      +          },
      +          "howToFix": {
      +            "anyOf": [
      +              {
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "message": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "pass",
      +              "fail",
      +              "warn",
      +              "error"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "checkId",
      +          "name",
      +          "status",
      +          "message",
      +          "howToFix"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "Agent-protocol checks (C-series) that ran — only for endpoints the site actually exposes."
      +}
  3. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already provide readOnly, openWorld, idempotent, and non-destructive hints. The description adds useful context about scan status (completed or in-progress) and the ownership restriction tied to the authenticated API key user, going beyond the structured hints.

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 a single focused sentence plus a helpful title. Every clause adds value: object type, allowed statuses, lookup key, and ownership constraint. No filler or 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?

With one required parameter, a fully described schema, an output schema present, and annotations covering safety and idempotency, the description provides sufficient context for correct invocation. No critical guidance 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%, and the description supplements the bare 'id' parameter by explaining how the id is obtained (returned by scan_site) and that it doubles as the share token in a /scan/<id> URL. This adds meaningful operational context.

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?

The description clearly states the tool fetches a scan by its id and specifies it handles completed or in-progress scans. It does not explicitly contrast with siblings like scan_site or ask, but the verb-resource pairing is specific enough to disambiguate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the intended use: retrieve a previous scan by id from the authenticated user's scans. It does not explicitly state when to prefer this over scan_site or ask, nor does it mention alternatives or exclusions.

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.

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: ask searches content, scan_site initiates scans, and get_scan retrieves scan results. There is no overlap or ambiguity between them.

Naming Consistency4/5

Tool names mostly follow a verb-based pattern (ask, scan_site, get_scan), with slight variation in that 'ask' lacks an explicit object while the others are verb_noun. Overall consistent enough to be predictable.

Tool Count5/5

Three tools is well-scoped for a focused scanner/content-search server. Each tool serves a necessary function without bloat or redundancy.

Completeness4/5

The scan lifecycle (initiate and fetch) is covered, and content search is provided. Minor gaps like listing past scans or canceling scans exist, but these are workaroundable.