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 Light for Adobe InDesign®

NPM · LAYOUTBRIDGE-LIGHT

layoutbridge-light – book typesetting in Adobe® InDesign® via MCP: text, styles, TOC, PDF, EPUB

Available components

61 Trust /100

Last scanned (21 hours ago)

Scores higher than 31% of npm servers

Category Design and Media

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
  • 30 of 92 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency6
  • Repository check failed: no source repository is declared. See how to fix → View diagnostics → Fail
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Licence could not be checked: the licence is shipped as a file inside the package, not declared as a standard (SPDX) licence identifier, so we cannot tell whether it is OSI-approved.Unverified
  • Actively maintained (last published 2 days ago).Pass
  • Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability60
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 32033 tokens (~416/item across 77 items; 77 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 Management10
  • Stability observed for 3 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
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 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 77 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
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.

  • 4 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

  • 2 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 0 to 3. That category is still filling its 30-day observation window: 0 days of observed history at the previous scan, 1 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Nov 26 59

    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 4 Nov 2026 · Analysed npm/layoutbridge-light@1.0.0

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 92 packages
Packages resolved 92
Stale 30
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 77 exposed · ~32,033 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
get_frame_lines ~507

Read the composed lines of a text frame directly from InDesign, per text column – the basis for widow/orphan checks (Hurenkind, Schusterjunge), hyphen ladders, empty lines and the comparison of column starts, without a PDF export. Returns frame_id, story_id, frame_index (position of the frame in the story), page_id, column_count, line_count, columns[] {column_index, bounds_mm (from frame, inset, column count and gutter), line_count, first_baseline_mm, last_baseline_mm (mm from the top of the page), starts_with_last_line_of_paragraph (widow suspicion), ends_with_first_line_of_paragraph (orphan suspicion), starts_with_empty_line, consecutive_hyphens_max, ends_with_single_word, single_word_last_lines[], lines[] {index (in the column), start_index, end_index (story indices, end exclusive – usable in the *_to_range tools), baseline_mm, ascent_pt, descent_pt, left_mm, right_mm, paragraph_index (0-based in the story), is_first_line_of_paragraph, is_last_line_of_paragraph, paragraph_line_count (story-wide, so a paragraph continuing in the next frame is still counted whole), ends_with_hyphen, is_empty, word_count, last_char, text (only with include_text)}}, overset and truncated. Pitfalls: only composed text has lines – overset text has none; an automatic hyphen is not part of the text, so ends_with_hyphen is inferred when a line ends and the next line of the same paragraph begins with a letter; the last line of a paragraph that continues in the next frame is the last visible line here, not the last line of the paragraph (compare paragraph_line_count); lines inside tables are not Line objects and are not listed. Read-only. Returns coordinate_space ("page" or "spread") for the coordinates reported.

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.
include_textboolean–Also return the text of every line. Default false (figures only).
max_linesinteger–Cap for the lines returned over all columns. Default 500.

No output schema declared.

No examples provided.

get_frame_options ~507

Read the options of an object as InDesign holds them: type (text, image, rectangle, ellipse, polygon, line, group, other), page_id/page_name (landing), bounds_mm, rotation_deg, text_wrap {mode, offset_mm}, appearance {fill_color, fill_kind, stroke_color, stroke_kind, stroke_weight_pt, fill_tint_percent, stroke_tint_percent, gradient_fill_angle_deg, gradient_stroke_angle_deg, gradient_fill_start_mm, gradient_fill_length_mm}, corners {top_left {type, radius_mm}, …, uniform} (null for lines and groups), effects {opacity_percent, blend_mode, drop_shadow, feather} of the object and has_effects {fill, stroke, text} (true where something deviates from normal / 100 %), parent_group_id, layer {layer_id, layer_name, visible, locked}, locked (Objekt > Sperren) and anchored {story_id, index, position} (null when the object is not anchored in text). For a text frame additionally text: columns {count, gutter_mm, type, fixed_width_mm}, inset_mm, vertical_justification, vertical_threshold_mm, first_baseline_offset (ascent, cap_height, leading, x_height, fixed, embox_top), min_first_baseline_pt, ignore_text_wrap, optical_margin_alignment and optical_margin_size_pt (story-wide, see set_story_options), threading {story_id, story_length, frame_index, frame_count, previous_frame_id, next_frame_id, overset, story_overset}, first_baseline_mm (baseline of the first line in mm from the top of the page – the direct check whether the first line sits on the baseline grid, if the layout uses one) and character_count. Read-only. Use it to copy the settings of an existing frame before rebuilding it with create_text_frame, set_frame_columns, set_frame_inset and set_text_wrap. Returns coordinate_space ("page" when the object lies on a page, "spread" on the pasteboard): bounds_mm is relative to page_id and can be passed back to set_frame_bounds together with page_id.

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.

No output schema declared.

No examples provided.

get_frame_text ~495

Read the story of a text frame: story_id, story_length, paragraphs[] {index, start_index, end_index (exclusive, without the break), end_index_incl_break, paragraph_style, text, is_empty, break_type (paragraph, column, frame, page, odd_page, even_page or none for the last paragraph)} and overset for this frame. Column breaks count like paragraph marks; zero-width characters (U+FEFF) are returned as they are. For a threaded frame the whole story is returned, with frame_start_index and frame_end_index marking this frame's portion – pass only_frame_portion true to get only the paragraphs in this frame (text clipped at the frame boundaries, clipped_start/clipped_end mark the cut), and max_chars to cap the text returned (truncated true, paragraphs_omitted counts the rest). Indices always refer to the whole story, so they can be used with set_text_in_range and the *_to_range tools. Also lock_state of the story (none, unmanaged_story, checked_in_story, checked_out_story, locked_story, embedded_story, missing_lock_state, mixed_lock_state; null when unreadable) and managed_file (path of the editorial file for a managed story, home folder as ~; otherwise null) – writing tools refuse checked_in_story, locked_story, missing_lock_state and mixed_lock_state. Read-only. There is no include_overset parameter.

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.
max_charsinteger–Budget for the text returned across all paragraphs; the rest is counted in paragraphs_omitted.
only_frame_portionboolean–true: only the paragraphs shown in this frame, text clipped at its boundaries. Default false = whole story.
show_placeholdersboolean–Show special characters in text as {{…}} placeholders (line_break, nbsp, nbsp_fixed, thin_space, hair_space, soft_hyphen, nb_hyphen, en_dash, em_dash, tab, column_break, frame_break, page_break). Def…

No output schema declared.

No examples provided.

get_layout_grid ~384

Read the type area (Satzspiegel) of every document page and, by default, every master page, plus document-wide values. Per page: page_id, name, spread_index, spread_page_count, spread_position, page_offset_in_spread_mm, parent, margins_mm (top, bottom, left, right; for facing pages also inside = left and outside = right – InDesign stores the inside margin (Bundsteg) as "left"), column_count, column_gutter_mm, type_area_mm {x, y, width, height} measured from the top left corner of that page, column_width_mm, columns_positions_mm (from the left edge of the type area; a two-column grid with 5 mm gutter on 170 mm reads [0, 82.5, 87.5, 170]) and custom_column_positions. Document-wide: distinct_grids[] {margins_mm, columns, gutter_mm, page_ids}, is_uniform, baseline_grid {start_mm, increment_mm, increment_pt, relative_to (top_of_page, top_of_margin or unknown), relative_to_raw, shown, view_threshold}, baseline_grid_check {first_line_mm, starts_at_type_area_top, lines_in_type_area, last_line_mm, remainder_below_mm} for the first document page, bleed_mm {top, left, bottom, right, uniform} and slug_mm. Warnings: bleed 0, baseline grid does not fit the type area, relative_to unknown. 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…
include_parent_pagesboolean–Also include master pages (Musterseiten). Default true.

No output schema declared.

No examples provided.

get_page_state ~298

Snapshot of one page: page_bounds_mm and every object on it with id, type (text, image, rectangle, ellipse, polygon, line, group, other), bounds_mm, paragraph_style when the whole frame uses one, a text_snippet of up to 200 characters, child_count, parent_group_id and layer_name (Ebene). Nothing is skipped silently; unknown kinds come back as "other". Works for master pages too – take the page_id from list_parent_pages, the answer then carries is_parent_page true. All coordinates are millimetres from the top left corner of that page. Read-only. Careful: an object bleeding over the edge to the neighbouring page can show up with x = 210 instead of 0 – do not judge by coordinates alone, measure in the exported PDF. Returns coordinate_space "page": every bounds_mm is relative to the top left corner of this page and can be passed back to set_frame_bounds together with page_id.

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…
include_group_childrenboolean–Also list the objects inside groups, each with parent_group_id. Default true.
page_idintegeryesPage to look at, from list_pages or list_parent_pages.

No output schema declared.

No examples provided.

insert_page_number_marker ~126

Insert the automatic page number placeholder (Seitenzahl-Platzhalter) into text frame frame_id at position "start" or "end" (default end). Works on master page frames too. Returns frame_id and position.

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_idintegeryesText frame to write into.
positionstring–Default "end".

No output schema declared.

No examples provided.

insert_text_variable ~176

Insert an instance of a text variable at a text position: frame_id (a frame of the story, also on a parent page), name, index (default: end of the story). Returns instance_id, story_id, frame_id, index, result_text (what the variable shows there), story_length, overset. The instance counts as one character in the story.

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–Character index in the story. Default: end.
namestringyesName of the text variable, exact.

No output schema declared.

No examples provided.

list_documents ~84

List every open document, not just the frontmost one. Returns document_id (stable for this session), name, saved, path (empty when never saved), page_count, is_active and managed_story_count (stories linked to an editorial workflow such as InCopy; null when unreadable). Read-only. Note: saved true is no reliable sign that there is nothing to save.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_index ~255

List the index (Register) of the document: index_exists, topics[] in tree order {path, level, name, sort_as, page_reference_count, cross_reference_count, page_references[] {page_reference_id, type, page_id, page_name, frame_id, story_id, index, in_overset}, cross_references[] {cross_reference_id, type, topic (path), custom_text}}, topic_count, page_reference_count, cross_reference_count and index_stories[] {story_id, frame_ids, page_ids, page_names, paragraph_count, length, overset} – generated indexes in the document. topic_contains filters by any level (case-insensitive; sub-topics of a match are only listed if they match too); include_references false leaves out the reference lists. 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…
include_referencesboolean–List page and cross references per topic (default true).
topic_containsstring–Only topics whose path contains this text.

No output schema declared.

No examples provided.

list_links ~376

List the links (Verknuepfungen) of the document, optionally filtered by path_contains (substring of path or file name, case-insensitive). Per link: link_id, file_name, file_path, status (NORMAL, LINK_MISSING, LINK_OUT_OF_DATE, EMBEDDED), page_id, page_name and frame_id (for a linked story file such as an InCopy story: its first text frame and the page of that frame). Also count. Where the holding object lies: container_id (the frame or object that holds the graphic, also when it lies on no page; for a linked story file its first text frame), container_type, graphic_type (InDesign class of the linked object, e.g. Image, PDF, EPS, Story), location (page, parent_page, pasteboard, anchored – in a story, then with story_id and in_overset true when the anchor sits in overset text –, or unknown), spread_id (the spread or parent spread of the object; for anchored objects the spread of the text frame, null in overset). For an object anchored in overset text InDesign still reports a page_id (the page it would follow) – in_overset true is the reliable sign. A link with page_id null and location pasteboard or anchored with in_overset true is a leftover that does not print. Use it to match pictures to articles by page number or to spot motifs of old issues by file 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…
path_containsstring–Substring of the file path or name.

No output schema declared.

No examples provided.

list_pages ~123

List the document pages. Per page: page_id, index (0-based), side (LEFT_HAND, RIGHT_HAND or SINGLE_SIDED), parent (the applied master page, "[None]" when there is none) and name, which is the printed page number. Read-only. Master pages themselves are listed by list_parent_pages.

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…

No output schema declared.

No examples provided.

list_paragraph_styles ~232

List the paragraph styles (Absatzformate) of the document, including those in style groups: styles[] {name, style_id, group ("" at top level, "Group/Subgroup" nested), based_on, font_family, font_style, point_size, leading_pt (null when automatic), leading_auto, fill_swatch, alignment, space_before_pt, space_after_pt, hyphenation, tracking, keep_options, hyphenation_options, justification_options, drop_cap {lines, characters, character_style}} and the character styles (Zeichenformate) as character_styles[] {name, style_id, group, based_on, font_family, font_style, point_size, fill_swatch, tracking – null for attributes the style does not set}. Internal styles whose name starts with "[" are excluded (internal_styles_excluded counts them). 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…

No output schema declared.

No examples provided.

list_parent_pages ~122

List the master spreads (Musterseiten): name ("A-Cover"), prefix, base_name, applied_to_page_ids[] and pages[] with page_id, index, side and item_count. Those page_ids make master pages readable and editable with get_page_state, set_text or find_replace (scope frame). 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…

No output schema declared.

No examples provided.

list_sections ~170

List the sections (Abschnitte) of the document that control page numbering: sections[] {section_id, name, start_page_id, start_page_name, start_page_index, length, continue_numbering, page_number_start, page_number_style (arabic, upper_roman, lower_roman, upper_letters, lower_letters, or a custom list name), section_prefix, include_section_prefix, marker}, count, and pages[] {page_id, name} with the page names as they result. Read-only. Every document has a section on its first page.

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…

No output schema declared.

No examples provided.

list_stories ~375

Overview of the stories (Textabschnitte) of the document: which frames belong to which story and in what order, and which story overflows. stories[] {story_id, frame_ids (chain order), frame_count, frames[] {frame_id, index, page_id, page_name, on_pasteboard, on_parent_page, bounds_mm}, character_count, paragraph_count, table_count, overset, on_parent_page, first_page_id, first_page_name, first_paragraph_style, snippet, lock_state, managed_file}, count, total_stories, overset_count (warning when above 0). Stories on parent pages are skipped unless include_parent_pages true; empty stories are listed unless include_empty false; page_id keeps only stories with a frame on that page. lock_state is the state of a story in an editorial workflow such as InCopy (none, unmanaged_story, checked_in_story, checked_out_story, locked_story, embedded_story, missing_lock_state, mixed_lock_state; null when unreadable); managed_file is the path of its editorial file (home folder as ~) for managed stories, otherwise null. Read-only. get_frame_text reads one story; thread_text_frames changes the chain.

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…
include_emptyboolean–List stories without text. Default true.
include_parent_pagesboolean–Also list stories on parent (master) pages. Default false.
page_idinteger–Only stories that have a frame on this page.
snippet_charsinteger–Length of the text snippet per story. Default 80.

No output schema declared.

No examples provided.

list_swatches ~255

List the swatches (Farbfelder) of the document: swatches[] {swatch_id, name, kind (none, color, tint, gradient, mixed_ink), space (RGB, CMYK, LAB, MIXED_INK), model (process, spot, registration), values (RGB 0–255 or CMYK percent; ink percentages for mixed inks), tint_percent and base_color for tints, stop_count, type (linear, radial) and stops[] {index, swatch_name, location, midpoint} for gradients, built_in}. include_built_in false hides None, Black, Paper and Registration. Read-only. Use the exact names for swatch_name parameters (create_rectangle, set_frame_appearance, apply_character_format_to_range); hex parameters create RGB swatches, which print differently from the CMYK swatches of the 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…
include_built_inboolean–Also list None, Black, Paper and Registration. Default true.

No output schema declared.

No examples provided.

list_text_variables ~172

List the text variables (Textvariablen) of the document: variables[] {name, type (custom_text, running_header_paragraph, running_header_character, file_name, output_date, creation_date, modification_date, last_page_number, chapter_number, or the raw type), options per type (text; paragraph_style/character_style, use first|last, text_before, text_after, delete_end_punctuation; include_extension, include_path; format), instance_count (instances in the stories)}, count. Read-only. Every document carries InDesign's default variables.

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…

No output schema declared.

No examples provided.

list_toc_styles ~231

List the table of contents styles (Inhaltsverzeichnisformate) of the document: toc_styles[] {name, title, title_style, include_hidden_layers, run_in, include_book_documents, create_bookmarks, entries[] {paragraph_style (the style whose paragraphs become entries), level, entry_style (paragraph style of the entry in the TOC), page_number_position after|before|none, separator, page_number_style, separator_style, sort_alphabetical}}, count, and toc_stories[] {story_id, frame_ids, page_ids, page_names, paragraph_count, length, overset} – the tables of contents already in the document. Every document carries InDesign's default style (localized name, e.g. "[Default]"). A style name shown in square brackets such as "[Same style]" means InDesign's default. 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…

No output schema declared.

No examples provided.

open_document ~185

Open an existing .indd, .indt or .idml file. Returns document_id, name, page_count, facing_pages (Doppelseiten) already_open, which is true when the file was open already – it is never opened twice – and managed_story_count (stories linked to an editorial workflow such as InCopy). Because InDesign dialogs are suppressed, missing links (fehlende Verknuepfungen), out of date links and missing fonts (fehlende Schriften) come back as warnings; that is the only signal you get.

NameTypeReqDescription
open_copyboolean–Open an untitled copy and leave the file untouched. Default for .indt templates.
pathstringyesReal file path on the machine running InDesign.
show_windowboolean–Show the document window. Default true. Without a window the document is never the active one.

No output schema declared.

No examples provided.

place_image ~529

Place an image or PDF file (real path on the InDesign machine) into a graphic frame, replacing whatever it held (crop and scale are reset). fit: fill_proportionally, fit_proportionally, fit_content_to_frame or center_content; without it the frame fitting options of the frame apply. pdf_crop chooses the PDF page box: media (InDesign default – the whole sheet including printer marks, the usual reason for misplaced ads), crop, trim, bleed (for bleed ads), art or content; pdf_page picks the page (default 1). When the PDF has no such box (a QR code PDF without TrimBox, say), InDesign refuses – the tool then falls back to the next larger box (bleed → trim → crop → media) with a warning and reports pdf_crop_used; without pdf_crop the box preset in InDesign applies (the last choice of the place dialog, not always media) and the same fallback starts from that box; pdf_crop_fallback false turns that off and returns the io_error instead. The place preferences are set for this call only and restored. Returns frame_id, link_status, frame_bounds_mm, graphic_bounds_mm, pdf_crop_used and fits_frame (true when the graphic covers the frame within 0.2 mm; otherwise a warning); a warning when the effective resolution is below min_ppi. A changed CropBox of a PDF is ignored by InDesign; for asymmetric bleed derive a placement copy of the PDF. A timed-out call may still have placed – 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…
fitstring–Fitting after placing.
frame_idintegeryesObject id from get_page_state.
image_pathstringyesReal file path of the image or PDF on the machine running InDesign.
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).
pdf_cropstring–PDF page box to import. InDesign default media.
pdf_crop_fallbackboolean–Fall back to the next larger PDF box with a warning when the requested box is missing. Default true.
pdf_pageinteger–Page of a multi-page PDF. Default 1.

