Skip to main content
Glama

pdf_to_images_batch

PDF to Images (Batch) — Apply the same rasterization configuration to up to 20 PDFs. Returns a ZIP with a subfolder per input file. [category: pdf]

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dpiNoOut-of-range values clamp silently to 30-600 — never an error. Non-numeric is ignored and stays 150.
cropNoArea crop in PDF points: 'x,y,w,h'
modeNosheet/filmstrip require Starter+pages
filesYesUp to 20 input PDFs
pagesNoPage range e.g. 1-3,5,7-9. Empty = all.
formatNoAliases jpeg/tif accepted; unknown values silently stay png. avif is Starter+ — Free tier gets a 402.png
presetNoA ready-made bundle of settings. Anything you set yourself wins over the preset.
maxWidthNoShrink-only width cap in pixels, aspect preserved. Leave blank for no cap — an explicit 0 clamps UP to 100 and shrinks every page.
sheetGapNoSpacing between the tiles, in pixels.
colorModeNomono+jpg has no 1-bit JPEG — it silently renders grayscale and sets X-Color-Mode-Adjusted. Unknown values fall back to rgb.rgb
maxHeightNoShrink-only height cap in pixels, aspect preserved. Omit for no cap — an explicit 0 clamps UP to 100 and shrinks every page.
avifQualityNoHigher keeps more detail and makes a bigger file.
jpegQualityNoHigher keeps more detail and makes a bigger file. 50 is the lowest this tool will go.
namePatternNoFilename template with {basename}/{page}/{page:03d}/{dpi}/{format}/{date} tokens
transparentNoLeave the paper see-through instead of white.
webpQualityNoHigher keeps more detail and makes a bigger file.
sheetColumnsNoHow many pages sit side by side on the contact sheet.
watermarkFontNoOutside the enum it silently becomes Helvetica. Does nothing unless watermarkText is set.Helvetica
watermarkTextNoOptional text watermark stamped on each image
watermarkTileNoNot used by this tool - a rasterised page is stamped once, where Watermark position says.
watermarkColorNoHex color, #rgb or #rrggbb.#808080
watermarkScaleNoNot used by this tool — size the stamp with Watermark font size.
backgroundColorNoWhat fills the see-through parts of the page in a format that cannot keep them.#FFFFFF
sheetBackgroundNoColour of the canvas behind the tiles, as #rgb or #rrggbb. Anything we cannot read stays white.#FFFFFF
tiffCompressionNoHow the TIFF is packed down.lzw
watermarkOpacityNo0 invisible to 1 solid; out-of-range clamps. NOT a percent — 50 renders fully opaque. Needs watermarkText.
watermarkFontSizeNoSize of the stamped text in PIXELS of the rasterised page: it is annotated onto the bitmap at ImageMagick's 72 dpi default, so at dpi=300 the same number covers ~4x less of the page than it would inside a PDF. Needs watermarkText.
watermarkPositionNoWhere the stamp sits on each image.c
watermarkRotationNoInteger degrees only — a decimal like '45.5' silently resets to 45. Needs watermarkText.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / pages / title
      Added value: +"Pages to convert"
    • addedInput schema / properties / pages / x-ui
      Added value: +{
      +  "no_recall": true,
      +  "page_select": {}
      +}
  2. Changed1 schema field changed
    • removedInput schema / properties / namePattern / x-ui
      Removed value: -{
      -  "unset_label": "page_0001, page_0002, …"
      -}
  3. Changed2 schema fields changed
    • addedInput schema / properties / maxWidth / x-ui / pair_label
      Added value: +"Fit inside"
    • addedInput schema / properties / maxWidth / x-ui / pair_with
      Added value: +"maxHeight"
  4. Changed3 schema fields changed
    • addedInput schema / properties / crop / x-ui
      Added value: +{
      +  "unset_label": "No cropping"
      +}
    • addedInput schema / properties / namePattern / x-ui
      Added value: +{
      +  "unset_label": "page_0001, page_0002, …"
      +}
    • addedInput schema / properties / watermarkText / x-ui
      Added value: +{
      +  "unset_label": "No watermark"
      +}
  5. Changed2 schema fields changed
    • addedInput schema / properties / preset / x-ui / unset_label
      Added value: +"No preset"
    • changedInput schema / properties / watermarkFontSize / description
      Previous value: -"Points against the bitmap's 72dpi density — at dpi=300 text is ~4x smaller on the page than in a PDF. Needs watermarkText."New value: +"Size of the stamped text in PIXELS of the rasterised page: it is annotated onto the bitmap at ImageMagick's 72 dpi default, so at dpi=300 the same number covers ~4x less of the page than it would inside a PDF. Needs watermarkText."
  6. Changed6 schema fields changed
    • addedInput schema / properties / dpi / x-ui
      Added value: +{
      +  "unit": "dpi"
      +}
    • addedInput schema / properties / maxHeight / x-ui
      Added value: +{
      +  "unit": "px"
      +}
    • addedInput schema / properties / maxWidth / x-ui
      Added value: +{
      +  "unit": "px"
      +}
    • addedInput schema / properties / sheetGap / x-ui
      Added value: +{
      +  "unit": "px"
      +}
    • addedInput schema / properties / watermarkFontSize / x-ui
      Added value: +{
      +  "unit": "px"
      +}
    • addedInput schema / properties / watermarkRotation / x-ui
      Added value: +{
      +  "unit": "deg"
      +}
  7. Changed30 schema fields changed
    • changedInput schema / properties / avifQuality / description
      Previous value: -"AVIF quality (Starter+)"New value: +"Higher keeps more detail and makes a bigger file."
    • addedInput schema / properties / avifQuality / x-show-when
      Added value: +{
      +  "format": [
      +    "avif"
      +  ]
      +}
    • changedInput schema / properties / backgroundColor / description
      Previous value: -"Background for transparent PDFs rendered to non-alpha formats"New value: +"What fills the see-through parts of the page in a format that cannot keep them."
    • addedInput schema / properties / backgroundColor / x-show-when
      Added value: +{
      +  "format": [
      +    "jpg",
      +    "webp"
      +  ]
      +}
    • changedInput schema / properties / jpegQuality / description
      Previous value: -"Consulted only when format=jpg. Out-of-range clamps silently to 50-95 — this is not a 0-100 scale."New value: +"Higher keeps more detail and makes a bigger file. 50 is the lowest this tool will go."
    • addedInput schema / properties / jpegQuality / x-show-when
      Added value: +{
      +  "format": [
      +    "jpg",
      +    "tiff"
      +  ]
      +}
    • changedInput schema / properties / maxWidth / description
      Previous value: -"Cap width (shrink-only, preserves aspect)"New value: +"Shrink-only width cap in pixels, aspect preserved. Leave blank for no cap — an explicit 0 clamps UP to 100 and shrinks every page."
    • changedInput schema / properties / preset / description
      Previous value: -"One-click preset bundle. Explicit fields override preset values."New value: +"A ready-made bundle of settings. Anything you set yourself wins over the preset."
    • changedInput schema / properties / preset / enum
      Previous value: -[
      -  "",
      -  "web",
      -  "print",
      -  "email",
      -  "archive"
      -]New value: +[
      +  "web",
      +  "print",
      +  "email",
      +  "archive"
      +]
    • addedInput schema / properties / preset / x-ui
      Added value: +{
      +  "labels": {
      +    "archive": "For keeping (PNG, 300 DPI)",
      +    "email": "For emailing (JPG, 150 DPI)",
      +    "print": "For printing (PNG, 300 DPI)",
      +    "web": "For a web page (WEBP, 96 DPI)"
      +  }
      +}
    • changedInput schema / properties / sheetBackground / description
      Previous value: -"Canvas color behind tiles, sheet/filmstrip modes only. #rgb or #rrggbb; invalid hex silently keeps #FFFFFF."New value: +"Colour of the canvas behind the tiles, as #rgb or #rrggbb. Anything we cannot read stays white."
    • addedInput schema / properties / sheetBackground / title
      Added value: +"Sheet background colour"
    • addedInput schema / properties / sheetBackground / x-show-when
      Added value: +{
      +  "mode": [
      +    "sheet",
      +    "filmstrip"
      +  ]
      +}
    • changedInput schema / properties / sheetColumns / description
      Previous value: -"mode=sheet only — filmstrip is always one row. Out-of-range clamps silently to 1-10."New value: +"How many pages sit side by side on the contact sheet."
    • addedInput schema / properties / sheetColumns / x-show-when
      Added value: +{
      +  "mode": [
      +    "sheet"
      +  ]
      +}
    • changedInput schema / properties / sheetGap / description
      Previous value: -"Pixel spacing between tiles in sheet/filmstrip modes. Out-of-range clamps silently to 0-200."New value: +"Spacing between the tiles, in pixels."
    • addedInput schema / properties / sheetGap / x-show-when
      Added value: +{
      +  "mode": [
      +    "sheet",
      +    "filmstrip"
      +  ]
      +}
    • changedInput schema / properties / tiffCompression / description
      Previous value: -"TIFF compression (format=tiff only)."New value: +"How the TIFF is packed down."
    • addedInput schema / properties / tiffCompression / x-show-when
      Added value: +{
      +  "format": [
      +    "tiff"
      +  ]
      +}
    • addedInput schema / properties / tiffCompression / x-ui
      Added value: +{
      +  "labels": {
      +    "g4": "Group 4 (black and white)",
      +    "jpeg": "JPEG (smaller, lossy)",
      +    "lzw": "LZW (lossless, default)",
      +    "none": "None (largest)",
      +    "packbits": "PackBits (lossless)",
      +    "zip": "ZIP (lossless)"
      +  }
      +}
    • changedInput schema / properties / transparent / description
      Previous value: -"PNG alpha channel when true"New value: +"Leave the paper see-through instead of white."
    • addedInput schema / properties / transparent / x-show-when
      Added value: +{
      +  "colorMode": [
      +    "rgb"
      +  ],
      +  "format": [
      +    "png",
      +    "webp",
      +    "avif"
      +  ]
      +}
    • changedInput schema / properties / watermarkPosition / description
      Previous value: -"Unknown codes silently become c (center). Does nothing unless watermarkText is set."New value: +"Where the stamp sits on each image."
    • addedInput schema / properties / watermarkPosition / x-ui
      Added value: +{
      +  "labels": {
      +    "bc": "Bottom centre",
      +    "bl": "Bottom left",
      +    "br": "Bottom right",
      +    "c": "Centre",
      +    "ml": "Middle left",
      +    "mr": "Middle right",
      +    "tc": "Top centre",
      +    "tl": "Top left",
      +    "tr": "Top right"
      +  }
      +}
    • changedInput schema / properties / watermarkScale / description
      Previous value: -"ACCEPTED BUT UNUSED in this tool — the raster stamp sizes by watermarkFontSize only; set that instead."New value: +"Not used by this tool — size the stamp with Watermark font size."
    • addedInput schema / properties / watermarkScale / x-show-when
      Added value: +{
      +  "mode": [
      +    "__never"
      +  ]
      +}
    • changedInput schema / properties / watermarkTile / description
      Previous value: -"ACCEPTED BUT UNUSED in this tool — no tiling on rasterized pages; the stamp renders once at watermarkPosition."New value: +"Not used by this tool - a rasterised page is stamped once, where Watermark position says."
    • addedInput schema / properties / watermarkTile / x-show-when
      Added value: +{
      +  "mode": [
      +    "__never"
      +  ]
      +}
    • changedInput schema / properties / webpQuality / description
      Previous value: -"Consulted only when format=webp. Out-of-range clamps silently to 50-95 — this is not a 0-100 scale."New value: +"Higher keeps more detail and makes a bigger file."
    • addedInput schema / properties / webpQuality / x-show-when
      Added value: +{
      +  "format": [
      +    "webp"
      +  ]
      +}
  8. First observed

