Skip to main content
Glama

Preview delivery materials

preview_downloads
Read-onlyIdempotent

After creating an upload session, compare the proposed manifest with the current version before finalizing. Returns added, removed, replaced and missing files, the full list and a basis token. Omitted downloads inherit explicit current settings; a first version defaults to none; [] clears the list. Resolve missing files explicitly. Pass basis as download_basis to finalize_upload to detect concurrent changes. The CLI handles this step.

Input Schema

NameRequiredDescriptionDefault
manifestYes
version_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / manifest / properties / forms / additionalProperties / properties / fields / items / properties / type / enum
      Previous value: -[
      -  "text",
      -  "textarea",
      -  "select",
      -  "multiselect",
      -  "number",
      -  "phone",
      -  "email",
      -  "image"
      -]New value: +[
      +  "text",
      +  "textarea",
      +  "select",
      +  "multiselect",
      +  "number",
      +  "phone",
      +  "email",
      +  "image",
      +  "location"
      +]
  2. Changed1 schema field changed
    • addedInput schema / properties / manifest / properties / share / properties / auto_excerpt
      Added value: +{
      +  "maxLength": 600,
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / manifest / properties / forms / additionalProperties / properties / fields / items / properties / type / enum
      Previous value: -[
      -  "text",
      -  "textarea",
      -  "select",
      -  "multiselect",
      -  "number",
      -  "phone",
      -  "email"
      -]New value: +[
      +  "text",
      +  "textarea",
      +  "select",
      +  "multiselect",
      +  "number",
      +  "phone",
      +  "email",
      +  "image"
      +]
  4. Changed7 schema fields changed
    • addedInput schema / properties / manifest / properties / analytics
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "replay": {
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / manifest / properties / folder
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 64,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedInput schema / properties / manifest / properties / folder_link
      Added value: +{
      +  "type": "boolean"
      +}
    • addedInput schema / properties / manifest / properties / forms
      Added value: +{
      +  "additionalProperties": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "append_open": {
      +        "type": "boolean"
      +      },
      +      "fields": {
      +        "items": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "key": {
      +              "maxLength": 64,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "label": {
      +              "maxLength": 40,
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "max": {
      +              "type": "number"
      +            },
      +            "min": {
      +              "type": "number"
      +            },
      +            "options": {
      +              "items": {
      +                "maxLength": 40,
      +                "minLength": 1,
      +                "type": "string"
      +              },
      +              "maxItems": 50,
      +              "type": "array"
      +            },
      +            "required": {
      +              "type": "boolean"
      +            },
      +            "type": {
      +              "enum": [
      +                "text",
      +                "textarea",
      +                "select",
      +                "multiselect",
      +                "number",
      +                "phone",
      +                "email"
      +              ],
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "key",
      +            "label",
      +            "type"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 20,
      +        "minItems": 1,
      +        "type": "array"
      +      },
      +      "members_only": {
      +        "type": "boolean"
      +      },
      +      "title": {
      +        "maxLength": 40,
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "fields"
      +    ],
      +    "type": "object"
      +  },
      +  "propertyNames": {
      +    "maxLength": 64,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / manifest / properties / name
      Added value: +{
      +  "maxLength": 256,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / manifest / properties / path
      Added value: +{
      +  "maxLength": 80,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / manifest / properties / tag
      Added value: +{
      +  "anyOf": [
      +    {
      +      "maxLength": 40,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    {
      +      "properties": {
      +        "name": {
      +          "maxLength": 40,
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "note": {
      +          "maxLength": 2000,
      +          "type": "string"
      +        },
      +        "title": {
      +          "maxLength": 200,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "name"
      +      ],
      +      "type": "object"
      +    }
      +  ]
      +}
  5. Changed1 schema field changed
    • addedInput schema / properties / manifest / properties / blankCheck
      Added value: +{
      +  "properties": {
      +    "at": {
      +      "maxLength": 40,
      +      "type": "string"
      +    },
      +    "backfill": {
      +      "type": "boolean"
      +    },
      +    "bytes": {
      +      "maximum": 9007199254740991,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "chars": {
      +      "maximum": 9007199254740991,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "code": {
      +      "enum": [
      +        "blank_swallowed",
      +        "blank_redirect_missing",
      +        "blank_no_content",
      +        "blank_tiny_text"
      +      ],
      +      "type": "string"
      +    },
      +    "file": {
      +      "maxLength": 512,
      +      "type": "string"
      +    },
      +    "line": {
      +      "exclusiveMinimum": 0,
      +      "maximum": 9007199254740991,
      +      "type": "integer"
      +    },
      +    "override_at": {
      +      "maxLength": 40,
      +      "type": "string"
      +    },
      +    "sev": {
      +      "enum": [
      +        "hold",
      +        "warn"
      +      ],
      +      "type": "string"
      +    },
      +    "tag": {
      +      "maxLength": 16,
      +      "type": "string"
      +    },
      +    "tags": {
      +      "maximum": 9007199254740991,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "target": {
      +      "maxLength": 512,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "sev",
      +    "file"
      +  ],
      +  "type": "object"
      +}
  6. Changed1 schema field changed
    • changedInput schema / properties / manifest / properties / chrome / properties / default / enum
      Previous value: -[
      -  "open",
      -  "collapsed"
      -]New value: +[
      +  "open",
      +  "collapsed",
      +  "hidden"
      +]
  7. Changed1 schema field changed
    • addedInput schema / properties / manifest / properties / reader
      Added value: +{
      +  "properties": {
      +    "accent": {
      +      "pattern": "^#[0-9a-fA-F]{6}$",
      +      "type": "string"
      +    },
      +    "position": {
      +      "enum": [
      +        "br",
      +        "bl",
      +        "tr",
      +        "tl"
      +      ],
      +      "type": "string"
      +    },
      +    "style": {
      +      "enum": [
      +        "pill",
      +        "round"
      +      ],
      +      "type": "string"
      +    },
      +    "subscribe": {
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
  8. Changed1 schema field changed
    • addedInput schema / properties / manifest / properties / chrome
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "default": {
      +      "enum": [
      +        "open",
      +        "collapsed"
      +      ],
      +      "type": "string"
      +    },
      +    "handle": {
      +      "enum": [
      +        "top-right",
      +        "top-left",
      +        "bottom-right",
      +        "bottom-left"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  9. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered; the description goes further by disclosing the diff output categories and the concurrency-detection contract via the basis token. It also explains inheritance semantics for omitted downloads (inherit current settings, first version defaults to none, empty array clears) and the rule that missing files must be resolved explicitly — behavior an agent could not infer from 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?

Purpose and workflow position are front-loaded in the first sentence, followed by return shape and then field semantics — a sensible order. Every sentence carries information, though 'The CLI handles this step' is terse to the point of ambiguity about what an agent should do with that fact.

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

Completeness4/5

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

With no output schema, the description does the necessary work of naming the returned diff fields and basis token, and it explains the mutate-vs-clear semantics that matter for a preview call. The remaining gap is the undocumented manifest vocabulary, which is presumably shared with the upload/finalize siblings but is not referenced here.

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?

Schema description coverage is 0% and the manifest is a large nested object, so the description carries real weight: it defines the semantics of the downloads field (omission inheritance, defaults, empty-array clearing) and the role of the returned basis token. However, it says nothing about the dozens of other manifest properties (title, entry, cta, forms, actions, theme, etc.) or about version_id, leaving most of the schema undocumented in both places.

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 names a specific operation: diffing a proposed downloads manifest against the current version of a version_id, and enumerates the result categories (added, removed, replaced, missing, full list, basis token). Combined with the title and the sequencing sentence, an agent can distinguish this from create_upload_session and finalize_upload without opening any 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 places the call precisely in the workflow — after creating an upload session, before finalizing — and tells the agent to carry the returned basis into finalize_upload as download_basis to detect concurrent changes. It also hints that the CLI covers this step, which is an implicit exclusion but not a spelled-out 'do not call when'. No competing sibling such as preview_version is named as an alternative.

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