No output schema declared.

No examples provided.

place_text_file ~1,072

Place a manuscript file (.docx, .doc, .rtf or .txt on the InDesign machine) into a text frame – the cheap way for long articles instead of passing the text as a string. mode replace (default) empties the story first; append adds at the end of the story. retain_formatting false (default) imports plain text (Word styles and local formatting removed) so that paragraph_style (applied to every placed paragraph, like apply_paragraph_style_to_range) gives the document's paragraph style; retain_formatting true keeps Word styles and local formatting and imports the Word paragraph styles (names that already exist in the document are used as they are). style_map {"Word style": "document style"} maps Word paragraph styles to existing document styles after the import (forces retain_formatting true) and removes the mapped Word styles again (styles_removed); every target style must exist. typographers_quotes (default true) converts straight quotes. page_breaks (.docx, .doc, .rtf) decides what becomes of page breaks in the Word file: none (default – they are dropped and the text runs on), page_break (InDesign page breaks, Seitenumbruch – e.g. for a front matter with title, imprint and dedication on pages of their own) or column_break; a Word break in an otherwise empty paragraph leaves that empty paragraph at the top of the next page. Footnotes and endnotes are imported, tables come in as InDesign tables, graphics, index and table of contents are not imported (build them in InDesign with create_toc and with add_index_entry plus generate_index). Returns placed_start_index, placed_end_index and inserted_chars (story indices for the *_to_range tools), story_length, paragraph_count, styles_added (paragraph styles the import created – remove or map them), styles_mapped and overset of the story. autoflow true (Sitzung 8) keeps adding pages after the page of the last frame – same parent page, a frame with the size and frame options of the last one (on facing pages placed into the type ar…

