# layoutbridge-spm

LayoutBridge for Adobe InDesign® – MCP server for Adobe® InDesign® (npm package layoutbridge-spm). Adobe and InDesign are either registered trademarks or trademarks of Adobe in the United States and/or other countries.

- **Type:** MCP server
- **Trust:** 60/100 (B), scored on the package rubric
- **Verification:** community-indexed — nobody has claimed this listing
- **Version:** 1.0.1
- **Author:** MCP Interfaces
- **License:** SEE LICENSE IN LICENSE
- **npm:** layoutbridge-spm
- **Source:** https://mcp-interfaces.com/layoutbridge/
- **Compatible clients:** claude-code, cursor, copilot, gemini (basis: transport)

## Trust

60/100 (B), scored on the package rubric
- Publisher verified: no
- Install scripts: nothing suspicious found
- Prompt-injection scan: not run
- Obfuscation scan: not run
- Evidence age: 0 days

## Security scan

- **Status:** clean
- **Scanned:** 2026-09-24T19:07:26.462Z
- **Version scanned:** 1.0.1
- **CVEs:** none found by OSV at scan time

## Tools

40 declared. Statically extracted from the shipped source — a floor on the surface, not a census.
- `get_app_version` — 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 
- `list_documents` — 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 and 
- `open_document` — Open an existing .indd, .indt or .idml file. Returns document_id, name, page_count, facing_pages (Doppelseiten) and already_open, which is true when the file wa
- `close_document` — 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 
- `list_pages` — 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 
- `get_page_state`
- `create_document`
- `save_document` — 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, ot
- `export_pdf`
- `preflight_document`
- `document_text_defaults`
- `set_document_bleed` — 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; ed
- `add_page`
- `delete_page`
- `move_pages`
- `move_pages_to_new_spread`
- `list_parent_pages` — 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 p
- `create_parent_page`
- `duplicate_parent_page`
- `apply_parent_to_page` — 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 pa
- `override_parent_item_on_page` — Make a local copy of a master page object on page_id so it can be edited there. parent_item_id must lie on a master spread (take it from get_page_state on a mas
- `insert_page_number_marker` — Insert the automatic page number placeholder (Seitenzahl-Platzhalter) into text frame frame_id at position "start" or "end" (default end). Works on master page 
- `get_layout_grid`
- `set_layout_grid`
- `list_guides` — List every ruler guide (Hilfslinie) of the document – not margin or column guides – from document spreads and, by default, master spreads, merged by id. Per gui
- `delete_guides`
- `create_text_frame`
- `create_image_frame`
- `create_rectangle`
- `create_line`
- `duplicate_frame` — 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
- `delete_frame` — 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 
- `clear_frame_content` — 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. 
- `set_frame_bounds`
- `move_frame_to_page`
- `set_frame_rotation` — Set the absolute rotation of an object in degrees (-360 to 360; positive = counterclockwise, as in InDesign; a portrait photo credit is -90; 0 straightens it). 
- `set_frame_stacking` — Change the stacking order (Stapelreihenfolge) of an object within its layer: bring_to_front, send_to_back, bring_forward or send_backward. Newly created objects
- `set_frame_appearance`
- `set_frame_columns` — 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; wi
- `set_frame_inset` — 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 (vert

## Install

**Verdict: review** — Installable, but 1 thing to check first: No publisher has proved control of this listing; it is indexed, not vouched for.
**Cautions** (coverage gaps and advisories — never blocking)
- No publisher has proved control of this listing; it is indexed, not vouched for.
**Config** (claude-code):
```json
"{\n  \"mcpServers\": {\n    \"layoutbridge-spm\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"layoutbridge-spm\"\n      ],\n      \"env\": {\n        \"LAYOUTBRIDGE_SPM_LICENSE_KEY\": \"<YOUR_LAYOUTBRIDGE_SPM_LICENSE_KEY>\"\n      }\n    }\n  }\n}"
```
**Credentials it will ask for** (names only — Forge never holds a value):
- `LAYOUTBRIDGE_SPM_LICENSE_KEY` — Layoutbridge Spm License Key (optional)
Placeholders only. Forge never holds, brokers, or transmits a credential value — replace each <YOUR_NAME> in your own config file. Do not send a value back to Forge; no Forge endpoint accepts one.
- This entry needs 1 credential (0 required). The generated config carries placeholders, so it will fail in the editor rather than at runtime if they are left unset.

## Blast radius

Extensive blast radius — deletes data; holds an api key.
- Floor 57, ceiling 57 (tier: extensive)
- This is impact, not likelihood. A high radius is not a defect: a filesystem server is supposed to write files. It is never part of the trust score.

## Machine-readable views of this entry

- Signed JSON: https://forgeregistry.com/api/v1/packages/layoutbridge-spm
- Install plan: https://forgeregistry.com/api/v1/packages/layoutbridge-spm/install-plan
- Alternatives: https://forgeregistry.com/api/v1/alternatives/layoutbridge-spm
- HTML page: https://forgeregistry.com/registry/layoutbridge-spm
- MCP: POST https://forgeregistry.com/api/mcp → `forge_get_package` / `forge_install_plan`

## About this document

Generated by Forge (https://forgeregistry.com) — a compact rendering of the same record served, signed, at the JSON URL above. Trust and scan facts are the registry's own measurements; anything Forge did not measure is named as unmeasured rather than omitted.
