Skip to content

MCP servers › io.github.zachshallbetter › indesign-mcp-server

MCP server · registry snapshot 2026-10-23 · last tested 2026-10-23

io.github.zachshallbetter/indesign-mcp-server

Drive Adobe InDesign from any MCP client: 135+ tools for layout, styles, books and PDF export. — the publisher's description

6 of 9 record checks metRead-only · tools listed 2026-10-23Topic: media-and-design · AI-classifiedversion 2.3.0JavaScriptMITstandard input/output137 tools

Summary

io.github.zachshallbetter/indesign-mcp-server is a local MCP server listed in the official MCP registry at version 2.3.0, marked deprecated there. On 2026-10-23 ProtocolProbe started its published package in an isolated sandbox in read-only mode and read its inventory: 137 tools, 0 resources and 0 prompts.

Record checks

6 of 9 record checks met

  • not met: Registry entry is active and says how to run it
  • met: Source repository link opens
  • met: Repository is not archived
  • met: Code pushed to the repository in the 90 days before our check
  • met: Repository publishes a security policy (SECURITY.md)
  • met: Package names its licence with a standard (SPDX) identifier
  • not met: The version the registry lists can be installed and is not withdrawn
  • not met: npm package carries build provenance (attestation)
  • met: No known critical or high advisory in the package or its dependencies
  • Not ranked by downloads: deprecated in the registry
  • Not ranked by stars: deprecated in the registry

From public records, not a safety rating. Each check with its reason · Is it safe to install?

Key facts

Runs
local package
Transport
standard input/output
Package
npm · listed version current
License
MIT
Dependencies
no known high or critical advisories
Repository
public
Tools
137
Described as changing data
90 of 137 toolsAI-classified
Mainly works on
files and code on the machine it runs onAI-classified
Topic
media-and-designAI-classified
Last tested
2026-10-23

Add to your client

Worth knowing before you connect it

  • 90 tools are described as changing something (add_page, delete_page, duplicate_page, …): our AI model's reading of the descriptions, not something we tested. We did not call them.
  • The registry marks this server deprecated.
  • The listed version is deprecated on npm.

Each line comes from a section below, with its source and date.

How fresh this is

Live-tested
yes, a real session (not a text-only review)
Last tested
2026-10-23
Mode
read-only (no tool calls)
Latest version
2.3.0, published 2026-10-14 (registry, as of the 2026-10-23 snapshot)
First listed version
2026-10-14 (earliest version still in the registry; older removed versions would be earlier)
Version history
2 versions listed, all on 2026-10-14; 2 in the 90 days before the 2026-10-23 snapshot; 2 marked deprecated.
Most recent 2 versions
  • 2.3.0 · 2026-10-14 · deprecated
  • 2.1.0 · 2026-10-14 · deprecated
(versions still listed in the registry only)
Registry data
snapshot 2026-10-23
Package and repository
checked 2026-10-23
Engine
mcp-runtime-engine@0.1.0 · sdk@1.32.0

Changes since the last refresh

New in the registry: not in the list of 2026-10-04, listed on 2026-10-23 with version 2.3.0 (published 2026-10-14).

Source: the official MCP Registry list on 2026-10-04 and on 2026-10-23.

What it is

What does this server offer?

Observed inventory
137tools
0resources
0prompts

What it mainly works on, as our AI model read its tool descriptions: files and code on the machine it runs on.