NameTypeReqDescription
autoflowboolean–Add pages and threaded frames until the text fits. 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…
file_pathstringyesReal path of the .docx, .doc, .rtf or .txt file on the machine running InDesign.
frame_idintegeryesObject id from get_page_state.
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…
max_pagesinteger–autoflow: at most this many pages. Default 20.
modestring–replace (default): empty the story first; append: add at the end of the story.
page_breaksstring–Word files: what page breaks become – none (default, dropped), page_break or column_break. The answer echoes it as page_breaks (null for .txt).
paragraph_stylestring–Existing paragraph style applied to every placed paragraph.
retain_formattingboolean–true keeps Word styles and local formatting. Default false = plain text.
style_mapobject–Word paragraph style name → existing document style name; applied after the import.
typographers_quotesboolean–Convert straight quotes to typographic ones. Default true.

No output schema declared.

No examples provided.

position_image_in_frame ~302

Move the graphic inside a frame without scaling it; the frame stays as it is (frame bounds, crop edges and page). align puts the graphic's reference point onto the same reference point of the frame (center, top, bottom, left, right, top_left, top_right, bottom_left, bottom_right – e.g. top_left: upper left corners meet, center: centred); offset_mm {x, y} then shifts it by x/y mm (positive = right/down). Pass align, offset_mm or both. Returns frame_id, graphic_id, align, offset_mm, moved_by_mm {x, y}, graphic_bounds_mm, graphic_bounds_before_mm and frame_bounds_mm (relative to page_id, coordinate_space "page"; "spread" on the pasteboard) and fits_frame – a warning when the graphic no longer covers the frame. To change the size use fit_frame.

