Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

LayoutBridge for Adobe InDesign®

NPM · LAYOUTBRIDGE-SPM · SCANNED SEP 26

layoutbridge-spm – MCP server for Adobe® InDesign®: pages, frames, text, styles, tables, export

Available components

60 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 31 of 95 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency6
Schema Quality & AI Usability64
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 37080 tokens (~337/item across 110 items; 110 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 110 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

How do I install the LayoutBridge for Adobe InDesign® MCP server?

LayoutBridge for Adobe InDesign® runs locally as an npm package, launched with npx -y layoutbridge-spm. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · layoutbridge-spm

# add to Claude Code
claude mcp add com-mcp-interfaces-layoutbridge-spm -- npx -y layoutbridge-spm
// .cursor/mcp.json
{
  "mcpServers": {
    "com-mcp-interfaces-layoutbridge-spm": {
      "command": "npx",
      "args": [
        "-y",
        "layoutbridge-spm"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "com-mcp-interfaces-layoutbridge-spm": {
      "command": "npx",
      "args": [
        "-y",
        "layoutbridge-spm"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add com-mcp-interfaces-layoutbridge-spm -- npx -y layoutbridge-spm
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-mcp-interfaces-layoutbridge-spm": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "layoutbridge-spm"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-mcp-interfaces-layoutbridge-spm --command npx --arg -y --arg layoutbridge-spm
# ~/.hermes/config.yaml
mcp_servers:
  com-mcp-interfaces-layoutbridge-spm:
    command: "npx"
    args: ["-y", "layoutbridge-spm"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "com-mcp-interfaces-layoutbridge-spm": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "layoutbridge-spm"
      ]
    }
  }
}
# add to Vellum
assistant mcp add com-mcp-interfaces-layoutbridge-spm -t stdio -c npx -a -y layoutbridge-spm
// mcp.json
{
  "mcpServers": {
    "com-mcp-interfaces-layoutbridge-spm": {
      "command": "npx",
      "args": [
        "-y",
        "layoutbridge-spm"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 24 Sept 26 +10
    • Known CVEs: unverified → pass ▲ security
    • Dependency health: unverified → 0.85 ▲ functional
  • 23 Sept 26 50

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 26 Sept 2026 · Analysed npm/layoutbridge-spm@1.0.1

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 95 packages
Packages resolved 95
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 110 exposed · ~37,080 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
add_page ~283

Add a page at "start", at "end" (default) or relative to a page: { after_page_id } or { before_page_id } – not position or at_index. Returns page_id, index, name and spread_page_count of the spread (Druckbogen) the page landed on, with a warning when that spread now has more than two pages (with "allow pages to shuffle" off InDesign appends to the existing spread; repair with move_pages_to_new_spread). New pages do not inherit a master page – call apply_parent_to_page. The layout window keeps its view (keep_view, default true); pass keep_view false to let InDesign show the new page, or call show_page.

NameTypeReqDescription
at––"start", "end", { after_page_id } or { before_page_id }. Default "end".
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
keep_viewboolean–Restore the previous view (page and zoom of the layout window) afterwards – InDesign otherwise jumps to the new page. Default true; false lets the view move. The answer carries view_restored (null wh…

No output schema declared.

No examples provided.

align_objects ~320

Align (mode align) or distribute (mode distribute) several objects on one spread like the Align panel (Ausrichten): edge left, horizontal_center, right, top, vertical_center, bottom – for distribute also horizontal_space and vertical_space (equal gaps; with spacing_mm a fixed gap). relative_to selection (default: the objects' common bounds), key_object (with key_frame_id, the key stays put), margins, page or spread. Groups move as a whole; members of a group, objects on other spreads and locked layers are refused. Returns objects[] {frame_id, bounds_mm} after, before, moved_count (warning when nothing moved). All coordinates are page millimetres of the page each object lands on.

NameTypeReqDescription
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
edgestringyesWhich edges or centres; *_space only for distribute.
frame_idsarrayyesObjects to align or distribute (2 or more; 1 is enough when aligning to margins, page or spread).
key_frame_idinteger–relative_to key_object: the object that stays in place (one of frame_ids).
modestring–align (default) or distribute.
relative_tostring–Reference bounds. Default selection.
spacing_mmnumber–distribute: fixed distance in mm instead of equal distribution.

No output schema declared.

No examples provided.

anchor_frame_in_text ~538

Anchor a frame, picture, line or group at a text position (verankertes Objekt) so it moves with the text on reflow: target_frame_id names a frame of the story, index the character position (default: end of the story), position inline (on the baseline), above_line, or custom with offset_mm {x, y}, anchor_point, horizontal_reference (anchor_location, column_edge, text_frame, page_margins, page_edge), vertical_reference (line_baseline, line_xheight, line_ascent, cap_height, top_of_leading, embox_top, embox_middle, embox_bottom, column_edge, text_frame, page_margins, page_edge), horizontal_alignment (left, center, right, text), vertical_alignment (top, center, bottom), keep_within_frame, lock_position. The object leaves its page and becomes part of the story (an U+FFFC character at index). Returns frame_id (read back; a new id is warned), story_id, index, story_length, settings, bounds_mm, page_id and story_overset (warning). Fails on group members, already anchored objects, a frame of the target story, locked layers. An anchored object leaves its place on the page and follows the text on reflow – anchor deliberately (captions, marginalia, inline symbols) and leave objects that must keep their position unanchored.

NameTypeReqDescription
anchor_pointstring–custom only: reference point on the object.
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
frame_idintegeryesObject id from get_page_state.
horizontal_alignmentstring–custom only.
horizontal_referencestring–custom only.
indexinteger–Character index in the story (0 = before the first character). Default: end of the story.
keep_within_frameboolean–custom only: keep the object within the top and bottom of the text frame (pin position).
lock_positionboolean–custom only: prevent manual dragging.
offset_mmobject–custom only: offset in mm (x right, y down).
positionstring–inline (default), above_line or custom.
target_frame_idintegeryesA text frame of the story to anchor into.
vertical_alignmentstring–custom only.
vertical_referencestring–custom only.

No output schema declared.

No examples provided.

apply_character_format_to_range ~416

Local character formatting without a style for the characters start_index (inclusive) to end_index (exclusive) of the story of a text frame: font_style (exact InDesign style name – fetch it with get_font_info_at_index first, "75 Bold" rather than "Bold"; optional font_family to switch the family), swatch_name (an existing swatch, exact name; built-ins are "Black", "Paper", "None"), superscript (true/false), tracking (Laufweite in 1/1000 em, -1000 to 10000; the server configuration can set a tolerance beyond which a warning is given), point_size (0–1296, the only way to a size without a paragraph style). At least one attribute. Never changes text. Returns applied[], point_size_applied, font_family, font_style and fill_color read back at the first character for a cross-check, plus characters_affected.

NameTypeReqDescription
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
end_indexintegeryesEnd of the range (exclusive); must be greater than start_index.
font_familystring–Font family to switch to (optional; needs the font to be installed unless font_style is given too).
font_stylestring–Exact style name within the family, e.g. "75 Bold".
frame_idintegeryesObject id from get_page_state.
point_sizenumber–Point size.
start_indexintegeryesFirst character of the range (inclusive), a story index from get_frame_text.
superscriptboolean–true sets superscript, false resets to normal position.
swatch_namestring–Existing swatch name for the text colour.
trackingnumber–Tracking in 1/1000 em.

No output schema declared.

No examples provided.

apply_character_style_to_range ~276

Apply an existing character style (Zeichenformat) to the characters start_index (inclusive) to end_index (exclusive) of the story of a text frame. The style must exist (define_character_style; list_paragraph_styles lists them). Never changes text. Returns frame_id, characters_affected, style_applied and tracking {effective, character_style, paragraph_style}: a character style that carries its own tracking replaces the tracking of the paragraph style for that range (it is not added) – a paragraph style with tracking 100 plus a character style with tracking 260 gives 260, visibly wider. effective is what InDesign uses at the first character of the range; character_style is null when the style leaves tracking alone.

NameTypeReqDescription
character_style_namestringyesExisting character style name.
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
end_indexintegeryesEnd of the range (exclusive); must be greater than start_index.
frame_idintegeryesObject id from get_page_state.
start_indexintegeryesFirst character of the range (inclusive), a story index from get_frame_text.

No output schema declared.

No examples provided.

apply_object_style ~223

Apply an object style (Objektformat) to a frame, line or group by exact name; clear_overrides true (default) removes local overrides of the categories the style sets. Unknown names are not_found with the available names in the details. Returns style_name (read back), style_id, previous_style_name, changed, bounds_mm and bounds_changed (auto-size or fitting options can move the frame), appearance {fill_color, stroke_color, stroke_weight_pt} and overset for text frames (warning). Fails with invalid_state on locked layers and locked objects.

NameTypeReqDescription
clear_overridesboolean–Clear local overrides while applying. Default true.
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
frame_idintegeryesObject id from get_page_state.
style_namestringyesObject style name, exact, as list_object_styles returns it.

No output schema declared.

No examples provided.

apply_paragraph_style ~232

Apply a paragraph style (Absatzformat) to every paragraph of a text frame. By default (clear_overrides true) local formatting and character styles are cleared first, so the print matches the style, not only its name; with clear_overrides false deliberate local bold or italic stays, and so does every stray override. For a threaded frame only the paragraphs touching this frame are formatted – use apply_paragraph_style_to_range over the whole story (0 to story_length from get_frame_text) for the rest. Returns frame_id, style_applied, affected_paragraphs, overrides_cleared and threaded.

NameTypeReqDescription
clear_overridesboolean–Clear local character formatting and character styles first. Default true.
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
frame_idintegeryesObject id from get_page_state.
style_namestringyesParagraph style name (see list_paragraph_styles).

No output schema declared.

No examples provided.

apply_paragraph_style_to_range ~275

Apply a paragraph style (Absatzformat) to every paragraph touched by the character range start_index (inclusive) to end_index (exclusive) of the story of a text frame. Clears paragraph overrides, character styles and local character formatting of those paragraphs; never changes text. Caveat: when start_index is the paragraph mark of the preceding paragraph, that paragraph is formatted too (warning) – start one character later. Recommended order: base style over the whole story first, then the special styles. One call is enough (it runs the clean-up twice internally). Returns frame_id, story_id, style_applied, affected_paragraphs, first_paragraph_start_index and last_paragraph_end_index.

NameTypeReqDescription
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
end_indexintegeryesEnd of the range (exclusive); must be greater than start_index.
frame_idintegeryesObject id from get_page_state.
start_indexintegeryesFirst character of the range (inclusive), a story index from get_frame_text.
style_namestringyesParagraph style name (see list_paragraph_styles).

No output schema declared.

No examples provided.

apply_parent_to_page ~171

Apply the master spread parent_name (full name with prefix, e.g. "A-Footer") to page_id. "[None]", "none" or "Ohne" detaches the page from its master – an ad page loses header, footer line and page number in one step. Returns page_id and parent_applied as InDesign reports it afterwards.

NameTypeReqDescription
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
page_idintegeryesPage from list_pages (or a master page from list_parent_pages).
parent_namestringyesFull master name with prefix, or "[None]" to detach.

No output schema declared.

No examples provided.

check_typography ~713

Find violations of general typesetting rules and report them – never change anything. The rule catalogue is a data table in the package (rules/typography-rules.json): character rules run as InDesign GREP searches (double_space, space_before_punct, straight_quotes, apostrophe, hyphen_as_dash, dash_spacing, three_dots, number_unit_space, number_unit_missing_space, abbreviation_space, thousands_grouping, empty_paragraph, double_paragraph_break, tab_as_indent, trailing_space); line rules run on the composed lines of every text frame like get_frame_lines (widow – Hurenkind, error; orphan – Schusterjunge, warning; heading_at_column_end; single_word_last_line; hyphen_ladder with max_consecutive_hyphens, default 3; empty_line_at_column_start; column_first_baselines_differ, more than 0.1 mm). locale de (default), de-CH (guillemets) or en (curly quotes, closed em dash, no space before %). scope document (default), frame or story (both need frame_id). rules[] limits to those ids, exclude_rules[] drops some; unknown ids are invalid_argument. Returns findings[] {rule_id, severity, category, message, story_id, frame_id, page_id, page_name, start_index, end_index (story indices for the *_to_range tools), snippet, suggestion (often a find_replace GREP pattern)}, counts per rule_id, rules_checked[], rules_failed[] (a GREP pattern InDesign rejected – warning, the rest runs), frames_checked, findings_dropped and truncated (max_findings caps only findings[]; every rule still runs and counts stays complete). Sources: Forssman/de Jong (Detailtypografie), Duden (Satz und Korrektur), DIN 5008, Bier (typokurz), Bringhurst (locale en). Not checked: spelling, grammar, content, text inside placed graphics; table cells are skipped in this version (warning tables_skipped). Read-only.

NameTypeReqDescription
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
exclude_rulesarray–Rule ids to skip.
frame_idinteger–Object id of a text frame for scope frame or story.
include_locked_layersboolean–Also check frames on locked layers. Default false.
include_master_pagesboolean–Also check master pages. Default false.
localestring–Rule language: de (default), de-CH or en.
max_consecutive_hyphensinteger–hyphen_ladder: allowed consecutive hyphenated lines. Default 3 (Forssman/de Jong).
max_findingsinteger–Cap for findings[]. Default 500.
min_last_line_charsinteger–single_word_last_line: also report last lines shorter than this many characters. Default 0 = single words only.
rulesarray–Rule ids to check. Default: every rule of the locale.
scopestring–document (default), frame (only the frame) or story (all frames of its story); frame and story need frame_id.
severity_minstring–Report only findings of this severity or above. Default info.

No output schema declared.

No examples provided.

clear_frame_content ~153

Remove the placed graphic from a frame and keep the frame itself – position, size, stroke, corners, object style and stacking order stay, for recycled layouts. Text is left untouched (use set_text with "" for that). Returns frame_id and graphics_removed (0 when the frame was empty already), plus removed_link_names. No undo for the removed graphic; the link on disk is not deleted.

NameTypeReqDescription
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
frame_idintegeryesFrame to empty, from get_page_state.

No output schema declared.

No examples provided.

close_document ~184

Close a document. save_changes is required and has no default, because InDesign save dialogs are suppressed. Pass path to save under a new name; it is required for a document that has never been saved when save_changes is "yes". Returns saved_to, had_unsaved_changes and the remaining document ids. Note: merely opening a document can already set had_unsaved_changes true.

NameTypeReqDescription
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
pathstring–Save-as target path. Required when save_changes is "yes" and the document was never saved.
save_changesstringyesRequired. "yes" saves before closing, "no" discards unsaved changes.

No output schema declared.

No examples provided.

convert_text_to_outlines ~277

Convert the text of a text frame into paths (in Pfade umwandeln) – a headline as a graphic, independent of installed fonts. Irreversible: there is no undo through this interface; confirm true is required. delete_original true (default) replaces the frame with the outlines; false keeps the text frame and puts the outlines on top of it. Refused (invalid_state): empty frames, threaded frames (the story runs over more than one frame), frames with overset text, frames on locked layers. Tables inside the frame give a warning – check the result. Returns frame_id of the new object, type (group or polygon), member_count, bounds_mm, page_id, page_name, source_frame_id, source_deleted, characters_converted and fonts_used[] {family, style}; warns that the text is no longer searchable or editable.

NameTypeReqDescription
confirmbooleanyesRequired: true confirms the irreversible conversion.
delete_originalboolean–Remove the text frame after converting. Default true.
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
frame_idintegeryesObject id from get_page_state.

No output schema declared.

No examples provided.

create_document ~333

Create a new document. Page size from preset (A4, Letter, Legal, Tabloid) or width_mm/height_mm, orientation portrait or landscape, pages (default 1), facing_pages (Doppelseiten, default true). margins_mm is required: { top, bottom, left, right } or { top, bottom, inside, outside } – for facing pages InDesign treats left as the inside margin (Bundsteg) and right as the outside margin. columns { count, gutter_mm } sets the column guides (Spaltenhilfslinien). Returns document_id and page_ids plus the page size InDesign actually set. The document is untitled until save_document. Note: if this call times out, the document may still have been created – check list_documents before repeating.

NameTypeReqDescription
columnsobject–Column guides: count and gutter (Spaltenabstand) in millimetres.
facing_pagesboolean–Facing pages (Doppelseiten). Default true.
height_mmnumber–Page height in millimetres. Overrides the preset height.
margins_mmobjectyesRequired. Margins (Stege) in millimetres: top/bottom plus left/right or inside/outside.
orientationstring–Swaps width and height when they do not match. Default portrait.
pagesinteger–Number of pages. Default 1.
presetstring–Page size preset. Alternative to width_mm/height_mm.
width_mmnumber–Page width in millimetres. Overrides the preset width.

No output schema declared.

No examples provided.

create_ellipse ~768

Create an ellipse (Ellipse) as a frame without content on page_id at bounds_mm – the bounding rectangle without the stroke; width equal to height gives a circle. Colour, stroke, tint, gradient angle, text_wrap, layer_name and name as in create_rectangle: fill_hex / fill_swatch_name (colour, tint or gradient swatch), stroke_hex / stroke_swatch_name, stroke_weight_pt (a stroke colour without weight gets 1 pt with a warning), fill_tint_percent, stroke_tint_percent, gradient_fill_angle_deg (only with a gradient swatch), text_wrap none | bounding_box | object_shape (without it the document default – pass "none" when text lies underneath). Without colours the fill and stroke are [None] with 0 pt, so nothing prints. Returns frame_id, type "ellipse", bounds_mm, page_id, landed_on_page_id, landed_on_page_name, fill_color, fill_kind (none, color, tint, gradient), stroke_color, stroke_kind, stroke_weight_pt, fill_tint_percent, gradient_fill_angle_deg, text_wrap_mode, layer_name, swatch_ids (empty when only swatch names were used). Use place_image to put a picture into it. A timed-out call may still have created the object – check get_page_state before repeating.

NameTypeReqDescription
bounds_mmobjectyesPosition and size in mm from the top left corner of the page (or spread with coordinate_space "spread").
coordinate_spacestring–Reference for x/y: "page" (default) is the top left corner of page_id, identical on left and right pages; "spread" is the top left corner of the spread (Druckbogen) – the right page of a spread start…
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
fill_hexstring–Fill colour as hex, e.g. "#E30613". Creates an RGB swatch.
fill_swatch_namestring–Exact name of an existing swatch for the fill – colour, tint or gradient swatch (see list_swatches). Not together with fill_hex.
fill_tint_percentnumber–Tint of the fill swatch in percent (0–100).
gradient_fill_angle_degnumber–Angle of a linear gradient fill in degrees (-180 to 180); only visible with a gradient swatch as fill.
gradient_stroke_angle_degnumber–Angle of a linear gradient stroke in degrees (-180 to 180); only visible with a gradient swatch as stroke.
layer_namestring–Existing layer to create the object on (see list_layers). Default: the active layer.
namestring–Object name (label), shown in InDesign's layers panel.
page_idintegeryesPage from list_pages or list_parent_pages.
stroke_hexstring–Stroke colour as hex. Creates an RGB swatch.
stroke_swatch_namestring–Exact name of an existing swatch for the stroke (colour, tint or gradient). Not together with stroke_hex.
stroke_tint_percentnumber–Tint of the stroke swatch in percent (0–100).
stroke_weight_ptnumber–Stroke weight in points (1 pt with a warning when a stroke colour is given without it).
text_wrapstring–Text wrap of the new object: none, bounding_box or object_shape. Without it the document default applies – pass "none" when text lies underneath.

No output schema declared.

No examples provided.

create_gradient_swatch ~394

Create a gradient swatch (Verlaufsfarbfeld) named name with type linear (default) or radial and stops[] (2–20, in order): each stop names exactly one of swatch_name (an existing colour or tint swatch – not a gradient or mixed ink), hex (creates an RGB swatch) or cmyk {c, m, y, k} (creates a CMYK swatch "<name> Stopp <n>"), plus location 0–100 (ascending; a first stop above 0 or a last below 100 gives a warning) and optional midpoint 13–87. on_collision error (default), update (rewrites type and stops of an existing gradient) or version ("<name> 2"). The swatch is then used with fill_swatch_name / stroke_swatch_name in create_rectangle, create_ellipse, create_polygon, create_line and set_frame_appearance, and the angle with gradient_fill_angle_deg. Returns name, swatch_id, type, stops[] {index, swatch_name, location, midpoint} read back, stop_count, collision, existed, previous (with update), swatch_ids of new colour swatches. Note: gradients built from RGB swatches stay RGB – build print gradients from CMYK swatches; how the export renders them depends on the PDF preset.

NameTypeReqDescription
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
namestringyesSwatch name, exact; must not start with "[".
on_collisionstring–What to do when the name exists. Default error.
stopsarrayyesColour stops in order.
typestring–Gradient type. Default linear.

No output schema declared.

No examples provided.

create_image_frame ~356

Create an empty graphic frame (Bildrahmen) on page_id at bounds_mm; x/y may be negative for bleed. By default fill and stroke are set to [None] and the stroke weight to 0 pt, so nothing prints around the picture (appearance_cleared true); keep_default_appearance true keeps the document defaults. The frame is set to fit a picture proportionally when place_image fills it later. Returns frame_id, bounds_mm, appearance_cleared, landed_on_page_id and landed_on_page_name; a landing on another page is a warning. If a 1 pt stroke still shows in an export, run set_frame_appearance with stroke_weight_pt 0. A timed-out call may still have created the frame – check get_page_state before repeating.

NameTypeReqDescription
bounds_mmobjectyesPosition and size in mm from the top left corner of the page (or spread with coordinate_space "spread").
coordinate_spacestring–Reference for x/y: "page" (default) is the top left corner of page_id, identical on left and right pages; "spread" is the top left corner of the spread (Druckbogen) – the right page of a spread start…
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
keep_default_appearanceboolean–true keeps the document default fill and stroke. Default false = fill and stroke [None], stroke 0 pt.
page_idintegeryesPage from list_pages or list_parent_pages.

No output schema declared.

No examples provided.

create_line ~430

Create a straight line on page_id from start_mm {x, y} to end_mm {x, y} (negative values allowed) with stroke_weight_pt (required, greater than 0, set in points – never in mm) and optional colour: swatch_name (exact name of an existing swatch, the right way for print – the document's CMYK swatches, see list_swatches) or stroke_hex (creates an RGB swatch); default Black. The line has no text wrap. Returns frame_id, page_id, start_mm, end_mm, stroke_weight_pt and stroke_color read back, swatch_ids, landed_on_page_id and landed_on_page_name. A timed-out call may still have created the line – check get_page_state before repeating.

NameTypeReqDescription
coordinate_spacestring–Reference for x/y: "page" (default) is the top left corner of page_id, identical on left and right pages; "spread" is the top left corner of the spread (Druckbogen) – the right page of a spread start…
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
end_mmobjectyesEnd point in mm.
gradient_stroke_angle_degnumber–Angle of a linear gradient stroke in degrees; only visible with a gradient swatch.
page_idintegeryesPage from list_pages or list_parent_pages.
start_mmobjectyesStart point in mm.
stroke_hexstring–Stroke colour as hex (creates an RGB swatch). Default Black.
stroke_tint_percentnumber–Tint of the stroke swatch in percent (0–100).
stroke_weight_ptnumberyesStroke weight in points, greater than 0.
swatch_namestring–Exact name of an existing swatch for the stroke. Not together with stroke_hex.

No output schema declared.

No examples provided.

create_parent_page ~426

Create a master spread (Musterseite) with base_name (1–60 characters) and name_prefix (one capital letter; InDesign picks the next free one when omitted). facing defaults to the document's facing-pages setting. page_count (1–10) sets the number of pages of the master spread directly – also in a single-sided document, where facing true alone still gives one page. based_on names an existing master (full name with prefix) the new one is based on (Musterseite basiert auf); "[None]" for none. Returns name, page_ids[], page_count and based_on ("[None]" when none). InDesign switches the layout window to the new master spread when it is created; keep_view (default true) puts the previous page and zoom back afterwards (view_restored) – pass keep_view false to stay on the master, or call show_page with one of the page_ids to work on it visibly.

NameTypeReqDescription
base_namestringyesName without prefix, e.g. "Grundlayout".
based_onstring–Full name of the master this one is based on, e.g. "A-Grundlayout"; "[None]" for none. Default: none.
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
facingboolean–Two-page master. Default: like the document.
keep_viewboolean–Restore the previous view (page and zoom of the layout window) afterwards – InDesign otherwise jumps to the new page. Default true; false lets the view move. The answer carries view_restored (null wh…
name_prefixstring–One capital letter. Default: next free letter.
page_countinteger–Pages of the master spread (1–10), also in a single-sided document. Overrides facing; a contradicting facing value is refused.

No output schema declared.

No examples provided.

create_polygon ~806

Create a polygon (Polygon): either a regular polygon or star from bounds_mm with sides (3–100; a triangle is sides 3) and star_inset_percent (0 = regular polygon, greater than 0 = star with the inner points inset by that percentage), or a closed free shape from points_mm[] (3–200 anchor points {x, y} in page coordinates, straight segments; an arrow is a points_mm shape) – exactly one of the two ways. Colour, stroke, tint, gradient angle, text_wrap, layer_name and name as in create_ellipse. Returns frame_id, type "polygon", bounds_mm, sides and star_inset_percent (null for a free shape), point_count, points_mm[] read back from the path (anchor points only), fill and stroke as create_ellipse, landed_on_page_id, landed_on_page_name, swatch_ids. Note: text wrap by object shape follows the polygon outline. A timed-out call may still have created the object – check get_page_state before repeating.

NameTypeReqDescription
bounds_mmobject–Position and size in mm from the top left corner of the page (or spread with coordinate_space "spread").
coordinate_spacestring–Reference for x/y: "page" (default) is the top left corner of page_id, identical on left and right pages; "spread" is the top left corner of the spread (Druckbogen) – the right page of a spread start…
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
fill_hexstring–Fill colour as hex, e.g. "#E30613". Creates an RGB swatch.
fill_swatch_namestring–Exact name of an existing swatch for the fill – colour, tint or gradient swatch (see list_swatches). Not together with fill_hex.
fill_tint_percentnumber–Tint of the fill swatch in percent (0–100).
gradient_fill_angle_degnumber–Angle of a linear gradient fill in degrees (-180 to 180); only visible with a gradient swatch as fill.
gradient_stroke_angle_degnumber–Angle of a linear gradient stroke in degrees (-180 to 180); only visible with a gradient swatch as stroke.
layer_namestring–Existing layer to create the object on (see list_layers). Default: the active layer.
namestring–Object name (label), shown in InDesign's layers panel.
page_idintegeryesPage from list_pages or list_parent_pages.
points_mmarray–Anchor points of a closed free shape in mm (page coordinates), 3 to 200. Not together with bounds_mm/sides.
sidesinteger–Number of sides for a regular polygon or points of a star (3–100). Needs bounds_mm.
star_inset_percentnumber–0 (default) = regular polygon; greater than 0 = star, inset of the inner points in percent.
stroke_hexstring–Stroke colour as hex. Creates an RGB swatch.
stroke_swatch_namestring–Exact name of an existing swatch for the stroke (colour, tint or gradient). Not together with stroke_hex.
stroke_tint_percentnumber–Tint of the stroke swatch in percent (0–100).
stroke_weight_ptnumber–Stroke weight in points (1 pt with a warning when a stroke colour is given without it).
text_wrapstring–Text wrap of the new object: none, bounding_box or object_shape. Without it the document default applies – pass "none" when text lies underneath.

No output schema declared.

No examples provided.

create_rectangle ~866

Create a rectangle on page_id at bounds_mm (x/y may be negative) with optional fill_hex, stroke_hex, stroke_weight_pt (points), corner_radius_mm and corner_type, fill_tint_percent, stroke_tint_percent, gradient_fill_angle_deg, gradient_stroke_angle_deg, layer_name and name. Hex colours become RGB swatches named after the value ("#1A2B3C"), reused when they exist; their ids come back as swatch_ids. For print use the existing document swatches (CMYK) instead: fill_swatch_name / stroke_swatch_name take the exact name of an existing colour, tint or gradient swatch (see list_swatches, create_gradient_swatch); each excludes the corresponding hex parameter. Without fill_hex the fill is [None]; without stroke_hex and stroke_weight_pt the stroke is [None] with 0 pt. The rectangle inherits the document text wrap (Textumfluss) – pass text_wrap "none" to switch it off, or build borders from four create_line calls. Returns frame_id, page_id, swatch_ids, bounds_mm, fill_color, fill_kind (none, color, tint, gradient, mixed_ink), stroke_color, stroke_kind, tints, gradient angles, corner_type, corners, layer_name, landed_on_page_id and landed_on_page_name. A timed-out call may still have created the rectangle – check get_page_state before repeating.

NameTypeReqDescription
bounds_mmobjectyesPosition and size in mm from the top left corner of the page (or spread with coordinate_space "spread").
coordinate_spacestring–Reference for x/y: "page" (default) is the top left corner of page_id, identical on left and right pages; "spread" is the top left corner of the spread (Druckbogen) – the right page of a spread start…
corner_radius_mmnumber–Corner radius in mm for all four corners.
corner_typestring–Corner shape (Eckenoptionen) for all four corners: none, rounded, inverse_rounded, bevel, inset, fancy. Default rounded when corner_radius_mm is greater than 0, otherwise none. Per-corner settings: s…
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
fill_hexstring–Fill colour as hex, e.g. "#E30613". Creates an RGB swatch.
fill_swatch_namestring–Exact name of an existing swatch for the fill – colour, tint or gradient swatch (see list_swatches). Not together with fill_hex.
fill_tint_percentnumber–Tint of the fill swatch in percent (0–100).
gradient_fill_angle_degnumber–Angle of a linear gradient fill in degrees (-180 to 180); only visible with a gradient swatch as fill.
gradient_stroke_angle_degnumber–Angle of a linear gradient stroke in degrees (-180 to 180); only visible with a gradient swatch as stroke.
layer_namestring–Existing layer to create the object on (see list_layers). Default: the active layer.
namestring–Object name (label), shown in InDesign's layers panel.
page_idintegeryesPage from list_pages or list_parent_pages.
stroke_hexstring–Stroke colour as hex. Creates an RGB swatch.
stroke_swatch_namestring–Exact name of an existing swatch for the stroke (colour, tint or gradient). Not together with stroke_hex.
stroke_tint_percentnumber–Tint of the stroke swatch in percent (0–100).
stroke_weight_ptnumber–Stroke weight in points (1 pt with a warning when a stroke colour is given without it).
text_wrapstring–Text wrap of the new object: none, bounding_box or object_shape. Without it the document default applies – pass "none" when text lies underneath.

No output schema declared.

No examples provided.

create_swatch ~247

Create a process colour swatch (Farbfeld) with the exact name (1–60 characters) from hex (RGB, "#1A2B3C") or cmyk ({c, m, y, k} in percent – for print production); exactly one of the two. on_collision: error (default), update (rewrites the values of the existing colour) or version ("Name 2"). Returns name, swatch_id, collision (none, updated, versioned), existed, space (rgb or cmyk) and values.

NameTypeReqDescription
cmykobject–CMYK values in percent.
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
hexstring–RGB colour as hex.
namestringyesExact swatch name; must not start with "[".
on_collisionstring–What to do when the name exists: error (default) fails, update changes the existing one, version creates "Name 2".

No output schema declared.

No examples provided.

create_table ~528

Create a table (Tabelle) in the story of a text frame: rows (body rows) x columns, plus header_rows and footer_rows; position end (default, after the existing text, in its own paragraph), start, or replace (the story is emptied first). Optional cells fill it row-major (header rows first, then body, then footer), table_style, cell_style, paragraph_style (applied inside every cell), column_widths_mm or width_mm. Returns table_id, table_index (in the story), frame_id (where the table starts), story_offset_index, rows/body_rows/header_rows/footer_rows/columns, table_style, width_mm, height_mm, column_widths_mm, cells_written, overflowing_cells, overset. A table that does not fit makes the story overflow – warning; enlarge the frame or thread another one. Use set_table_cells for further contents and get_table to read it back.

NameTypeReqDescription
cell_stylestring–Cell style (Zellenformat) by exact name; get_table lists the available ones.
cellsarray–Rows of cell texts, row-major: [["Datum","Ort"],["12.05.","A"]]. Numbers are written as text, null leaves the cell untouched. Line breaks (\n) become paragraphs inside the cell.
column_widths_mmarray–Column widths in mm, one per column.
columnsintegeryesColumns, 1 to 100.
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
footer_rowsinteger–Footer rows (Tabellenfuß). Default 0.
frame_idintegeryesObject id from get_page_state.
header_rowsinteger–Header rows (Tabellenkopf), repeated when the table breaks. Default 0.
paragraph_stylestring–Paragraph style applied in every cell (exact name, see list_paragraph_styles).
positionstring–Where in the story: end (default), start, or replace the whole story text.
rowsintegeryesBody rows (Textzeilen), 1 to 1000.
table_stylestring–Table style (Tabellenformat) by exact name; get_table lists the available ones.
width_mmnumber–Total table width in mm (columns scaled proportionally). Ignored when column_widths_mm is given.

No output schema declared.

No examples provided.

create_text_frame ~859

Create an empty text frame on page_id (document or master page) at bounds_mm {x, y, width, height}; x/y may be negative for bleed. initial_text is put in as one paragraph – "\n" becomes a forced line break, not a new paragraph; for real paragraphs create the frame empty and use set_text. The frame inherits the document text defaults, vertical justification and text wrap (Textumfluss): with wrap on, text frames underneath can be pushed into overset – pass text_wrap "none" to switch it off at creation, and vertical_justification "top" to pin the text to the top. Frame options (Textrahmenoptionen): first_baseline_offset sets the first baseline (Versatz erste Grundlinie: ascent, cap_height, leading, x_height, fixed, embox_top) with min_first_baseline_pt as the minimum in points; ignore_text_wrap true lets this frame ignore wrap of other objects (e.g. a caption over a picture with wrap); inset_mm sets the inset (Innenabstand) as one number or {top, left, bottom, right}. A one-line caption in a frame of exactly one grid line needs first_baseline_offset appropriate to the style (ascent or fixed) – otherwise it goes into overset. Returns frame_id, bounds_mm (read back, relative to the page it landed on), landed_on_page_id and landed_on_page_name (empty = pasteboard), and the frame options read back; a landing on another page is a warning, never a silent success. A timed-out call may still have created the frame – check get_page_state before repeating. Placeholders in the text become InDesign special characters (placeholders true, default): {{line_break}} (forced line break within the paragraph), {{nbsp}} (no-break space U+00A0), {{nbsp_fixed}} (fixed-width no-break space U+202F), {{thin_space}}, {{hair_space}}, {{soft_hyphen}} (discretionary hyphen), {{nb_hyphen}} (no-break hyphen), {{en_dash}}, {{em_dash}}, {{tab}}, {{column_break}}, {{frame_break}}, {{page_break}}. Unknown {{…}} stay as written with a warning; each placeholder is exactly one character in the story. Retur…

NameTypeReqDescription
bounds_mmobjectyesPosition and size in mm from the top left corner of the page (or spread with coordinate_space "spread").
coordinate_spacestring–Reference for x/y: "page" (default) is the top left corner of page_id, identical on left and right pages; "spread" is the top left corner of the spread (Druckbogen) – the right page of a spread start…
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
first_baseline_offsetstring–Position of the first baseline (Versatz erste Grundlinie). Default is the document default, usually ascent.
ignore_text_wrapboolean–true: this frame ignores text wrap of other objects (Textumfluss ignorieren).
initial_textstring–Text for the frame, one paragraph; "\n" is a line break. Placeholders such as {{nbsp}} are expanded.
inset_mm––Inset (Innenabstand) in mm: one number for all edges or {top, left, bottom, right}; missing edges are 0.
min_first_baseline_ptnumber–Minimum first baseline offset in points (Min. in the frame options).
page_idintegeryesPage from list_pages or list_parent_pages.
placeholdersboolean–Expand {{…}} placeholders into special characters. Default true; false writes them literally.
text_wrapstring–"none" switches text wrap off for this frame.
vertical_justificationstring–Vertical alignment of the text inside the frame.

No output schema declared.

No examples provided.

create_text_variable ~409

Create a text variable (Textvariable) or update the options of an existing one with the same name and type: type custom_text (text), running_header_paragraph (paragraph_style, use first|last, text_before, text_after, delete_end_punctuation), running_header_character (character_style, …), file_name (include_extension, include_path, text_before, text_after), output_date/creation_date/modification_date (date_format, text_before, text_after), last_page_number, chapter_number. remove true deletes the variable (and its instances in the text – warning). A running header from the headline style is the classic use on parent pages: create the variable, then insert_text_variable into a frame on the parent page.

NameTypeReqDescription
character_stylestring–running_header_character: character style to pick the text from.
date_formatstring–Date variables: format string as in InDesign (e.g. dd.MM.yyyy).
delete_end_punctuationboolean–Running headers: drop end punctuation.
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
include_extensionboolean–file_name: include the extension.
include_pathboolean–file_name: include the folder path.
namestringyesName of the text variable, exact.
paragraph_stylestring–running_header_paragraph: paragraph style to pick the text from.
removeboolean–Delete the variable named name.
textstring–custom_text: the text.
text_afterstring–Text after the value.
text_beforestring–Text before the value.
typestring–Variable type; required unless remove.
usestring–Running headers: first or last occurrence on the page. Default first.

No output schema declared.

No examples provided.

debug_inspect_run ~305

Diagnosis only: the effective formatting at story index (default 0) of a text frame – point_size, leading_pt, applied_paragraph_style, applied_character_style (InDesign's own name, localized – "[Ohne]" in German) with character_style_is_none (true when no character style is applied, the language-independent check), fill_color, applied_font, font_style, tracking, horizontal_scale, vertical_scale, style_overridden (local formatting on top of the style), frame_scale {horizontal, vertical} of the frame and paragraph {index (0-based in the story), start_index (story index of its first character), alignment, hyphenation, keep_options, hyphenation_options, justification_options} of the paragraph holding the character. With style_name also style {found, kind, matches, duplicated, nested, groups[], definition} – whether the name occurs more than once or inside a group. The only way to see local formatting hiding behind a correct style name. Read-only.

NameTypeReqDescription
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
frame_idintegeryesObject id from get_page_state.
indexinteger–Story index to inspect. Default 0.
style_namestring–Paragraph or character style name to look up.

No output schema declared.

No examples provided.

define_character_style ~434

Create a character style (Zeichenformat) with name and at least one of font_family, font_style (exact InDesign style name), point_size, fill_hex (creates an RGB swatch) or swatch_name (an existing swatch by exact name; not together with fill_hex), and tracking (Laufweite in 1/1000 em, -1000 to 10000; where the style is applied it replaces the tracking of the paragraph style – see apply_character_style_to_range). on_collision: error (default), update or version. Returns style_id, name, collision (none, updated, versioned), existed, applied[] and the definition read back (null for attributes the style leaves untouched). InDesign names a family with a format suffix such as "Source Sans 3 (OTF)" or "(TT)" when it knows the family in more than one format; pass the family with or without that suffix – the connector matches both and reads back the name InDesign uses.

NameTypeReqDescription
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
fill_hexstring–Text colour as hex; an RGB swatch is created if needed. Not together with swatch_name.
font_familystring–Font family.
font_stylestring–Exact style name, e.g. "75 Bold".
namestringyesStyle name; must not start with "[".
on_collisionstring–What to do when the name exists: error (default) fails, update changes the existing one, version creates "Name 2".
point_sizenumber–Point size.
swatch_namestring–Text colour as an existing swatch by exact name (CMYK, spot, tint or gradient; see list_swatches). Not together with fill_hex.
trackingnumber–Tracking (Laufweite) in 1/1000 em.

No output schema declared.

No examples provided.

define_paragraph_style ~1,230

Create a paragraph style (Absatzformat) with name and any of font_family, font_style (exact InDesign style name, e.g. "75 Bold"), size_pt, leading_pt (points or "auto"), alignment (left, center, right, justify = Blocksatz with the last line left), color_hex (creates an RGB swatch named after the hex value) or swatch_name (an existing swatch by exact name – the way to a CMYK or spot colour; not together with color_hex), space_before_pt, space_after_pt, tracking (Laufweite in 1/1000 em), hyphenation, and the option groups keep_options (Umbruchoptionen: keep_with_next, keep_first_lines, keep_last_lines, keep_lines_together, keep_all_lines_together, keep_with_previous, start_paragraph), hyphenation_options (Silbentrennungseinstellungen) and justification_options (Blocksatz-Abstände, composer). Indents in mm: left_indent_mm, first_line_indent_mm (negative for a hanging indent, never further left than the left indent), right_indent_mm, last_line_indent_mm. tab_stops[] {position_mm, alignment left|center|right|character, leader, align_on} replaces the whole tab list ([] clears it); language selects the dictionary by the name InDesign shows, its untranslated name or an ICU locale (de_DE, en_GB – the safest form). The answer reads them back under indents {left_indent_mm, first_line_indent_mm, right_indent_mm, last_line_indent_mm, tab_stops[], language {name, untranslated_name, icu_locale}}. InDesign names a family with a format suffix such as "Source Sans 3 (OTF)" or "(TT)" when it knows the family in more than one format; pass the family with or without that suffix – the connector matches both and reads back the name InDesign uses. Strict keep options can produce overset or empty column ends – check overset and get_frame_lines afterwards. on_collision decides what happens when the name exists: error (default), update or version ("Name 2"). The font must be installed: InDesign rejects a font it does not have, even as family plus style (not_found with available_styles) – def…

NameTypeReqDescription
alignmentstring–Alignment; justify = Blocksatz, last line left.
color_hexstring–Text colour as hex; an RGB swatch named after it is created if needed. Not together with swatch_name.
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
first_line_indent_mmnumber–First-line indent (Einzug erste Zeile) in mm; negative = hanging indent, at most -left_indent_mm.
font_familystring–Font family, e.g. "Futura PT".
font_stylestring–Exact style name, e.g. "Book" or "75 Bold" (see get_font_info_at_index).
hyphenationboolean–Hyphenation on or off (Silbentrennung).
hyphenation_optionsobject–Hyphenation settings (Silbentrennungseinstellungen). The plain hyphenation switch stays a separate parameter. Whatever is omitted stays.
justification_optionsobject–Justification settings (Abstandseinstellungen für Blocksatz). Whatever is omitted stays. The paragraph composer recomposes the whole paragraph on every change – check get_frame_lines afterwards.
keep_optionsobject–Keep options (Umbruchoptionen / Absatzkontrolle). Whatever is omitted stays.
languagestring–Language of the text (Sprache, for hyphenation and spelling): the name InDesign shows (e.g. "Deutsch: 2006 Rechtschreibreform", "Englisch: Großbritannien"), its untranslated name as InDesign holds it…
last_line_indent_mmnumber–Last-line right indent (Einzug letzte Zeile) in mm.
leading_pt––Leading in points, or "auto".
left_indent_mmnumber–Left indent (Einzug links) in mm.
namestringyesStyle name; must not start with "[".
on_collisionstring–What to do when the name exists: error (default) fails, update changes the existing one, version creates "Name 2".
right_indent_mmnumber–Right indent (Einzug rechts) in mm.
size_ptnumber–Point size (Schriftgrad).
space_after_ptnumber–Space after (Abstand danach) in points.
space_before_ptnumber–Space before (Abstand davor) in points.
swatch_namestring–Text colour as an existing swatch by exact name (CMYK, spot, tint or gradient; see list_swatches). Not together with color_hex.
tab_stopsarray–Complete list of tab stops (Tabulatoren); replaces every existing tab stop, [] removes all. Text reaches a tab stop through {{tab}} in set_text.
trackingnumber–Tracking (Laufweite) in 1/1000 em; a character style with its own tracking replaces this value where it is applied.

No output schema declared.

No examples provided.

delete_frame ~149

Delete a text frame, image frame, rectangle, line or group (as a whole) by frame_id. A threaded text frame (verketteter Rahmen) takes its own text portion with it; the rest of the story stays in the other frames. There is no undo. Returns frame_id, type, was_threaded, characters_removed and removed_frame_ids (group members included).

NameTypeReqDescription
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
frame_idintegeryesObject to delete, from get_page_state.

No output schema declared.

No examples provided.

delete_guides ~250

Delete ruler guides (Hilfslinien). Pass exactly one selection: guide_ids[] (from list_guides), page_ids[] (every guide on the spreads of those pages) or confirm_all true (every guide in the document); an empty call is refused. include_parent_pages (default true) also covers master spreads. Individual locks, "lock guides" and layer locks are lifted for the call and restored. Margin and column guides are never touched. There is no undo. Returns deleted[] {guide_id, orientation, position, page}, failed[] {guide_id, reason}, remaining_document and remaining_parent.

NameTypeReqDescription
confirm_allboolean–true deletes every guide in the document.
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
guide_idsarray–Guides to delete, from list_guides.
include_parent_pagesboolean–Also include master pages (Musterseiten). Default true.
page_idsarray–Delete every guide on the spreads that hold these pages.

No output schema declared.

No examples provided.

delete_page ~571

Delete a page. There is no undo. Master page objects and empty frames do not block (they are reported and go with the page); frames with text or images and threaded frames (verkettete Rahmen) block – the call then fails with invalid_state and lists them, and only force true deletes anyway. The only page of a document and master pages are always protected. Objects on the pasteboard (Montagefläche) belong to the spread, not to the page: when the spread goes with the page (the page is the only one of its spread), its pasteboard objects are listed before anything happens. When InDesign regroups the spreads (facing pages with "allow pages to shuffle"), pasteboard objects stay but can end up beside other pages. on_pasteboard_items decides: "warn" (default) deletes them with the page and warns, "abort" fails with invalid_state and details.code "pasteboard_items_present" (nothing deleted), "move" first moves them to the pasteboard of the spread of pasteboard_target_page_id (same position beside the pages; right stays right). Returns page_id, name, former_index, items_deleted, boilerplate_ignored and item_summary[]; also on_pasteboard_items, pasteboard_items[] {frame_id, type, spread_index, bounds_mm (spread coordinates), link_name, link_path, text_snippet}, pasteboard_moved_ids[], pasteboard_lost_ids[] (checked after deleting; a warning names every loss) and pasteboard_relocated[] {frame_id, spread_page_ids_before, spread_page_ids, spread_page_names_before (names before deleting), spread_page_names, spread_index, bounds_mm_before, bounds_mm, on_pasteboard} for pasteboard objects that now lie beside other pages or elsewhere (a warning names them); changes.removed_page_ids. Read list_pages again afterwards.

NameTypeReqDescription
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
forceboolean–Delete even when frames with content or threaded frames are on the page.
on_pasteboard_itemsstring–What happens to pasteboard objects of a spread that goes with the page: "warn" (default) delete and warn, "abort" fail with details.code pasteboard_items_present, "move" move them to the spread of pa…
page_idintegeryesPage to delete, from list_pages.
pasteboard_target_page_idinteger–Document page whose spread receives the pasteboard objects with on_pasteboard_items "move"; must lie on a spread that stays.

No output schema declared.

No examples provided.

document_text_defaults ~262

Read or set the document's text defaults (Textvorgaben) – the font, style, size and paragraph style every new text frame inherits and that set_text writes as local formatting. Without parameters it is read-only. Each setter works on its own; a failing one lands in problems[] without aborting the others. font takes a family name as InDesign shows it or "Family\tStyle" with a tab; font_style the style name ("Bold"); point_size 0–1296; paragraph_style the style name (not style_name). Returns the values after the change: font, font_style, point_size, paragraph_style, character_style, changed_fields[] and problems[].

NameTypeReqDescription
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
fontstring–Font family, or "Family\tStyle" with a tab character.
font_stylestring–Font style name, e.g. "Regular", "Bold".
paragraph_stylestring–Paragraph style name to use as default.
point_sizenumber–Size in points.

No output schema declared.

No examples provided.

duplicate_frame ~211

Duplicate a text frame, image frame, rectangle, line or group (as a whole, placed graphics included) and shift the copy by offset_mm {x, y}. The duplicate stays on the spread (Druckbogen) of the original – to put it on another page use move_frame_to_page. Returns source_frame_id, frame_id of the duplicate, type, bounds_mm, landed_on_page_id and landed_on_page_name; the change report lists new_frames. A timed-out call may still have duplicated – check get_page_state before repeating.

NameTypeReqDescription
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
frame_idintegeryesObject to duplicate, from get_page_state.
offset_mmobject–Shift of the copy in mm. Default {0, 0} = exactly on top of the original.

No output schema declared.

No examples provided.

duplicate_parent_page ~322

Duplicate a master spread (Musterseite duplizieren) with all its pages and objects: source_name is the full name with prefix (e.g. "A-Grundlayout"); base_name (1–60 characters) names the copy – without it the copy keeps the base name of the source; name_prefix (one capital letter) – without it InDesign picks the next free letter. The copy keeps the master it is based on. A full name that exists already is refused with invalid_state. Returns name, prefix, base_name, page_ids[], page_count, source_name, based_on, item_count and source_item_count (a warning when they differ). The layout window keeps its view (keep_view, default true).

NameTypeReqDescription
base_namestring–Name of the copy without prefix. Default: the base name of the source.
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
keep_viewboolean–Restore the previous view (page and zoom of the layout window) afterwards – InDesign otherwise jumps to the new page. Default true; false lets the view move. The answer carries view_restored (null wh…
name_prefixstring–One capital letter. Default: next free letter.
source_namestringyesFull name of the master to copy, with prefix, from list_parent_pages.

No output schema declared.

No examples provided.

embed_link ~200

Embed linked graphics into the document (Verknüpfung einbetten): link_ids from list_links or frame_id (all graphics of the object). Missing and already embedded links are skipped with a warning. Returns embedded[] {link_id, file_name, file_path, status_before, bytes, status}, skipped[] with reason, and links_after (the whole link list – embedding changes link objects). Embedding grows the document file; the normal way in print production is to keep links and package_document.

NameTypeReqDescription
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
frame_idinteger–All linked graphics of this object. Pass either link_ids or frame_id.
link_idsarray–Links from list_links. Pass either link_ids or frame_id.

No output schema declared.

No examples provided.

export_page_image ~474

Export document pages as PNG or JPEG images, one file per page (for proofs, correction mails, the website or a measuring run without PDF). Select pages with page_ids (from list_pages) or page_range like export_pdf ("6-8", "1, 3-5", "+2"; printed page names). path is the target file; with several pages the page name is inserted before the extension (Seite.png → Seite_8.png). format png (default) or jpeg, dpi 36–600 (default 150), quality low/medium/high (default)/maximum, color_space rgb (default), gray or cmyk (jpeg only), transparent_background (png), use_bleed (include the bleed), anti_alias (default true). Master pages cannot be exported. The export preferences are set for this call only and restored. Returns format, dpi, count and files[] {page_id, page_name, path, bytes}. Read the files with an image tool of the client to check a layout visually. A timed-out call may still have written files – check the folder before repeating.

NameTypeReqDescription
anti_aliasboolean–Smooth edges. Default true.
color_spacestring–rgb (default), gray, or cmyk (jpeg only).
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
dpinumber–Resolution in dpi. Default 150.
formatstring–Image format. Default png.
page_idsarray–Pages to export, from list_pages. Alternative to page_range.
page_rangestring–Page range against the printed page names, like export_pdf. Alternative to page_ids.
pathstringyesTarget file on the InDesign machine, e.g. /Users/.../Seite.png; the page name is inserted before the extension when several pages are exported.
qualitystring–Compression quality. Default high.
transparent_backgroundboolean–PNG only: transparent instead of white background. Default false.
use_bleedboolean–Include the document bleed (Anschnitt). Default false.

No output schema declared.

No examples provided.

export_pdf ~445

Export the document (or a page_range) as PDF to path (the target file path – not output_path). Preset chain: preset (without it the localized built-in "High Quality Print" preset); when the result exceeds fallback_over_bytes it is exported again with fallback_preset (without both there is no second pass); a preset that does not exist falls back to the localized "High Quality Print" preset, then to the current export preferences, each with a warning. A spread preset turns single pages into spreads – check exported_page_count. The server configuration can hold default values for the three preset parameters; a parameter in the call always wins. page_range uses the printed page names as shown in InDesign ("6-8", "1, 3-5"; "+3" is the third page regardless of its name). Returns path, exported_page_count and document_page_count (page_count equals exported_page_count), bytes, preset_used and page_range_used. Pass fallback_over_bytes 0 or fallback_preset "" to disable the second pass. InDesign writes anywhere on the machine, also outside shared folders. Can take minutes on a full issue.

NameTypeReqDescription
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
fallback_over_bytesinteger–Size threshold in bytes for the second pass. Default: the configured value, otherwise 0 = no second pass.
fallback_presetstring–Preset for the second pass when the file exceeds fallback_over_bytes. Default: the configured preset, otherwise none. "" disables the second pass.
page_rangestring–Pages to export, by printed page name, e.g. "6-8" or "1, 3-5". Default all.
pathstringyesRequired. Target .pdf path on the machine running InDesign.
presetstring–PDF export preset name (exact, as listed in InDesign). Default: the configured preset, otherwise the localized "High Quality Print".

No output schema declared.

No examples provided.

find_font_usage ~275

Find where fonts are used in the document. fonts_used[] {family, style, status (installed, substituted, not_available), occurrences, characters} is always complete; occurrences[] {family, style, status, story_id, frame_ids[], page_id, page_name, is_master, start_index, end_index, snippet} is filtered by font_family and font_style (exact names, case-insensitive – "Futura" does not match "Futura PT"), only_missing (status other than installed) and include_master_pages (default true). Runs of the same family and style are merged; at most 500 occurrences are listed. Read-only.

NameTypeReqDescription
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
font_familystring–Family to filter occurrences by (case-insensitive; a format suffix such as "(OTF)" may be left out).
font_stylestring–Style to filter occurrences by (exact, case-insensitive).
include_master_pagesboolean–Include stories on master pages. Default true.
only_missingboolean–List only occurrences of fonts that are not installed. Default false.

No output schema declared.

No examples provided.

find_replace ~395

Find and replace text in the document or in one frame: find, replace, mode literal or grep (default literal), scope document or frame (frame needs frame_id), include_master_pages, include_hidden_layers, include_locked_layers (all default false), case_sensitive and whole_word (default false). dry_run true only counts and lists up to 200 matches with frame_id, page_name and index – use it before any name replacement. GREP metacharacters: ~M column break, ~R frame break, ~P page break, ~S non-breaking space (a literal U+00A0 is not found in literal mode); a straight " in GREP matches every quote, including typographic ones. Returns replacements, matches_found, scope, mode and master_pages_included. No undo.

NameTypeReqDescription
case_sensitiveboolean–Literal mode: match case. Default false.
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
dry_runboolean–true: count and list matches, change nothing.
findstringyesText or GREP pattern to find.
frame_idinteger–Frame for scope "frame".
include_hidden_layersboolean–Also search hidden layers. Default false.
include_locked_layersboolean–Also search locked layers and stories. Default false.
include_master_pagesboolean–Also search master pages. Default false.
modestring–literal (default) or grep.
replacestring–Replacement text; required unless dry_run is true. "" deletes the matches.
scopestring–document (default) or frame (needs frame_id).
whole_wordboolean–Literal mode: whole words only. Default false.

No output schema declared.

No examples provided.

fit_frame ~419

InDesign's fitting commands (Anpassen) as one call. For a graphic frame: content_to_frame (distorts), fit_proportionally (whole picture visible, may leave space), fill_proportionally (frame filled, picture cropped), center_content, or frame_to_content (the frame takes the size of the picture, top left corner stays). For a text frame only frame_to_content: the frame shrinks or grows to its text (Rahmen an Inhalt anpassen) – InDesign fits width and height (the width to the longest line); keep_width true fits the height only and keeps the width (via auto-size height only, reference top left) – the usual choice for headlines and captions; if the layout uses a baseline grid, check the result against it. Returns frame_bounds_before_mm, frame_bounds_mm, frame_changed, and for pictures graphic_bounds_mm, fits_frame and effective_ppi (warning below min_ppi), for text overset. Fails on groups, lines, empty graphic frames and members of a group. Returns coordinate_space ("page", or "spread" on the pasteboard); when the object carries a text wrap the document is recomposed afterwards (recomposed, overset_stories_before, overset_stories_after, overset_changed).

NameTypeReqDescription
document_idinteger–Document to act on, from list_documents or open_document. Without it the frontmost document is used. A document opened with show_window false is never the active one and must always be addressed by i…
frame_idintegeryesObject id from get_page_state.
keep_widthboolean–Text frames, frame_to_content: fit the height only and keep the width. Default false = InDesign behaviour (width and height).
min_ppinumber–Effective resolution in ppi below which a warning is given. Default: the configured value, otherwise 300 (the usual offset print value: twice the 150 lpi screen).
modestringyesWhich fitting to apply.

No output schema declared.

No examples provided.

get_app_version ~51

Return the version string of the running InDesign application. Use it as a sign of life before anything else. Fails with app_not_available when InDesign is not running or not ready yet. Read-only.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

Common questions

What is the LayoutBridge for Adobe InDesign® MCP server?

LayoutBridge for Adobe InDesign® is an MCP server listed in the public MCP registry as com.mcp-interfaces/layoutbridge-spm. layoutbridge-spm – MCP server for Adobe® InDesign®: pages, frames, text, styles, tables, export. This page covers its npm package (layoutbridge-spm).

Is the LayoutBridge for Adobe InDesign® MCP server safe to use?

LayoutBridge for Adobe InDesign® scores 60 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 26 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the LayoutBridge for Adobe InDesign® MCP server expose?

LayoutBridge for Adobe InDesign® exposes 110 tools: get_app_version, list_documents, open_document, close_document, list_pages, and 105 more. Their descriptions and schemas cost roughly 37,080 tokens of context every time the server is loaded.

Is the LayoutBridge for Adobe InDesign® MCP server still maintained?

LayoutBridge for Adobe InDesign® is still listed as active in the MCP registry. We last reached this channel on 26 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.