90 of 137 tools are described as changing something (creating, editing, deleting, sending or running). For 17 the reading was uncertain, so no mark is shown.

  • add_pageon 8 other serverscreates or changes datadescribed as changing data

    “Add a page to the active document at the end, the beginning, or before/after a given page; returns the new page count”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    2 inputs
    • positionstring“Where to add the page: AT_END, AT_BEGINNING, or BEFORE/AFTER referencePage”
    • referencePageinteger“0-based reference page index (required for BEFORE/AFTER)”
  • delete_pageon 20 other serversdeletesdescribed as changing data

    “Delete a page from the document (the only page cannot be deleted)”

    Publisher declares: read-only no · destructive yes · idempotent no · open-world no

    1 input, 1 required
    • pageIndexintegerrequired“0-based index of the page to delete”
  • duplicate_pageon 2 other serverscreates or changes datadescribed as changing data

    “Duplicate a page and put the copy at the given position in the document”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    3 inputs, 1 required
    • pageIndexintegerrequired“0-based index of the page to duplicate”
    • positionstring“Where to put the copy”
    • referencePageIndexinteger“0-based reference page index (required for BEFORE/AFTER)”
  • navigate_to_pageon 6 other serverscontrols a browser or desktopdescribed as changing data

    “Navigate to a page: make it the active page of the document's layout window”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    1 input, 1 required
    • pageIndexintegerrequired“0-based index of the page to navigate to”
  • get_page_infoon 6 other serversreads or searches

    “Get detailed information about a specific page”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    1 input, 1 required
    • pageIndexintegerrequired“0-based page index”
  • move_pageon 3 other serverscreates or changes datadescribed as changing data

    “Move a page to a different position in the document”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    4 inputs, 1 required
    • pageIndexintegerrequired“0-based index of the page to move”
    • positionstring“Where to move the page: AT_END, AT_BEGINNING, or BEFORE/AFTER referencePage”
    • referencePageIndexinteger“0-based reference page index (required for BEFORE/AFTER; must differ from pageIndex)”
    • bindingstring“Location of the binding spine in the spread (BindingOptions)”
  • set_page_propertieson 1 other servercreates or changes datadescribed as changing data

    “Set properties for a page (only the properties given are changed)”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    7 inputs, 1 required
    • pageIndexintegerrequired“0-based page index”
    • labelstring“Page label”
    • pageColorstring“Page color shown in the Pages panel: UI color name (e.g.”
    • optionalPageboolean“Optional page for HTML5 pagination”
    • layoutRulestring“Liquid layout rule (LayoutRuleOptions)”
    • snapshotBlendingModestring“Snapshot blending mode (SnapshotBlendingModes)”
    • appliedTrapPresetstring“Name of an existing trap preset to apply”
  • adjust_page_layouton 1 other servercreates or changes datadescribed as changing data

    “Adjust a page's size and margins with InDesign's Adjust Layout (content is repositioned/scaled to follow).”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    12 inputs, 1 required
    • pageIndexintegerrequired“0-based page index”
    • unitsstring“Units for all values below”
    • widthnumber“New page width”
    • heightnumber“New page height”
    • bleedInsidenumber“Inside (left) bleed, document-wide”
    • bleedTopnumber“Top bleed, document-wide”
    • bleedOutsidenumber“Outside (right) bleed, document-wide”
    • bleedBottomnumber“Bottom bleed, document-wide”
    • leftMarginnumber“Left margin”
    • topMarginnumber“Top margin”
    • rightMarginnumber“Right margin”
    • bottomMarginnumber“Bottom margin”
  • resize_pageon 2 other serverscreates or changes datadescribed as changing data

    “Resize a page (Page.resize).”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    6 inputs, 3 required
    • pageIndexintegerrequired“0-based page index”
    • widthnumberrequired“Width value (mm, factor or ratio part depending on resizeMethod)”
    • heightnumberrequired“Height value (mm, factor or ratio part depending on resizeMethod)”
    • resizeMethodstring“How width and height are applied: replace the size (default), multiply it, add to it, or reshape to a ratio”
    • anchorPointstring“Point of the page that stays fixed while it resizes”
    • coordinateSpacestring“Coordinate space the size is measured in; PAGE_COORDINATES unless you need another”
  • place_file_on_pageon 1 other servercreates or changes datadescribed as changing data

    “Place a file (image, PDF, text, InDesign snippet, ...) on a page.”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    7 inputs, 2 required
    • pageIndexintegerrequired“0-based page index”
    • filePathstringrequired“Path to file to place”
    • xnumber“X position in mm”
    • ynumber“Y position in mm”
    • layerNamestring“Layer to place on (default: active layer)”
    • showingOptionsboolean“Show import options dialog”
    • autoflowingboolean“Autoflow placed text”
  • place_xml_on_pageon 1 other servercreates or changes datadescribed as changing data

    “Place an XML element (the first element whose tag matches xmlElementName) on a page.”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    5 inputs, 2 required
    • pageIndexintegerrequired“0-based page index”
    • xmlElementNamestringrequired“Tag name of the XML element to place”
    • xnumber“X position in mm”
    • ynumber“Y position in mm”
    • autoflowingboolean“Autoflow placed text”
  • snapshot_page_layouton 1 other servercreates or changes datadescribed as changing data

    “Create a liquid-layout snapshot of the page layout for its current size and shape”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    1 input, 1 required
    • pageIndexintegerrequired“0-based page index”
Show 88 more tools
  • delete_page_layout_snapshoton 1 other serverdeletesdescribed as changing data

    “Delete the page's layout snapshot for its current size and shape”

    Publisher declares: read-only no · destructive yes · idempotent no · open-world no

    1 input, 1 required
    • pageIndexintegerrequired“0-based page index”
  • delete_all_page_layout_snapshotson 1 other serverdeletesdescribed as changing data

    “Delete all layout snapshots for a page”

    Publisher declares: read-only no · destructive yes · idempotent yes · open-world no

    1 input, 1 required
    • pageIndexintegerrequired“0-based page index”
  • reframe_pageon 1 other servercreates or changes datadescribed as changing data

    “Reframe a page: set its bounding box from two opposing corners, in mm in the given coordinate space”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    6 inputs, 5 required
    • pageIndexintegerrequired“0-based page index”
    • x1numberrequired“Top-left X coordinate in mm”
    • y1numberrequired“Top-left Y coordinate in mm”
    • x2numberrequired“Bottom-right X coordinate in mm”
    • y2numberrequired“Bottom-right Y coordinate in mm”
    • coordinateSpacestring“Coordinate space of the corner coordinates; PAGE_COORDINATES unless you need another”
  • create_page_guideson 1 other servercreates or changes datadescribed as changing data

    “Create row/column guides on one page (like Layout > Create Guides, limited to this page)”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    9 inputs, 1 required
    • pageIndexintegerrequired“0-based page index”
    • numberOfRowsinteger“Number of rows (2+ creates horizontal guides)”
    • numberOfColumnsinteger“Number of columns (2+ creates vertical guides)”
    • rowGutternumber“Row gutter in mm”
    • columnGutternumber“Column gutter in mm”
    • guideColorstring“Guide color: UI color name (e.g.”
    • fitMarginsboolean“Divide the area inside the margins (true) or the whole page (false)”
    • removeExistingboolean“Remove the page's existing guides first”
    • layerNamestring“Layer to create the guides on (default: active layer)”
  • select_pageon 5 other serversdescribed as changing data

    “Select a page in the active document (for example before running a command that acts on the selection)”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    2 inputs, 1 required
    • pageIndexintegerrequired“0-based page index”
    • selectionModestring“REPLACE_WITH replaces the selection; ADD_TO / REMOVE_FROM change it; SET_KEY makes the page the key object”
  • get_page_content_summaryon 1 other serverreads or searches

    “Summarize what is on a page: counts of text frames, rectangles, ovals, polygons, lines, groups, placed graphics, guides and master items”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    1 input, 1 required
    • pageIndexintegerrequired“0-based page index”
  • set_page_backgroundon 1 other servercreates or changes datadescribed as changing data

    “Set a page background: adds a full-page rectangle filled with a swatch, sent to the back of its layer”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    3 inputs
    • pageIndexinteger“0-based page index (default 0, the first page)”
    • backgroundColorstring“Swatch name in the document (e.g.”
    • opacitynumber“Background opacity percentage (0-100)”
  • create_text_frameon 3 other serverscreates or changes datadescribed as changing data

    “Create a text frame on the active page (or pageIndex).”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    12 inputs, 1 required
    • contentstringrequired“Text content for the frame”
    • pageIndexinteger“Page index (0-based); defaults to the active page”
    • xnumber“X position in mm from the page left edge; omit position or size to have the frame placed automatically”
    • ynumber“Y position in mm from the page top edge”
    • widthnumber“Width in mm”
    • heightnumber“Height in mm”
    • fontSizenumber“Font size in points (default: style/document default)”
    • fontNamestring“Font as "Family\tStyle" (e.g.”
    • textColorstring“Text color (default: style/document default): swatch name (e.g.”
    • alignmentstring“Paragraph alignment (InDesign Justification; LEFT_JUSTIFIED = justified, last line left)”
    • paragraphStylestring“Paragraph style name to apply”
    • characterStylestring“Character style name to apply”
  • edit_text_frameon 1 other servercreates or changes datadescribed as changing data

    “Edit the content and/or formatting of an existing text frame”

    Publisher declares: read-only no · destructive yes · idempotent no · open-world no

    7 inputs, 1 required
    • frameIndexintegerrequired“Index in page.textFrames (top-level text frames only; not the list_page_items numbering)”
    • pageIndexinteger“Page index (0-based); defaults to the active page”
    • contentstring“New text content (replaces existing text)”
    • fontSizenumber“Font size in points”
    • fontNamestring“Font as "Family\tStyle" (e.g.”
    • textColorstring“Text color: swatch name (e.g.”
    • alignmentstring“Paragraph alignment for the whole frame (InDesign Justification; LEFT_JUSTIFIED = justified, last line left)”
  • find_replace_texton 8 other serverscreates or changes datadescribed as changing data

    “Find and replace literal text throughout the document (InDesign text search; metacharacters such as ^p and ^t are honored)”

    Publisher declares: read-only no · destructive yes · idempotent no · open-world no

    4 inputs, 2 required
    • findTextstringrequired“Text to find”
    • replaceTextstringrequired“Text to replace with”
    • caseSensitiveboolean“Case sensitive search”
    • wholeWordboolean“Whole word search”
  • create_tableon 12 other serverscreates or changes datadescribed as changing data

    “Create a table in a new text frame on the active page (or pageIndex)”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    8 inputs, 2 required
    • rowsintegerrequired“Total number of rows, including header rows”
    • columnsintegerrequired“Number of columns”
    • pageIndexinteger“Page index (0-based); defaults to the active page”
    • xnumber“X position in mm from the page left edge; omitted values are placed automatically”
    • ynumber“Y position in mm from the page top edge”
    • widthnumber“Frame and table width in mm”
    • heightnumber“Text frame height in mm”
    • headerRowsinteger“Number of header rows (must be less than rows; default 1 when rows > 1)”
  • populate_tableon 1 other servercreates or changes datadescribed as changing data

    “Fill table cells from a 2-D array.”

    Publisher declares: read-only no · destructive yes · idempotent no · open-world no

    5 inputs, 1 required
    • tableIndexinteger“Index among the tables in page.textFrames, counted frame by frame”
    • pageIndexinteger“Page index (0-based); defaults to the active page”
    • dataarrayrequired“Rows of cell values; null becomes an empty cell”
    • startRowinteger“Starting row index (header rows count)”
    • startColumninteger“Starting column index”
  • place_imageon 6 other serverscreates or changes datadescribed as changing data

    “Place an image file in a new frame on the active page (or pageIndex).”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    10 inputs, 1 required
    • filePathstringrequired“Path to the image file”
    • pageIndexinteger“Page index (0-based); defaults to the active page”
    • xnumber“X position in mm”
    • ynumber“Y position in mm”
    • widthnumber“Frame width in mm”
    • heightnumber“Frame height in mm”
    • linkImageboolean“Keep the image linked (false embeds it)”
    • scalenumber“Image scale percentage (1-1000); used when fitMode is NONE or the frame is sized to the image”
    • fitModestring“InDesign fit option applied to the frame (PROPORTIONALLY and FILL_PROPORTIONALLY also center the content); NONE keeps the placed size”
    • objectStylestring“Object style to apply to the frame”
  • helpon 30 other serversreads or searches

    “Get help information about available tools and their usage”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    3 inputs
    • toolstring“Specific tool name to get help for (optional)”
    • categorystring“Category of tools to list (optional)”
    • formatstring“Output format”
  • create_rectangleon 10 other serverscreates or changes datadescribed as changing data

    “Create a rectangle on the active page (or pageIndex)”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    9 inputs
    • pageIndexinteger“Page index (0-based); defaults to the active page”
    • xnumber“X position in mm from the page top-left; omitted values are placed on the page automatically”
    • ynumber“Y position in mm”
    • widthnumber“Width in mm”
    • heightnumber“Height in mm”
    • fillColorstring“Fill color: swatch name (e.g.”
    • strokeColorstring“Stroke color: swatch name (e.g.”
    • strokeWeightnumber“Stroke weight in points (default 1 when strokeColor is given)”
    • cornerRadiusnumber“Rounded corner radius in mm (0 = square corners)”
  • create_ellipseon 9 other serverscreates or changes datadescribed as changing data

    “Create an ellipse on the active page (or pageIndex)”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    8 inputs
    • pageIndexinteger“Page index (0-based); defaults to the active page”
    • xnumber“X position in mm from the page top-left; omitted values are placed on the page automatically”
    • ynumber“Y position in mm”
    • widthnumber“Width in mm”
    • heightnumber“Height in mm”
    • fillColorstring“Fill color: swatch name (e.g.”
    • strokeColorstring“Stroke color: swatch name (e.g.”
    • strokeWeightnumber“Stroke weight in points (default 1 when strokeColor is given)”
  • create_polygonon 3 other serverscreates or changes datadescribed as changing data

    “Create a regular polygon on the active page (or pageIndex)”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    9 inputs
    • pageIndexinteger“Page index (0-based); defaults to the active page”
    • xnumber“X position in mm from the page top-left; omitted values are placed on the page automatically”
    • ynumber“Y position in mm”
    • widthnumber“Width in mm”
    • heightnumber“Height in mm”
    • sidesinteger“Number of sides”
    • fillColorstring“Fill color: swatch name (e.g.”
    • strokeColorstring“Stroke color: swatch name (e.g.”
    • strokeWeightnumber“Stroke weight in points (default 1 when strokeColor is given)”
  • create_object_styleon 1 other servercreates or changes datadescribed as changing data

    “Create an object style; only the attributes you pass are included in the style”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    6 inputs, 1 required
    • namestringrequired“Object style name”
    • fillColorstring“Fill color: swatch name (e.g.”
    • strokeColorstring“Stroke color: swatch name (e.g.”
    • strokeWeightnumber“Stroke weight in points (default 1 when strokeColor is given)”
    • cornerRadiusnumber“Rounded corner radius in mm (0 = not included)”
    • opacitynumber“Opacity percentage (100 = fully opaque)”
  • list_object_styleson 2 other serversreads or searches

    “List all object styles in the document”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    Takes no inputs.

  • apply_object_styleon 2 other serverscreates or changes datadescribed as changing data

    “Apply an object style to a page item”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    5 inputs, 1 required
    • styleNamestringrequired“Object style name”
    • itemTypestring“Collection itemIndex counts in: page.rectangles, page.ovals, page.polygons, page.textFrames, or pageItem = page.allPageItems (the list_page_items numbering)”
    • itemIndexinteger“Index within the itemType collection on the page”
    • pageIndexinteger“Page index (0-based); defaults to the active page”
    • clearOverridesboolean“Clear local formatting overrides”
  • get_image_infoon 2 other serversreads or searches

    “Get link, resolution, scale and position of a placed graphic on a page”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    2 inputs
    • itemIndexinteger“Index in page.allGraphics (placed graphics, not their frames; not the list_page_items numbering)”
    • pageIndexinteger“Page index (0-based); defaults to the active page”
  • create_paragraph_styleon 1 other servercreates or changes datadescribed as changing data

    “Create a paragraph style; only the attributes you pass are set”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    8 inputs, 1 required
    • namestringrequired“Style name”
    • fontNamestring“Font as "Family\tStyle" (e.g.”
    • fontSizenumber“Font size in points”
    • textColorstring“Text color: swatch name (e.g.”
    • alignmentstring“Paragraph alignment (InDesign Justification; LEFT_JUSTIFIED = justified, last line left)”
    • leadingnumber“Leading in points”
    • spaceBeforenumber“Space before paragraph in points”
    • spaceAfternumber“Space after paragraph in points”
  • create_character_styleon 1 other servercreates or changes datadescribed as changing data

    “Create a character style; only the attributes you pass are set”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    7 inputs, 1 required
    • namestringrequired“Style name”
    • fontNamestring“Font as "Family\tStyle" (e.g.”
    • fontSizenumber“Font size in points”
    • textColorstring“Text color: swatch name (e.g.”
    • boldboolean“Set font style "Bold" ("Bold Italic" with italic)”
    • italicboolean“Set font style "Italic"”
    • underlineboolean“Underline text”
  • apply_paragraph_styleon 2 other serverscreates or changes datadescribed as changing data

    “Apply a paragraph style to all text in a text frame”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    3 inputs, 2 required
    • styleNamestringrequired“Paragraph style name”
    • frameIndexintegerrequired“Index in page.textFrames (top-level text frames only; not the list_page_items numbering)”
    • pageIndexinteger“Page index (0-based); defaults to the active page”
  • apply_character_styleon 1 other servercreates or changes datadescribed as changing data

    “Apply a character style to all text in a text frame, or to a character range”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    5 inputs, 1 required
    • styleNamestringrequired“Character style name”
    • frameIndexinteger“Index in page.textFrames (top-level text frames only; not the list_page_items numbering)”
    • pageIndexinteger“Page index (0-based); defaults to the active page”
    • startIndexinteger“First character index (with endIndex)”
    • endIndexinteger“Last character index (inclusive); -1 applies to the whole frame”
  • list_styleson 12 other serversreads or searches

    “List all paragraph and/or character styles (including styles in style groups)”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    1 input
    • styleTypestring“Which styles to list”
  • create_color_swatchon 1 other servercreates or changes datadescribed as changing data

    “Create a color swatch from RGB values, stored as RGB or converted to CMYK”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    6 inputs, 4 required
    • namestringrequired“Swatch name”
    • colorTypestring“PROCESS for CMYK/RGB process color, SPOT for a spot (ink) color”
    • colorSpacestring“Color space of the swatch (CMYK uses a simple, non-color-managed conversion)”
    • rednumberrequired“Red value (0-255)”
    • greennumberrequired“Green value (0-255)”
    • bluenumberrequired“Blue value (0-255)”
  • list_color_swatcheson 1 other serverreads or searches

    “List all swatches with color model, space and values”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    Takes no inputs.

  • apply_coloron 1 other servercreates or changes datadescribed as changing data

    “Apply a swatch as fill or stroke to a page item, or to the text of a text frame”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    5 inputs, 2 required
    • itemIndexintegerrequired“Index within the targetType collection on the page (see targetType)”
    • colorNamestringrequired“Color: swatch name (e.g.”
    • colorTypestring“Apply the swatch to the fill or the stroke”
    • targetTypestring“Collection itemIndex counts in: pageItem = page.allPageItems (the list_page_items numbering); text and textFrame = page.textFrames (text = the text inside the …”
    • pageIndexinteger“Page index (0-based); defaults to the active page”
  • get_document_infoon 8 other serversreads or searches

    “Get information about the active document (name, path, page/spread/layer counts, page size, bleed and margins in millimetres)”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    Takes no inputs.

  • create_documenton 23 other serverscreates or changes datadescribed as changing data

    “Create a new document and make it active.”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    13 inputs
    • widthnumber“Page width in mm”
    • heightnumber“Page height in mm”
    • pagesinteger“Number of pages”
    • facingPagesboolean“Enable facing pages”
    • pageOrientationstring“Page orientation; width and height are swapped if needed to match”
    • bleedTopnumber“Top bleed in mm”
    • bleedBottomnumber“Bottom bleed in mm”
    • bleedInsidenumber“Inside (left) bleed in mm”
    • bleedOutsidenumber“Outside (right) bleed in mm”
    • marginTopnumber“Top margin in mm”
    • marginBottomnumber“Bottom margin in mm”
    • marginLeftnumber“Left (inside, for facing pages) margin in mm”
    • marginRightnumber“Right (outside, for facing pages) margin in mm”
  • open_documenton 10 other serversreads or searchesdescribed as changing data

    “Open an existing InDesign document (.indd, .indt, .idml) and make it active”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    1 input, 1 required
    • filePathstringrequired“Absolute path to the document file”
  • save_documenton 8 other serverscreates or changes datadescribed as changing data

    “Save the active document.”

    Publisher declares: read-only no · destructive yes · idempotent yes · open-world no

    1 input
    • filePathstring“Absolute path to save to (e.g.”
  • close_documenton 9 other serversdeletesdescribed as changing data

    “Close the active document WITHOUT saving (unsaved changes are discarded)”

    Publisher declares: read-only no · destructive yes · idempotent yes · open-world no

    Takes no inputs.

  • preflight_documenton 2 other serversdescribed as changing data

    “Run a preflight check on the active document with a preflight profile and list the problems found (optionally saving a report)”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    4 inputs
    • profilestring“Preflight profile name, e.g.”
    • reportPathstring“Optional absolute path to save the preflight report (.pdf or .txt)”
    • maxResultsinteger“Maximum number of problems to list”
    • timeoutSecondsinteger“Maximum seconds to wait for preflight to finish”
  • zoom_to_pageon 1 other servercontrols a browser or desktopdescribed as changing data

    “Show a page in the document window: fit the page in the window, or zoom to a given percentage”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    2 inputs, 1 required
    • pageIndexintegerrequired“Zero-based page index to show”
    • zoomLevelnumber“Zoom percentage (5-4000).”
  • data_mergeon 1 other servercreates or changes datadescribed as changing data

    “Data merge: select a CSV or tab-delimited text data source for the active document and (optionally) merge records.”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    8 inputs, 1 required
    • dataSourcestringrequired“Absolute path to the data source file (.csv or tab-delimited .txt)”
    • mergeRecordsboolean“Merge records after selecting the data source.”
    • recordSelectionstring“Which records to merge”
    • recordNumberinteger“Record to merge when recordSelection is ONE_RECORD”
    • recordRangestring“Record range when recordSelection is RANGE, e.g.”
    • recordsPerPagestring“One record per page, or multiple records per page”
    • createNewDocumentboolean“Create a new document for the merged records”
    • removeBlankLinesboolean“Remove blank lines caused by empty fields”
  • get_document_elementson 1 other serverreads or searches

    “Count the elements in the document (text frames, stories, shapes, graphics, tables, groups, layers), including items nested in groups”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    1 input
    • elementTypestring“Which kind of elements to count”
  • get_document_styleson 1 other serverreads or searches

    “List the styles of one type in the document (including styles inside style groups)”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    1 input
    • styleTypestring“Type of styles to list”
  • get_document_colorson 1 other serverreads or searches

    “List the colors (with color model) and optionally the swatches, gradients and tints in the document”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    3 inputs
    • includeSwatchesboolean“Include swatches”
    • includeGradientsboolean“Include gradients”
    • includeTintsboolean“Include tints”
  • get_document_preferenceson 1 other serverreads or searches

    “Read document preferences.”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    1 input
    • preferenceTypestring“Which preference group to read”
  • set_document_preferenceson 1 other servercreates or changes datadescribed as changing data

    “Set document preferences.”

    Publisher declares: read-only no · destructive yes · idempotent yes · open-world no

    5 inputs
    • generalobject“Document setup (DocumentPreference)”
    • marginsobject“Margins and columns (MarginPreference)”
    • guidesobject“Ruler guides (GuidePreference)”
    • textobject“Text (TextPreference)”
    • gridobject“Grids (GridPreference)”
  • get_document_storieson 1 other serverreads or searches

    “List the stories in the document with length, frame count, overset status and a short preview”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    2 inputs
    • oversetOnlyboolean“Only list stories whose text is overset (overflows its frames)”
    • maxStoriesinteger“Maximum number of stories to list”
  • find_text_in_documenton 2 other serverscreates or changes datadescribed as changing data

    “Find (and optionally replace) text across the entire document.”

    Publisher declares: read-only no · destructive yes · idempotent no · open-world no

    5 inputs, 1 required
    • searchTextstringrequired“Text to search for (a GREP pattern when useRegex is true)”
    • replaceTextstring“Replacement text.”
    • caseSensitiveboolean“Case sensitive search”
    • wholeWordboolean“Match whole words only”
    • useRegexboolean“Treat searchText as a GREP pattern (and replaceText may use $1 etc.)”
  • get_document_layerson 1 other serverreads or searches

    “List the layers in the document (top to bottom) with visibility, lock state, printability and item count”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    2 inputs
    • includeHiddenboolean“Include hidden layers”
    • includeLockedboolean“Include locked layers”
  • organize_document_layerson 1 other servercreates or changes datadescribed as changing data

    “Organize document layers: merge layers with duplicate names, delete empty layers, and/or sort layers alphabetically (A at top).”

    Publisher declares: read-only no · destructive yes · idempotent yes · open-world no

    3 inputs
    • mergeSimilarLayersboolean“Merge layers whose names are equal ignoring case, surrounding spaces and a trailing " copy" / " copy N" (default false)”
    • deleteEmptyLayersboolean“Delete layers that contain no page items and no guides (default false)”
    • sortLayersboolean“Sort layers alphabetically by name (default false)”
  • get_document_hyperlinkson 1 other serverreads or searches

    “List the hyperlinks in the document with their sources and destinations”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    2 inputs
    • includeDestinationsboolean“Include link destinations (URL, page or text anchor)”
    • includeSourcesboolean“Include link sources (the linked text or object)”
  • create_document_hyperlinkon 1 other servercreates or changes datadescribed as changing data

    “Create a hyperlink on the first occurrence of sourceText in the document.”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    5 inputs, 1 required
    • sourceTextstringrequired“Existing text in the document to turn into a link (first occurrence, case-sensitive)”
    • linkTypestring“Type of destination”
    • destinationstring“For URL: the URL.”
    • pageIndexinteger“Zero-based destination page index (required for PAGE links)”
    • namestring“Optional hyperlink name (must be unique in the document)”
  • get_document_sectionson 1 other serverreads or searches

    “List the sections in the document with start page, numbering style, start number, prefix and marker”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    Takes no inputs.

  • create_document_sectionon 1 other servercreates or changes datadescribed as changing data

    “Start a new section at a page (or update the section that already starts there) with its own page numbering”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    6 inputs, 1 required
    • startPageintegerrequired“Zero-based index of the page that starts the section”
    • sectionPrefixstring“Section prefix”
    • includeSectionPrefixboolean“Include the prefix when displaying page numbers”
    • markerstring“Section marker text”
    • startNumberinteger“Starting page number.”
    • numberingStylestring“Page number style (PageNumberStyle)”
  • get_document_xml_structureon 1 other serverreads or searches

    “Show the document XML structure: the tag list and/or the element tree (tag, attribute and child counts, text preview)”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    3 inputs
    • includeTagsboolean“Include the list of XML tags”
    • includeElementsboolean“Include the XML element tree”
    • maxDepthinteger“Maximum element tree depth to show”
  • export_document_xmlon 1 other servercreates or changes datadescribed as changing data

    “Export the document XML structure (the Structure pane content) to an XML file”

    Publisher declares: read-only no · destructive yes · idempotent yes · open-world no

    2 inputs, 1 required
    • filePathstringrequired“Absolute path of the XML file to write”
    • includeImagesboolean“Copy original images into an Images folder next to the XML file”
  • save_document_to_cloudon 1 other servercreates or changes datadescribed as changing data

    “Save the active document as an Adobe Creative Cloud document (Document.saveAsCloud / saveACopyCloud).”

    Publisher declares: read-only no · destructive no · idempotent no · open-world yes

    2 inputs, 1 required
    • cloudNamestringrequired“Name for the cloud document”
    • modestring“SAVE_A_COPY keeps the open document as is; SAVE_AS makes the open document the cloud document”
  • open_cloud_documenton 1 other serverreads or searchesdescribed as changing data

    “Open an Adobe Creative Cloud document by its asset reference (app.openCloudDocument).”

    Publisher declares: read-only no · destructive no · idempotent no · open-world yes

    1 input, 1 required
    • cloudDocumentIdstringrequired“Asset reference of the cloud document (as reported by InDesign, e.g.”
  • get_document_grid_settingson 1 other serverreads or searches

    “Get the document grid and baseline grid settings (measurements in millimetres).”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    Takes no inputs.

  • set_document_grid_settingson 1 other servercreates or changes datadescribed as changing data

    “Set document grid and baseline grid settings (GridPreference).”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    14 inputs
    • documentGridShownboolean“documentGridShown”
    • documentGridSnaptoboolean“documentGridSnapto”
    • gridColorstring“gridColor (UIColors)”
    • horizontalGridlineDivisionnumber“horizontalGridlineDivision.”
    • horizontalGridSubdivisioninteger“horizontalGridSubdivision”
    • verticalGridlineDivisionnumber“verticalGridlineDivision.”
    • verticalGridSubdivisioninteger“verticalGridSubdivision”
    • gridsInBackboolean“gridsInBack”
    • baselineGridShownboolean“baselineGridShown”
    • baselineColorstring“baselineColor (UIColors)”
    • baselineStartnumber“baselineStart.”
    • baselineDivisionnumber“baselineDivision.”
    • baselineViewThresholdnumber“baselineViewThreshold”
    • baselineGridRelativeOptionstring“baselineGridRelativeOption (BaselineGridRelativeOption)”
  • get_document_layout_preferenceson 1 other serverreads or searches

    “Get Adjust Layout preferences (document) and Align & Distribute and Smart Guides preferences (application-wide).”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    Takes no inputs.

  • set_document_layout_preferenceson 1 other servercreates or changes datadescribed as changing data

    “Set Adjust Layout preferences (stored in the document) and Align & Distribute / Smart Guides preferences (application-wide in InDesign).”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    3 inputs
    • adjustLayoutobject“Adjust Layout (document, AdjustLayoutPreference)”
    • alignDistributeobject“Align & Distribute (application-wide, AlignDistributePreference)”
    • smartGuidesobject“Smart Guides (application-wide, SmartGuidePreference)”
  • validate_documenton 4 other serversreads or searches

    “Check the document for problems: missing/modified links, missing fonts, missing or low-resolution images, overset text and unused styles”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    6 inputs
    • checkLinksboolean“Report links that are missing, out of date or inaccessible”
    • checkFontsboolean“Report fonts that are not installed (missing, substituted, faux)”
    • checkImagesboolean“Report placed graphics with missing/modified links and images below minImagePpi”
    • minImagePpinumber“Minimum effective resolution for images”
    • checkOversetboolean“Report stories with overset text”
    • checkStylesboolean“Report paragraph and character styles not applied to any text”
  • cleanup_documenton 1 other serverdeletesdescribed as changing data

    “Clean up the document by removing unused paragraph/character styles, unused swatches, empty layers and/or hidden page items.”

    Publisher declares: read-only no · destructive yes · idempotent yes · open-world no

    5 inputs
    • removeUnusedStylesboolean“Remove paragraph and character styles not applied to any text (built-in [bracketed] styles are kept) (default false)”
    • removeUnusedColorsboolean“Remove unused swatches (built-in [bracketed] swatches are kept) (default false)”
    • removeUnusedLayersboolean“Remove layers with no page items and no guides (the last layer is kept) (default false)”
    • removeHiddenElementsboolean“Remove page items that are hidden (visible = false) (default false)”
    • dryRunboolean“Only report what would be removed”
  • export_pdfon 6 other serverscreates or changes datadescribed as changing data

    “Export the active document to PDF using a built-in or named PDF export preset”

    Publisher declares: read-only no · destructive yes · idempotent yes · open-world no

    6 inputs, 1 required
    • filePathstringrequired“Output PDF file path”
    • qualitystring“Preset shortcut: PRESS = [Press Quality], PRINT = [High Quality Print], SCREEN = [Smallest File Size]”
    • presetstring“Exact PDF export preset name (e.g.”
    • includeMarksboolean“Force crop, bleed and registration marks, color bars and page info on (otherwise the preset decides)”
    • includeBleedboolean“Force the document bleed settings on (otherwise the preset decides)”
    • pagesstring“Pages to export: "all", or absolute 1-based page numbers/ranges such as "1-3,5"”
  • export_imageson 1 other servercreates or changes datadescribed as changing data

    “Export pages as JPEG or PNG images, one file per page (page_<n>.jpg/png) in an output folder”

    Publisher declares: read-only no · destructive yes · idempotent yes · open-world no

    5 inputs, 1 required
    • outputPathstringrequired“Output folder path (created if missing)”
    • formatstring“Image format; InDesign exports JPEG and PNG”
    • resolutionnumber“Resolution in PPI (1-2400)”
    • pagesstring“Pages to export: "all", or absolute 1-based page numbers/ranges such as "1-3,5"”
    • qualitynumber“Quality 1-100, mapped to LOW (<=25), MEDIUM (<=50), HIGH (<=80) or MAXIMUM”
  • export_epubon 1 other servercreates or changes datadescribed as changing data

    “Export the active document to EPUB (reflowable or fixed layout)”

    Publisher declares: read-only no · destructive yes · idempotent yes · open-world no

    5 inputs, 1 required
    • filePathstringrequired“Output EPUB file path”
    • layoutstring“REFLOWABLE text that adapts to the reader, or FIXED_LAYOUT that keeps each page as designed”
    • includeStylesboolean“Reflowable only: generate CSS and include style class names in the HTML”
    • embedFontsboolean“Reflowable only: embed fonts”
    • titlestring“EPUB title metadata (defaults to the document setting)”
  • package_documenton 2 other serverscreates or changes datadescribed as changing data

    “Package the active (saved) document for printing into an output folder”

    Publisher declares: read-only no · destructive yes · idempotent no · open-world no

    7 inputs, 1 required
    • outputPathstringrequired“Output folder path (created if missing)”
    • includeFontsboolean“Copy fonts”
    • includeLinksboolean“Copy linked graphics”
    • includeProfilesboolean“Copy color profiles”
    • includeHiddenLayersboolean“Include fonts and links from hidden layers”
    • createReportboolean“Write the instructions/report file”
    • forceSaveboolean“Save the document before packaging if it has unsaved changes”
  • create_bookon 2 other serverscreates or changes datadescribed as changing data

    “Create a new InDesign book file and leave it open (fails if a file already exists at the path)”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    1 input, 1 required
    • filePathstringrequired“Path for the new book file (".indb" is appended if missing)”
  • open_bookon 1 other serverreads or searchesdescribed as changing data

    “Open an existing InDesign book (it stays open)”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    1 input, 1 required
    • filePathstringrequired“Path to the book file”
  • list_bookson 20 other serversreads or searches

    “List the books currently open in InDesign with their file paths and document counts”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    Takes no inputs.

  • add_document_to_bookon 1 other servercreates or changes datadescribed as changing data

    “Add an InDesign document to the end of a book and save the book”

    Publisher declares: read-only no · destructive no · idempotent no · open-world no

    2 inputs, 2 required
    • bookPathstringrequired“Path to the book file”
    • documentPathstringrequired“Path to the document to add”
  • synchronize_bookon 1 other servercreates or changes datadescribed as changing data

    “Synchronize styles, swatches and other enabled options from the book's style source document to all documents, then save the book”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    1 input, 1 required
    • bookPathstringrequired“Path to the book file”
  • repaginate_bookon 1 other servercreates or changes datadescribed as changing data

    “Repaginate all documents in a book and save it”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    1 input, 1 required
    • bookPathstringrequired“Path to the book file”
  • update_all_cross_referenceson 1 other servercreates or changes datadescribed as changing data

    “Update all cross references in a book”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    1 input, 1 required
    • bookPathstringrequired“Path to the book file”
  • update_all_numberson 1 other servercreates or changes datadescribed as changing data

    “Update all numbers (page numbers, chapter numbers, paragraph numbers) in a book”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    1 input, 1 required
    • bookPathstringrequired“Path to the book file”
  • update_chapter_and_paragraph_numberson 1 other servercreates or changes datadescribed as changing data

    “Update chapter and paragraph numbers in a book”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    1 input, 1 required
    • bookPathstringrequired“Path to the book file”
  • export_bookon 1 other servercreates or changes datadescribed as changing data

    “Export an entire book to a single file”

    Publisher declares: read-only no · destructive yes · idempotent no · open-world no

    4 inputs, 2 required
    • bookPathstringrequired“Path to the book file”
    • formatstring“Export format”
    • outputPathstringrequired“Path for the exported file”
    • pdfPresetstring“PDF export preset name for format PDF (e.g.”
  • package_bookon 1 other servercreates or changes datadescribed as changing data

    “Package a book for print production into a folder (created if missing)”

    Publisher declares: read-only no · destructive yes · idempotent no · open-world no

    12 inputs, 2 required
    • bookPathstringrequired“Path to the book file”
    • outputPathstringrequired“Path for the package folder”
    • copyingFontsboolean“Copy fonts to package”
    • copyingLinkedGraphicsboolean“Copy linked graphics”
    • copyingProfilesboolean“Copy color profiles”
    • updatingGraphicsboolean“Update graphics links”
    • includingHiddenLayersboolean“Include hidden layers”
    • ignorePreflightErrorsboolean“Ignore preflight errors”
    • creatingReportboolean“Create package report”
    • includeIdmlboolean“Include IDML file”
    • includePdfboolean“Include PDF file”
    • pdfStylestring“PDF export preset used when includePdf is true”
  • preflight_bookon 1 other servercreates or changes datadescribed as changing data

    “Preflight a book and save the preflight report (PDF, or text if the path ends in .txt).”

    Publisher declares: read-only no · destructive yes · idempotent no · open-world no

    3 inputs, 1 required
    • bookPathstringrequired“Path to the book file”
    • outputPathstring“Path for the preflight report (default: <book name>-preflight.pdf in the system temp folder)”
    • autoOpenboolean“Automatically open the report”
  • print_bookon 1 other serverdescribed as changing data

    “Print every document in a book with a printer preset, optionally showing the print dialog first”

    Publisher declares: read-only no · destructive no · idempotent no · open-world yes

    3 inputs, 1 required
    • bookPathstringrequired“Path to the book file”
    • printDialogboolean“Show the print dialog and wait for the user (leave false for unattended use)”
    • printerPresetstring“Printer preset name (e.g.”
  • get_book_infoon 3 other serversreads or searches

    “Get detailed information about a book”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    1 input, 1 required
    • bookPathstringrequired“Path to the book file”
  • set_book_propertieson 1 other servercreates or changes datadescribed as changing data

    “Set book options (only the ones given) and save the book”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    18 inputs, 1 required
    • bookPathstringrequired“Path to the book file”
    • automaticPaginationboolean“Enable automatic pagination”
    • automaticDocumentConversionboolean“Enable automatic document conversion”
    • insertBlankPageboolean“Insert blank pages as necessary”
    • mergeIdenticalLayersboolean“Merge identical layers when exporting to PDF”
    • synchronizeBulletNumberingListboolean“Synchronize bullets and numbering”
    • synchronizeCellStyleboolean“Synchronize cell styles”
    • synchronizeCharacterStyleboolean“Synchronize character styles”
    • synchronizeConditionalTextboolean“Synchronize conditional text”
    • synchronizeCrossReferenceFormatboolean“Synchronize cross reference formats”
    • synchronizeMasterPageboolean“Synchronize master pages”
    • synchronizeObjectStyleboolean“Synchronize object styles”
    • synchronizeParagraphStyleboolean“Synchronize paragraph styles”
    • synchronizeSwatchboolean“Synchronize swatches”
    • synchronizeTableOfContentStyleboolean“Synchronize table of content styles”
    • synchronizeTableStyleboolean“Synchronize table styles”
    • synchronizeTextVariableboolean“Synchronize text variables”
    • synchronizeTrapStyleboolean“Synchronize trap styles”
  • indesign_statuson 1 other serverreads or searches

    “Health check: platform, resolved InDesign app name, optional live probe (version, open docs).”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    1 input
    • probeboolean“If true, run a lightweight InDesign script to report version and open documents (and, on the UXP backend, the UXP capability probe)”
  • execute_indesign_codeon 1 other serverruns code or commandsdescribed as changing data

    “Execute custom InDesign ExtendScript code”

    Publisher declares: read-only no · destructive yes · idempotent no · open-world no

    1 input, 1 required
    • codestringrequired“ExtendScript code to execute”
  • view_documenton 1 other serverreads or searches

    “View document information and current state”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    Takes no inputs.

  • get_session_infoon 5 other serversreads or searches

    “Get current session information including page dimensions and active document”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    Takes no inputs.

  • clear_sessionon 1 other servercreates or changes datadescribed as changing data

    “Clear all session data including page dimensions and document information”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    Takes no inputs.

  • get_page_item_infoon 1 other serverreads or searches

    “Get detailed information about a specific page item”

    Publisher declares: read-only yes · destructive no · idempotent yes · open-world no

    2 inputs, 2 required
    • pageIndexintegerrequired“Index of the page containing the item (0-based)”
    • itemIndexintegerrequired“Index of the page item to get info for, in page.allPageItems as numbered by list_page_items (nested items included)”
  • select_page_itemon 1 other servercontrols a browser or desktopdescribed as changing data

    “Select a page item (by index from list_page_items) in the document window”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    3 inputs, 2 required
    • pageIndexintegerrequired“Index of the page containing the item (0-based)”
    • itemIndexintegerrequired“Index of the page item to select, in page.allPageItems as numbered by list_page_items (nested items included)”
    • existingSelectionstring“How to handle existing selection”
  • move_page_itemon 1 other servercontrols a browser or desktopdescribed as changing data

    “Move a page item so its top-left corner (geometric bounds) is at x, y mm on the page”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    4 inputs, 4 required
    • pageIndexintegerrequired“Index of the page containing the item (0-based)”
    • itemIndexintegerrequired“Index of the page item to move, in page.allPageItems as numbered by list_page_items (nested items included)”
    • xnumberrequired“New X of the item's top-left corner, in mm from the page left edge”
    • ynumberrequired“New Y of the item's top-left corner, in mm from the page top edge”
  • resize_page_itemon 1 other servercontrols a browser or desktopdescribed as changing data

    “Resize a page item to width x height mm around an anchor point”

    Publisher declares: read-only no · destructive no · idempotent yes · open-world no

    5 inputs, 4 required
    • pageIndexintegerrequired“Index of the page containing the item (0-based)”
    • itemIndexintegerrequired“Index of the page item to resize, in page.allPageItems as numbered by list_page_items (nested items included)”
    • widthnumberrequired“New width in mm”
    • heightnumberrequired“New height in mm”
    • anchorPointstring“Anchor point for resizing”

Each quoted sentence is the first sentence of the publisher’s own description. The kind of tool and the “changes data” mark are our AI model’s reading of that description, not something we tested: two differently worded runs had to agree, otherwise no label is shown, and nobody has checked them by hand. A tool without the “changes data” mark is described as only reading, searching or calculating, or the two runs did not agree. No tool was called. Read the publisher’s full description before relying on it. “Publisher declares” lists the hints the server itself sends with the tool (MCP annotations: read-only, destructive, idempotent, open-world); they are the publisher's claims, not checked by us. Inputs are the parameters in the tool's own input schema: name, declared type, whether it is required, and the first sentence of its description. The first 100 of 137 tools are listed. Read 2026-10-23.

How well are its tools described?

Features #4 and #5

How clearly this server's own tool descriptions say what a tool does, and how consistent its tool list is. The first part is an AI model's yes/no reading of each description; the second part is counted. We do not turn it into a grade.

Descriptions

AI reading of each description

Says what the tool does
100% of 120 tools
Says what it returns
27% of 118 tools
States limits, defaults or errors
4% of 116 tools
Says when to use it
0% of 120 tools
Items covered per tool
1.3 of 4 on average

Counted from the listing

Parameters with a description
100% of 515
Tools with a description
100% of 137
Typical description length
98 characters

The tool set

Counted from the listing

Tools
137
Size of the list
about 30,525 tokens for an agent to load (characters ÷ 4)
Naming
135 of 137 names use snake_case

AI reading: easy to mix up

No pair found.

The AI items cover 120 of 137 tools: for a tool where two differently worded runs disagreed, that item is left out. They were not checked by hand, and no tool was called. “Easy to mix up” means two tools whose names or descriptions overlap without saying how they differ; the AI found none, comparing tools within groups of 40. We do not rate whether the tool set is complete or whether side effects are spelled out, because our AI reading of those was not reliable enough.

How do I add it to my client?

Config from the registry entry

From the npm package indesign-mcp-server

Our sandbox started this package on 2026-10-23 (a read-only session: no tool was called).

Add to CursorAn install link in the format Cursor documents, holding the Cursor config below. The command runs the publisher’s code on your machine.

Claude Desktop · claude_desktop_config.json (Settings → Developer → Edit Config)
{
  "mcpServers": {
    "indesign-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "indesign-mcp-server@2.3.0"
      ]
    }
  }
}
Cursor · .cursor/mcp.json in a project, or ~/.cursor/mcp.json
{
  "mcpServers": {
    "indesign-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "indesign-mcp-server@2.3.0"
      ]
    }
  }
}
VS Code · .vscode/mcp.json
{
  "servers": {
    "indesign-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "indesign-mcp-server@2.3.0"
      ]
    }
  }
}
VS Code (command line) · Bash or zsh terminal (macOS, Linux)
code --add-mcp '{"name":"indesign-mcp-server","type":"stdio","command":"npx","args":["-y","indesign-mcp-server@2.3.0"]}'
Claude Code
claude mcp add --transport stdio indesign-mcp-server -- npx -y indesign-mcp-server@2.3.0
Try it in the MCP Inspector · runs on your machine, opens in your browser · Node 22.19+
npx @modelcontextprotocol/inspector@2.11.0 -- npx -y indesign-mcp-server@2.3.0
  • Optional settings the entry also lists (left out above): INDESIGN_APP_NAME, INDESIGN_ALLOWED_DIRS, INDESIGN_BACKEND.
  • This runs the publisher's code on your machine (npx). Read its README first.
  • The MCP Inspector lists the server's tools, resources and prompts; a tool you call there runs for real.

Built from the server's registry entry with each client's documented format (checked 2026-10-14; the Cursor link and the VS Code command 2026-10-19; the MCP Inspector command 2026-10-21). Values in < > are yours to fill in; this page never contains a key. Where the server needs a setting the entry does not declare, it can still fail to start.

Can it be installed, and is it up to date?

Version pin · advisories

Listed version

Registry lists
2.3.0
Latest stable
2.3.0
Status
current
Withdrawn
deprecated upstream

“Renamed to adobe-mcp-indesign. Replace the package name in your MCP client configuration: npx -y adobe-mcp-indesign” — the publisher's message

Source: registry.npmjs.org · 2026-10-23. About the version the registry lists; a manual install may resolve to a different one.

Dependency advisories

critical0high0moderate0low0

Counted in the full dependency tree as resolved on 2026-10-23 (npm audit). Bars share one scale. The package itself has no known vulnerability (OSV.dev).

Integrity, provenance, license

Integrity
sha512-+vJUfcUDryYvRSiM/…
Signature
signed
License
MIT

Source: the package registry · 2026-10-23.

Usage

Downloads
69 in the last month

Source: api.npmjs.org · 2026-10-23.

Does the registry listing match what we found?

Feature #6

The registry verifies a package once, when it is published, and does not re-check it. A difference below is about the listing, not a judgement of the publisher.

Registry saysWe foundResultSource · date
Published package can be startedStarted and answeredmatchesour test · 2026-10-23
Version 2.3.0 on npmExists and can be installedmatchesnpm · 2026-10-23
Repository github.com/zachshallbetter/indesign-mcp-serverOpens publiclymatchesapi.github.com · 2026-10-23

Who made it?

Feature #7 · lineage

Facts about the publisher. We do not turn them into a trust score.

Namespace
io.github.zachshallbetter · 7 servers
GitHub owner
a personal account (zachshallbetter)
Build record
signed
Repository
github.com/zachshallbetter/indesign-mcp-server
Stars
26
Repository age
over a year
Last push
0–30 days ago
Archived
no
Security policy
SECURITY.md

Source: the registry entry and api.github.com · 2026-10-23; security policy read from GitHub · 2026-10-23.

Publish this server? Run these checks against it yourself before release, from your own machine: a server the command starts, or your own server at its URL after a one-time proof that you control it: npx protocolprobe-selftest.

Choosing

Record checks

Public records · not a safety rating

6 of 9 record checks met

  • Not ranked by downloads: deprecated in the registry
  • Not ranked by stars: deprecated in the registry
  • Not metRegistry entry is active and says how to run itThe registry marks this entry as deprecated.
  • MetSource repository link opensThe linked GitHub repository is public.
  • MetRepository is not archivedNot archived.
  • MetCode pushed to the repository in the 90 days before our checkLast push 0-30 days before our check.
  • MetRepository publishes a security policy (SECURITY.md)SECURITY.md found.
  • MetPackage names its licence with a standard (SPDX) identifierMIT
  • Not metThe version the registry lists can be installed and is not withdrawnThe listed version is deprecated (npm) or yanked (PyPI).
  • Not metnpm package carries build provenance (attestation)Signed by npm, but no build attestation.
  • MetNo known critical or high advisory in the package or its dependenciesNone known in the package or its dependency tree.

Read from public records only: the registry entry, npm/PyPI, GitHub and advisory databases, checked 2026-10-23. No tool was called. Only “met” and “not met” are counted, so the total differs between servers; a check that does not apply or that we could not run is listed, never counted against it. It is not a safety rating. How each check works · Leaderboards

Common questions about io.github.zachshallbetter/indesign-mcp-server

Answered from the data above

Is io.github.zachshallbetter/indesign-mcp-server safe to install?

We do not rate servers as safe or unsafe. 6 of its 9 applicable record checks are met (facts from public records, each listed on this page). What the records show: Its source repository opens publicly. Its repository had a push in the last 90 days. Its registry entry is marked deprecated. The listed version is the latest stable release. The package itself has no known vulnerability (OSV.dev). Its full dependency tree has no known advisory. 90 of its tools describe changing data (our AI model's reading of the descriptions). These are facts with their sources on this page, not a safety guarantee, and we did not run its tools.

Has io.github.zachshallbetter/indesign-mcp-server been security tested?

Partly. 2 of the 12 checks that apply to it were exercised. We started the package in an isolated sandbox and read what it declares, but this test round was read-only, so its tools were not called. No security verdict is published before verification.

What can io.github.zachshallbetter/indesign-mcp-server do?

It lists 137 tools. In our AI model's reading of their descriptions (two runs had to agree, nobody checked it by hand), they include tools that read or search, create or change data, delete, run code or commands and control a browser or desktop. We did not call any tool, so this describes the text, not the behaviour.

Can io.github.zachshallbetter/indesign-mcp-server change or delete data?

90 of its tools say in their description that they create, edit, delete, send or run something (our AI model's reading). We did not call any tool, so we cannot say what actually happens.

Does io.github.zachshallbetter/indesign-mcp-server publish a security policy?

Yes: its repository has a public security policy (github.com/zachshallbetter/indesign-mcp-server/blob/HEAD/SECURITY.md). That is the publisher's statement, not permission for us to test the server, and we call none of its tools.

Is the listed version current?

Yes. The registry lists 2.3.0, the latest stable release on npm.

Where is the source code of io.github.zachshallbetter/indesign-mcp-server?

In github.com/zachshallbetter/indesign-mcp-server, which opens publicly.

Found this page useful?

Anonymous · no sign-in

A quick, anonymous reaction — no account, no email. One per kind from your browser. The tally updates when the page is next refreshed, and it is only a rough count, never a safety rating or a measured number of people.

Similar servers

Same topic · AI-read

Active servers whose topic is also “media-and-design” and that have at least one tool of the same kind; most kinds in common first, then most GitHub stars. The topic and the tool kinds are an AI model's reading of the publishers' descriptions, not checked by hand. Similar is not a recommendation.

Compare with another server

Side by side: registry entry, our read-only session, the tools and the 18 classification fields. Same values as each page; no score.

Security testing

What did we test, and what did we leave out?

18 checks · features #1, #2

Not probed (read-only run)

We started the package in an isolated sandbox and read what it declares, but this test round was read-only, so its tools were not called. No security score is given; a check we did not run is never counted as passed.

The 18 checks at a glanceour test · 2026-10-23
  1. Inventory: exercised
  2. Hidden instructions: exercised
  3. Real execution: not run · our policy
  4. Secret leak: not run · nothing to check it against
  5. Internal addresses: not run · our policy
  6. Unconfirmed changes: not run · our policy
  7. Bad input: not run · our policy
  8. Model requests: not run · nothing to check it against
  9. Sensitive questions: not run · nothing to check it against
  10. Folder boundary: not run · our policy
  11. Log leaks: not run · nothing to check it against
  12. Hidden content: not run · nothing to check it against
  13. Fake assistant turns: not applicable
  14. Token passthrough: not applicable
  15. Token audience: not applicable
  16. Sign-in redirect: not applicable
  17. Consent handling: not applicable
  18. Sign-in metadata: not applicable

2 exercised10 not run (reason given)6 not applicable

Each check ends in exactly one state: exercised, not run (with the reason), or not applicable (with the reason). 2 of the 12 checks that apply to it were exercised. We do not publish security-check outcomes for named servers.

Exercised · 2
  • 1Inventory
    tool-list
    Reads the declared tools, resources and prompts.exercised
  • 2Hidden instructions
    description-poisoning
    Looks for hidden instructions in tool descriptions.exercised
Not run, with the reason · 10
  • 3Real execution
    real-execution
    Calls a tool and checks what really happens.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy
  • 4Secret leak
    canary-leak
    Plants a fake secret and checks whether it leaks.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against
  • 5Internal addresses
    ssrf
    Checks whether a tool can be steered to internal addresses.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy
  • 6Unconfirmed changes
    write-without-confirmation
    Checks whether tools that change data act without asking.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy
  • 7Bad input
    error-handling
    Sends bad input and watches how the server answers.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy
  • 8Model requests
    sampling
    Checks whether the server asks the client's model to act for it.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against
  • 9Sensitive questions
    elicitation-sensitive-data
    Checks whether the server asks users for sensitive data.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against
  • 10Folder boundary
    root-boundary
    Checks whether the server reaches outside the folders it was given.This check calls the package's tools. This test round was read-only, so no tool was called; tools can act on outside services with the publisher's or a user's account.not run · our policy
  • 11Log leaks
    logging-side-channel
    Checks whether log messages carry data they should not.This check needs at least one successful tool call to have something to check, and no tool was called.not run · nothing to check it against
  • 12Hidden content
    audience-hiding
    Checks resources that hide content from the user.This check needs content the server returns, and nothing was read or called.not run · nothing to check it against
Does not apply to this server · 6
  • 13Fake assistant turns
    fake-assistant-turn
    Checks prompts that pose as the assistant's own words.The server exposes no prompts.not applicable
  • 14Token passthrough
    token-passthrough
    Checks whether the server forwards a user's token to other services.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable
  • 15Token audience
    token-audience-validation
    Checks whether tokens meant for another service are accepted.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable
  • 16Sign-in redirect
    open-redirect
    Checks the sign-in redirect for abuse.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable
  • 17Consent handling
    confused-deputy
    Checks consent handling when one service acts for another.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable
  • 18Sign-in metadata
    oauth-url-scheme
    Checks the published sign-in metadata for unsafe URLs.The server runs locally over standard input/output, so there is no sign-in flow to check.not applicable

Source: our own test in an isolated sandbox, 2026-10-23, mcp-runtime-engine@0.1.0. Which checks count and why follows our published scoring model.

What happened during the test?

Feature #8

The steps in order, as the test record holds them.

  1. 0 msStarted the published package in an isolated sandbox (read-only mode)
  2. 3,743 msConnected after 0 redirects.
  3. Read the inventory: 137 tools, 0 resources, 0 prompts.
  4. 4,652 msFinished: 2 checks exercised.

Reference

How is it classified?

18 fields

One value per field, each with its source. Fields written by AI models are marked. A field with no value says why.

TopicAI-classified
AI-classified · 2026-10-23
Pricing modelAI-classified
not checked
no website in the registry entry
Programming language
api.github.com · 2026-10-23
Hosting type
registry · 2026-10-23
MCP capability
tools
our test · 2026-10-23
Transport
standard input/output
registry · 2026-10-23
Required credentials
none declared
registry · no declaration is not a guarantee
Package registry
registry · 2026-10-23
Freshness
0–30 days
registry updatedAt · 2026-10-23
Lifecycle status
registry · 2026-10-23
License class
package registry · 2026-10-23
Integrity hash
declared (sri)
package registry · 2026-10-23
Signature / provenance
signed
package registry · 2026-10-23
Dependency advisories
none known
npm audit · 2026-10-23
Popularity
69 downloads a month
package registry · 2026-10-23
Publisher signals
owner: a personal account · repository age: over a year · stars: 10–99 · build record: signed
api.github.com · 2026-10-23
Maintenance
api.github.com · 2026-10-23
Environment
your machine
where it runs, from the hosting type

“Not stated” means the source did not state it; “does not apply” means it does not apply to this kind of server; “our limit” means our own lookup failed. A linked value opens the directory filtered to the same value.

Cite or correct this page

Sources and corrections

Suggested citation

ProtocolProbe. “io.github.zachshallbetter/indesign-mcp-server: MCP server record.” Data checked 2026-10-23. https://protocolprobe.com/mcp/servers/io.github.zachshallbetter/indesign-mcp-server

Figures are valid for the date shown. Our facts on this page are CC BY 4.0: reuse them with a link and the check date. Quoted text (the publisher’s descriptions, website quotes, tool names) is not ours to license.

As JSON: this record in the API · API documentation.

Badge for your README

ProtocolProbe: 6 of 9 record checks met

[![ProtocolProbe](https://protocolprobe.com/api/v1/badge/io.github.zachshallbetter/indesign-mcp-server)](https://protocolprobe.com/mcp/servers/io.github.zachshallbetter/indesign-mcp-server)

It shows this server's record-check count: facts from public records, no tool called. It is not a security rating or a pass. It links here and updates after each data reload.

Something wrong, or is this yours?

If a fact here is wrong, tell us and we will re-check it. If you operate this server, you can run our checks on it yourself with the free self-test command; we call no server’s tools ourselves for anything shown here.

Write to hello@protocolprobe.com · corrections log · methodology