NameTypeReqDescription
alignstring–Reference point of graphic and frame that are brought together (one of nine).
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.
offset_mmobject–Shift in mm after align (or from the current position): positive x to the right, positive y down.

No output schema declared.

No examples provided.

preflight_document ~256

Run InDesign's preflight (Preflight) with profile_name or, without it, the document's working profile (falls back to the first available profile when the working profile is invalid). Waits for the process, returns profile_used, summary ("None" when there are no errors), error_count and findings[] with category, description, page_name and item, capped by max_findings (1–500, default 100). With list_profiles_only true only profiles[] is returned. Read-only: the process is created, awaited and removed. Caveat: overset text (Übersatz) is not always reported with the right page – get_frame_text on the last frame of each story is the reliable check.

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…
list_profiles_onlyboolean–Only list the available profiles, run nothing.
max_findingsinteger–Cap for findings[]. Default 100.
profile_namestring–Preflight profile to use. Default: the document's working profile.

No output schema declared.

No examples provided.

save_document ~170

Save the document. With path it is a save-as (Speichern unter); without path the document is saved in place. A document that has never been saved needs path, otherwise the call fails with io_error. Returns path as InDesign reports it afterwards. A document with managed stories (editorial workflow, see list_stories lock_state) is saved with a warning: saving the layout does not save or check in those stories in the editorial system.

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–Target file path for save-as. Required for a document that has never been saved.