TDQS

A3.8/5.0
Behavior3/5

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

Annotations only set readOnlyHint and destructiveHint to false, providing no behavioral insight. The description discloses the return format (ZIP with subfolders) and input limit (20 PDFs), which adds some context. However, it does not mention that the original files are not modified, or discuss error handling, partial failures, or tier restrictions. The description carries more of the burden due to sparse annotations but only partially fulfills it.

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, information-dense sentence with no filler. It front-loads the core purpose and output structure, and the category tag adds context without redundancy. Every word earns its place.

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?

For a tool with 29 parameters and no output schema, the description covers the essential high-level contract: what it does, the input limit, and the output shape. It could add a note about non-destructive behavior or the relationship to pdf_to_images, but the schema already carries detailed operational guidance. The description is sufficient for an agent to understand when and how to invoke it, though slightly lean for the complexity.

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 100%, so the tool description does not need to explain parameters. The description adds no parameter-level details, which is acceptable given the schema already documents all 29 parameters thoroughly. The baseline score of 3 is appropriate because the schema does the heavy lifting.

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 clearly states the action (convert PDFs to images), the resource (PDFs), the batch scope (up to 20), and the output format (ZIP with subfolders). It distinguishes itself from sibling tools like pdf_to_images by emphasizing batch processing and the unified configuration.

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 use case: applying the same rasterization settings to multiple PDFs. It does not explicitly mention alternatives (e.g., pdf_to_images for a single PDF) or when not to use it. However, the batch context is clear enough for an agent to infer applicability, so it earns a 3 rather than a 2.

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