No output schema declared.

No examples provided.

save_document_as ~253

Write the document to another file: mode copy (default) saves a copy (Kopie speichern) and the open document keeps its own file – the way to start the next issue from the current one; mode switch saves under the new name and the open document continues there (Speichern unter). template true writes an .indt. An existing file needs overwrite true. Returns path, bytes, overwritten, name and document_path of the open document afterwards. save_document is for saving in place. With managed stories (editorial workflow) both modes warn: the new file links to the same story files but is not bound to the editorial workflow.

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…
modestring–copy (default) or switch.
overwriteboolean–Replace an existing file. Default false.
pathstringyesTarget file path, ending in .indd or .indt, in an existing folder.
templateboolean–Write as template (.indt / stationery). Default false.

No output schema declared.

No examples provided.

set_document_bleed ~200

Set the document bleed (Anschnitt) and slug (Infobereich). bleed_mm and slug_mm each take a number (0–50, all edges) or an object with top/left/bottom/right; edges you leave out keep their value. Returns bleed_mm and slug_mm per edge plus bleed_uniform and slug_uniform. Independent of the bleed setting inside a PDF export preset. Read the current values with get_layout_grid.

NameTypeReqDescription
bleed_mm––Bleed in millimetres: one number for all edges or { top, left, bottom, right }.
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…
slug_mm––Slug in millimetres: one number for all edges or { top, left, bottom, right }.

No output schema declared.

No examples provided.

set_document_setup ~493

Change the document setup (Dokument einrichten) of an existing document: page size via preset (A4, Letter, Legal, Tabloid) or width_mm/height_mm, orientation (swaps width and height), facing_pages, pages (page count – a lower count deletes the last pages with their contents and needs allow_page_removal true), start_page_number. At least one parameter. Margins and bleed are set with set_layout_grid and set_document_bleed. Objects are not adjusted to a new page size – unless InDesign's own layout adjustment is active (Adjust Layout, or a liquid layout rule such as scale on a page or parent page): then InDesign moves or stretches them. adjust_layout false switches both off for this call only (rules and setting are restored afterwards), so objects keep their size; true switches Adjust Layout on for this call; omitted leaves InDesign's settings as they are and warns when a page size change met an active adjustment. To widen the inside margin (Bundsteg) without stretching frames use set_layout_grid with move_objects. Returns setup (read back), previous, pages_added, pages_removed, changed and layout_adjustment {requested, active_before[], layout_rules_suspended}; warns when the page size or facing pages changed.

NameTypeReqDescription
adjust_layoutboolean–false: no layout adjustment for this call (Adjust Layout and liquid layout rules off, restored afterwards); true: Adjust Layout on for this call. Default: as set in InDesign.
allow_page_removalboolean–Confirm that a lower page count may delete pages with their contents.
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…
facing_pagesboolean–Facing pages (Doppelseiten) on or off.
height_mmnumber–Page height in mm.
orientationstring–Swaps width and height when they do not match.
pagesinteger–Page count. Fewer than now deletes pages (allow_page_removal).
presetstring–Page size preset.
start_page_numberinteger–Number of the first page (document preference; sections may override it).
width_mmnumber–Page width in mm.

No output schema declared.

No examples provided.

set_frame_appearance ~564

Set fill, stroke colour and stroke weight of an object. fill and stroke take "#RRGGBB" (an RGB swatch is created or reused) or "none"; fill_swatch_name and stroke_swatch_name take the exact name of an existing colour, tint or gradient swatch instead (print: the document's CMYK swatches, see list_swatches) and each excludes the corresponding hex parameter. stroke_weight_pt is in points (0 or more). fill_tint_percent / stroke_tint_percent set the tint (0–100), gradient_fill_angle_deg / gradient_stroke_angle_deg the angle of a linear gradient (a warning when the swatch is no gradient). At least one parameter besides frame_id is required. Returns fill_kind and stroke_kind (none, color, tint, gradient, mixed_ink), the tints (null when none is set), the gradient angles and gradient_fill_start_mm / gradient_fill_length_mm as InDesign holds them. stroke "none" also sets the weight to 0, because [None] alone can resolve to black in localised documents – the reliable way to remove a stroke is stroke_weight_pt 0; check the export. Returns applied_fill, applied_stroke and applied_stroke_weight_pt read back from the object, plus swatch_ids of new swatches.

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…
fillstring–"#RRGGBB" or "none".
fill_swatch_namestring–Exact name of an existing swatch for the fill. Not together with fill.
fill_tint_percentnumber–Tint of the fill swatch in percent (0–100).
frame_idintegeryesObject id from get_page_state.
gradient_fill_angle_degnumber–Angle of a linear gradient fill in degrees (-180 to 180); a warning when the fill is no gradient swatch.
gradient_stroke_angle_degnumber–Angle of a linear gradient stroke in degrees (-180 to 180); a warning when the stroke is no gradient swatch.
strokestring–"#RRGGBB" or "none" (also sets the weight to 0).
stroke_swatch_namestring–Exact name of an existing swatch for the stroke. Not together with stroke.
stroke_tint_percentnumber–Tint of the stroke swatch in percent (0–100).
stroke_weight_ptnumber–Stroke weight in points; 0 removes the stroke.

No output schema declared.

No examples provided.

set_frame_bounds ~388

Move or resize an existing text frame, image frame, rectangle or line without rebuilding it: bounds_mm {x, y, width, height}. With page_id the values are relative to that page (x/y may be negative for bleed); without page_id they are spread coordinates (Druckbogen). Never changes the spread. Groups are refused (their graphics would stay behind). A rotated object takes the values in its rotated space. Resizing an image frame crops: the picture keeps its position and scale inside the frame, so a smaller frame shows less of it (the way to trim a bleed picture to the trim edge, or to crop a photo without rescaling) – use fit_frame when the picture should follow the new frame instead. Returns frame_id, bounds_mm as InDesign reports them, landed_on_page_id and landed_on_page_name; a landing on another page is a warning. Returns coordinate_space ("page" with page_id, otherwise "spread"); a page change without page_id is a warning, because page-relative values read elsewhere shift the object by one page width when passed as spread coordinates. When the object carries a text wrap, the document is recomposed afterwards and recomposed, overset_stories_before, overset_stories_after and overset_changed report whether the overset state of the document changed.

NameTypeReqDescription
bounds_mmobjectyesPosition and size in mm from the top left corner of the page (or spread with coordinate_space "spread").
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.
page_idinteger–Page the coordinates refer to (same spread). Without it: spread coordinates.

No output schema declared.

No examples provided.

set_frame_columns ~200

Set the number of columns inside a text frame (not the page grid): count (1 or more; the parameter is count, not column_count) and gutter_mm (Spaltenabstand; without it the frame keeps its current gutter – InDesign's own default for new frames is 1 pica = 4.233 mm). Returns frame_id, count and gutter_mm read back. Fails with invalid_state for anything but a text frame.

NameTypeReqDescription
countintegeryesNumber of columns inside the frame.
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.
gutter_mmnumber–Gutter between the columns in mm. Without it the current gutter of the frame stays.

No output schema declared.

No examples provided.

set_frame_inset ~234

Set the inset spacing (Innenabstand) of a text frame: inset_mm {top, left, bottom, right}, all four required, 0 or more; and/or the vertical justification (vertikale Ausrichtung, Textrahmenoptionen): vertical_justification top, center, bottom or justify. At least one of the two; what is omitted stays. Returns frame_id, inset_mm and vertical_justification read back (get_frame_options reads both under text).

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.
inset_mmobject–Inset in mm: { top, left, bottom, right }, all required. Optional when vertical_justification is given.
vertical_justificationstring–Vertical justification of the text in the frame (vertikale Ausrichtung). Without it the frame keeps its setting.

No output schema declared.

No examples provided.

set_layout_grid ~584

Set margins, column count and gutter on document pages and, by default, master pages, and redistribute the column guides evenly (relative to the type area). Whatever is omitted stays as it is. margins_mm takes top, left, bottom, right in mm – for facing pages "left" is the inside margin (Bundsteg) and "right" the outside margin. column_count 1–30, column_gutter_mm. page_ids[] limits the change to those pages (document or master pages); without it every page and the document defaults for new pages are changed – a client may block one call over all pages, so pass page_ids in blocks if needed. Optional baseline_grid {start_mm, increment_pt, relative_to: top_of_page | top_of_margin} sets the document baseline grid (Grundlinienraster). Moves only guides, never frames – unless move_objects is true: then every object on the changed pages keeps its size and moves with the inside (Bundsteg) and top margin (on a left-hand page of facing pages to the left when the inside margin grows), e.g. to widen the gutter for binding without stretching the type; locked objects, objects on locked layers and objects reaching beyond the page edge (bleeding images) stay and are listed in skipped_objects[] {item_id, page_id, reason}, moved ones in moved_objects[] {item_id, page_id, dx_mm, dy_mm}; changing the outside margin alone moves nothing. Returns changed_pages[] {page_id, name, margins_mm, column_count, column_gutter_mm, type_area_mm, column_width_mm, columns_positions_mm} read back from InDesign, with a warning per page whose column positions do not lie on the even grid. A timed-out call may still have completed in InDesign – check with get_layout_grid before repeating.

NameTypeReqDescription
baseline_gridobject–Document baseline grid (Grundlinienraster); document-wide, not per page.
column_countinteger–Number of columns, 1–30.
column_gutter_mmnumber–Gutter (Spaltenabstand) in mm.
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_parent_pagesboolean–Also include master pages (Musterseiten). Default true.
margins_mmobject–Margins in mm; omitted edges stay.
move_objectsboolean–true: move the objects on the changed pages with the inside and top margin instead of leaving them (no resizing). Default false.
page_idsarray–Pages to change (document or master pages). Without it: all pages plus the document defaults.

No output schema declared.

No examples provided.

set_paragraph_options ~990

Set paragraph options of a text frame: alignment (left, center, right, justify_left, justify_center, justify_right, justify_full), hyphenation (true/false – usually false for headlines), no_break (true/false, keeps the text of the paragraphs on one line), 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: words_longer_than, after_first, before_last, ladder_limit, zone_mm, capitalized_words, last_word, across_columns, weight) and justification_options (word_spacing, letter_spacing, glyph_scaling, single_word_justification, composer, auto_leading_percent). 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}}. drop_cap {lines (0 = off), characters, character_style} sets the drop cap (Initiale); an opening quotation mark counts as a character, so characters 2 drops it together with the first letter. Without start_index/end_index every paragraph of the frame is changed; with them every paragraph the range touches. Returns paragraphs_changed, alignment, hyphenation, no_break, keep_options, hyphenation_options, justification_options, indents, drop_cap of the first paragraph read back after the change, and overset of the story – strict keep options can push text into overset or leave empty column ends; check get_frame_lines.

NameTypeReqDescription
alignmentstring–Paragraph alignment.
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…
drop_capobject–Drop cap (Initiale) {lines, characters, character_style}; the answer reads it back as drop_cap {lines, characters, character_style (null without style)}.
end_indexinteger–Optional range end (exclusive).
first_line_indent_mmnumber–First-line indent (Einzug erste Zeile) in mm; negative = hanging indent, at most -left_indent_mm.
frame_idintegeryesObject id from get_page_state.
hyphenationboolean–Hyphenation on or off.
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.
left_indent_mmnumber–Left indent (Einzug links) in mm.
no_breakboolean–No-break for the paragraph text.
right_indent_mmnumber–Right indent (Einzug rechts) in mm.
start_indexinteger–Optional range start (inclusive); without it the whole frame.
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.

No output schema declared.

No examples provided.

set_section ~358

Start a section on page_id or change the one starting there: page_number_start (sets continue_numbering false), continue_numbering, page_number_style (arabic, upper_roman, lower_roman, upper_letters, lower_letters), section_prefix (up to 8 characters), include_section_prefix, marker (text for the section marker), name. remove true deletes the section starting on page_id (never the first). Returns created, section (read back), previous, sections[] and pages[] {page_id, name} – page names change with the numbering, so re-read them before using page names in export_pdf ranges. Use it for an issue that starts at page 3, roman front matter, or a supplement with its own numbering.

NameTypeReqDescription
continue_numberingboolean–true: continue from the previous section.
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_section_prefixboolean–Show the prefix in page numbers.
markerstring–Section marker text (Abschnittsmarke).
namestring–Section name.
page_idintegeryesDocument page on which the section starts (from list_pages).
page_number_startinteger–Page number of the first page of the section; implies continue_numbering false.
page_number_stylestring–Numbering style.
removeboolean–Remove the section starting on page_id. Not combinable with other settings.
section_prefixstring–Prefix before the page number, up to 8 characters.

No output schema declared.

No examples provided.

set_story_options ~272

Read or set story-wide options of the story a text frame belongs to (frame_id names any frame of the story): optical_margin_alignment (optischer Randausgleich / hängende Interpunktion – punctuation and letter edges hang slightly outside the column edge, which makes justified edges look straight) and optical_margin_size_pt (the point size the alignment is calculated for; usually the body text size, 0.1–1296). Without parameters it is read-only. Returns story_id, frame_ids[] of the story in threading order, the two values after the change, previous {…}, changed[] and overset of the story. Optical margin alignment recomposes every line of the story – check get_frame_lines afterwards. get_frame_options shows the two values under text as well.

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.
optical_margin_alignmentboolean–Switch optical margin alignment on or off for the whole story.
optical_margin_size_ptnumber–Reference point size for the alignment, usually the body text size.

No output schema declared.

No examples provided.

set_text ~461

Replace the whole story of a text frame (really replace, never append): text with real line breaks as paragraph marks ("\n" or "\r\n" in the parameter become paragraph returns; U+2028 stays a forced line break). "" empties the frame. The text takes the document text defaults as local formatting – apply a paragraph style afterwards with apply_paragraph_style_to_range over the whole story. For a threaded frame the entire story across all frames is replaced (warning). Returns frame_id, character_count read back and overset. Stories managed by an editorial workflow (InCopy) that are not checked out here (lock_state checked_in_story, locked_story, missing_lock_state or mixed_lock_state) are refused before anything is written: invalid_state with details.code "story_locked" (details: frame_id, story_id, lock_state, managed_file) – check the story out in the editorial system or in InCopy first. 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. Returns placeholders_replaced {name: count} and placeholders_unknown[].

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.
placeholdersboolean–Expand {{…}} placeholders into special characters. Default true; false writes them literally.
textstringyesNew text; line breaks become paragraph marks, {{line_break}} a forced line break; "" empties the frame.

No output schema declared.

No examples provided.

set_text_in_range ~693

Replace characters start_index (inclusive) to end_index (exclusive) of the story of a text frame with text; start == end inserts, text "" deletes the range. The new text keeps the formatting of the first replaced character up to its first paragraph mark (keep_format_of "start", default) – also when the range begins a paragraph that follows a paragraph with other formatting; every further new paragraph takes the formatting and paragraph style of the replaced paragraph at the same position (beyond the last one: of the last replaced paragraph). If the range begins with a paragraph mark, the paragraphs merge and the new text continues that paragraph in its formatting. The right way for formatted placeholders and for a full swap (0 to story_length). keep_format_of "before" leaves the choice to InDesign (the range is replaced in one step); "none" removes character style and local character formatting from the new text, so it shows its paragraph style. An insertion (start == end) takes InDesign's formatting of the insertion point unless keep_format_of is "none". An empty line is two line breaks. Indexes come from get_frame_text. Returns frame_id, replaced_chars, inserted_chars, story_length and keep_format_of. Stories managed by an editorial workflow (InCopy) that are not checked out here (lock_state checked_in_story, locked_story, missing_lock_state or mixed_lock_state) are refused before anything is written: invalid_state with details.code "story_locked" (details: frame_id, story_id, lock_state, managed_file) – check the story out in the editorial system or in InCopy first. 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_brea…

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); equal to start_index inserts.
frame_idintegeryesObject id from get_page_state.
keep_format_ofstring–Formatting of the new text: "start" (default) the first replaced character up to the first new paragraph mark, then paragraph by paragraph the replaced paragraph at the same position; "before" whatev…
placeholdersboolean–Expand {{…}} placeholders into special characters. Default true; false writes them literally.
start_indexintegeryesFirst character to replace (inclusive).
textstringyesReplacement text; "" deletes. Placeholders such as {{nbsp}} are expanded.

No output schema declared.

No examples provided.

set_text_wrap ~233

Set the text wrap (Textumfluss) of an object: mode none, bounding_box, object_shape, jump_object or next_column, with an optional offset as offset_mm or offset_pt {top, left, bottom, right} (one of them, not both; object_shape uses only one distance). The reliable cure for text frames pushed into overset by a new frame is mode "none". Returns frame_id, mode and offset_mm read back. The document is recomposed afterwards; recomposed, overset_stories_before, overset_stories_after and overset_changed report whether the overset state of the document 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.
modestringyesText wrap mode.
offset_mmobject–Wrap offset in mm.
offset_ptobject–Wrap offset in points.

No output schema declared.

No examples provided.

thread_text_frames ~180

Thread (verketten) two text frames into one story: the text of source_frame_id continues in target_frame_id. Already threaded to each other = no-op (already_threaded true). Text already in the target is merged into the story after the source text (warning). A source that already continues elsewhere, or a target that already continues another frame, is refused with invalid_state. Returns source_frame_id, target_frame_id, story_id and story_character_count.

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…
source_frame_idintegeryesFrame whose text continues in the target.
target_frame_idintegeryesFrame that receives the continuation.

No output schema declared.

No examples provided.

update_links ~155

Update links whose file changed on disk ("Verknuepfung aktualisieren"): link_ids[] (1 to 500) or, without it, every LINK_OUT_OF_DATE link. Ids that are not out of date come back as "nothing to do", no error. Returns results[] {link_id, name, page_name, status_before, status_after}, updated, failed and considered.

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…
link_idsarray–Links to update. Default: all out-of-date links.

No output schema declared.

No examples provided.

Install

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

LayoutBridge Light for Adobe InDesign® runs locally as an npm package, launched with npx -y layoutbridge-light. 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-light

# add to Claude Code
claude mcp add com-mcp-interfaces-layoutbridge-light -- npx -y layoutbridge-light
Common questions

What is the LayoutBridge Light for Adobe InDesign® MCP server?

LayoutBridge Light for Adobe InDesign® is an MCP server listed in the public MCP registry as com.mcp-interfaces/layoutbridge-light. layoutbridge-light – book typesetting in Adobe® InDesign® via MCP: text, styles, TOC, PDF, EPUB. This page covers its npm package (layoutbridge-light).

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

LayoutBridge Light for Adobe InDesign® scores 61 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 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 Light for Adobe InDesign® MCP server expose?

LayoutBridge Light for Adobe InDesign® exposes 77 tools: get_app_version, list_documents, open_document, close_document, list_pages, and 72 more. Their descriptions and schemas cost roughly 32,033 tokens of context every time the server is loaded.

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

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