indesign-nutria-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOG_LEVEL | No | Log level: debug | info | warn | error | info |
| BRIDGE_PORT | No | WebSocket port the UXP plugin connects to | 8120 |
| INDESIGN_APP | No | The InDesign application process name; matches your installed version (used by the plugin-free macOS proxy) | Adobe InDesign 2026 |
| BRIDGE_WS_URL | No | WebSocket URL the proxy connects to | ws://127.0.0.1:8120 |
| HTTP_BRIDGE_PORT | No | Port for the optional REST fallback bridge | 3000 |
| SERVER_TRANSPORT | No | MCP server transport: stdio | websocket | stdio |
| BRIDGE_TIMEOUT_MS | No | Bridge timeout in milliseconds; a long export is not a hang | 120000 |
| COM_BRIDGE_ENABLED | No | Windows only: drive InDesign over COM, no plugin required | false |
| HTTP_BRIDGE_ENABLED | No | Optional REST fallback bridge | false |
| BRIDGE_RECONNECT_DELAY_MS | No | Delay in milliseconds between bridge reconnection attempts | 3000 |
| RESPONSE_ENVELOPE_SUCCESS | No | Wrap successful results as { ok: true, ... } | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| document_createC | Create a new InDesign document with specified dimensions, margins, and settings |
| document_openC | Open an existing InDesign document from file path |
| document_saveC | Save the active InDesign document, optionally to a specific path |
| document_closeC | Close the active InDesign document with save options |
| document_getInfoB | Get detailed information about the active document including page count, dimensions, and margins |
| document_listOpenC | List all currently open InDesign documents |
| document_getStateA | Get the editing state in one call: the front document (name, path, page count, size, margins), the index of that document, the names of every open document, the active layer, and how many objects are selected. Prefer this over chaining document_getInfo and document_listOpen |
| document_getPageStoriesC | Get all stories that appear on a specific page |
| document_getStoryPagesC | Get all pages covered by a specific story (for finding which pages a story lives on) |
| page_addC | Add a new page to the active document at a specified position |
| page_deleteC | Delete a page from the active document by index |
| page_duplicateC | Duplicate a page in the active document |
| page_moveC | Move a page to a new position in the active document |
| page_getInfoC | Get detailed information about a specific page |
| page_listAllB | List all pages in the active document with their properties |
| page_applyMasterC | Apply a master spread to a page |
| text_addFrameC | Add a text frame to a specified page with content |
| text_setContentC | Set content of a text frame |
| text_getContentC | Get content from a text frame |
| text_getStoriesC | List all stories in the active document with optional timeout and max results |
| text_applyParagraphStyleC | Apply a paragraph style to a text range |
| text_findReplaceC | Find and replace text content |
| text_getTextFramesC | List all text frames on a page with optional timeout |
| style_listParagraphB | List all paragraph styles in the active document |
| style_listCharacterC | List all character styles in the active document |
| style_listObjectC | List all object styles in the active document |
| style_createParagraphC | Create a new paragraph style |
| style_createCharacterC | Create a new character style |
| style_duplicateD | Duplicate a style |
| style_deleteC | Delete a style |
| image_listC | List all placed images in a page |
| image_getLinksC | Get link status for all placed images |
| shape_createC | Create a geometric shape (rectangle, ellipse, polygon, line) |
| shape_listC | List all shapes on a page |
| group_listC | List all groups in a page |
| group_ungroupC | Ungroup a group by index |
| export_documentC | Export the active document to a specified format (PDF, JPG, PNG, EPUB, HTML, package) |
| export_batchFolderA | Export every InDesign (.indd) file in a folder to PDF in one run — opens each document invisibly and reports per-file results |
| export_preflightC | Run a preflight check on the active document |
| export_getSwatchesB | Get all swatches (colors, gradients, tints) from the active document |
| export_getFontsB | Get all fonts used in the active document |
| export_getMasterSpreadsC | List all master spreads in the active document |
| export_getTablesC | List all tables in the active document |
| export_getXmlTagsC | List XML tags in the active document |
| export_executeScriptC | Execute arbitrary ExtendScript code in InDesign |
| script_runC | Execute arbitrary ExtendScript code with optional debug mode that returns line-level error stack traces |
| master_createC | Create a new master spread with a given name and page count |
| master_duplicateC | Duplicate an existing master spread |
| master_applyC | Apply a master spread to a specific page |
| master_deleteC | Delete a master spread by name |
| master_listB | List all master spreads with page count |
| master_getPagesC | List all pages on a master spread |
| table_createC | Create a table on a page at specified bounds with row/column count |
| table_listB | List all tables on a page or in the document |
| table_addRowC | Add a row to a table at a specific index |
| table_addColumnC | Add a column to a table at a specific index |
| table_deleteRowC | Delete a row from a table |
| table_deleteColumnC | Delete a column from a table |
| table_setCellC | Set content of a specific cell |
| table_getInfoC | Get detailed info about a table (rows, columns, cell contents) |
| table_mergeCellsC | Merge a range of cells into one |
| table_splitCellC | Split a merged cell |
| table_setCellFillC | Set a cell's fill color and tint |
| table_setCellStrokeC | Set cell edge stroke properties |
| table_setCellInsetC | Set cell inset spacing |
| table_setCellAlignmentC | Set cell text alignment |
| table_setHeaderFooterC | Set header and footer row counts |
| table_setRowColumnSizeC | Set row height or column width |
| resources_listLinksC | List all document links with status and file path |
| resources_updateLinkB | Update/relink a specific link by index to a new file |
| resources_updateAllLinksC | Re-establish all broken/modified links |
| resources_embedLinkC | Embed a linked file into the document |
| resources_unembedLinkC | Unembed a file and save as linked resource |
| resources_getLinkInfoC | Get detailed status for a specific link |
| book_listB | List all open books in InDesign |
| book_openC | Open an InDesign book file (.indb) |
| book_getDocumentsC | List all documents in a book |
| book_synchronizeC | Synchronize book documents with the style source |
| interactive_listHyperlinksC | List all hyperlinks in the active document |
| interactive_addHyperlinkC | Add a hyperlink to a text selection or page item |
| interactive_deleteHyperlinkC | Delete a hyperlink by index |
| interactive_listButtonsC | List all buttons in the active document |
| interactive_listAnchorsC | List all cross-reference anchors in the active document |
| xml_listTagsC | List all XML tags in the active document |
| xml_addTagC | Create a new XML tag |
| xml_deleteTagC | Delete an XML tag by name |
| xml_tagPageItemC | Apply an XML tag to a page item |
| xml_exportC | Export document structure as XML |
| xml_importC | Import XML file into the document |
| toc_createStyleC | Create or modify a Table of Contents style in the active document |
| toc_generateC | Generate a Table of Contents on a specified page |
| toc_listStylesB | List all Table of Contents styles in the active document |
| toc_updateC | Update (regenerate) an existing TOC from its story |
| note_addFootnoteC | Add a footnote to a specific paragraph in a story |
| note_listFootnotesC | List all footnotes in a story or the active document |
| note_footnoteOptionsC | Set footnote options for the active document |
| note_addEndnoteC | Add an endnote to a story |
| index_addEntryC | Add an index entry for the current selection |
| index_generateC | Generate the index on a specified page |
| index_listTopicsC | List all index topics in the active document |
| index_createTopicC | Create a new index topic |
| grep_findC | Find text using GREP pattern in the active document |
| grep_replaceC | Find and replace text using GREP pattern |
| grep_findFormatC | Find text with specific formatting |
| grep_replaceFormatC | Find and replace text while changing formatting |
| text_linkFramesC | Link (thread) two text frames together |
| text_unlinkFramesC | Unlink a text frame from its thread |
| text_setColumnsC | Set column count and gutter for a text frame |
| text_setTextWrapC | Set text wrap preferences for an object |
| text_setDropCapC | Set drop cap options for a paragraph |
| text_setKeepOptionsC | Set keep options (widow/orphan control) for a paragraph |
| text_setInsetSpacingC | Set text frame inset spacing |
| text_setAutoSizeC | Set auto-sizing type for a text frame |
| text_setVerticalJustificationC | Set vertical justification for a text frame |
| text_setFirstBaselineC | Set first baseline options for a text frame |
| text_setIgnoreWrapC | Set whether text frame ignores text wrap |
| text_setParagraphRuleAboveC | Add or modify rule above a paragraph |
| text_setParagraphRuleBelowC | Add or modify rule below a paragraph |
| text_setTabsC | Set tab stops for a paragraph |
| text_setHyphenationC | Set hyphenation settings for a paragraph |
| text_getFormattingB | Get detailed formatting (font, size, style, character style) for each text style range in a paragraph |
| text_applyCharStyleC | Apply a character style to a range of characters within a paragraph |
| text_applyFontC | Apply font family, style, and/or size to a range of characters within a paragraph |
| text_searchC | Search text within a story using a GREP pattern, returning match positions and context |
| text_searchFormattingC | Find text ranges with specific formatting (font family, style, or size) within a story |
| xref_createC | Create a cross-reference in the active document |
| xref_listB | List all cross-references in the active document |
| xref_updateFormatC | Update the format of a cross-reference |
| effect_applyDropShadowC | Apply a drop shadow effect to an object |
| effect_applyFeatherC | Apply a feather effect to an object |
| effect_applyTransparencyC | Set transparency and blend mode for an object |
| effect_applyGradientFeatherC | Apply a gradient feather effect to an object |
| transform_alignC | Align objects on a page relative to selection, margins, or page |
| transform_distributeC | Distribute objects evenly on a page |
| transform_rotateC | Rotate an object by a specified angle |
| transform_scaleC | Scale an object by percentages |
| transform_flipC | Flip an object horizontally or vertically |
| tableStyle_createC | Create a table style in the active document |
| tableStyle_listB | List all table styles in the active document |
| cellStyle_createC | Create a cell style in the active document |
| cellStyle_listB | List all cell styles in the active document |
| section_createC | Create a new section starting at a specified page |
| section_listB | List all sections in the active document |
| section_setNumberingC | Update page numbering for a section |
| section_deleteC | Delete a section by its index |
| color_swatch_createC | Create a new color swatch |
| color_swatch_listB | List all color swatches in the document |
| color_swatch_deleteC | Delete a color swatch by name |
| color_gradient_createC | Create a gradient swatch |
| color_applyB | Apply a color swatch to selected item (fill or stroke) |
| color_ink_listB | List all inks in the document |
| font_listC | List all available fonts |
| font_findC | Search fonts by name |
| font_changeC | Change font of selected text |
| font_glyph_insertC | Insert a special glyph at the cursor position |
| font_missing_checkC | Check for missing fonts in the document |
| image_placeC | Place an image from a file path onto a page |
| image_adjustC | Adjust image properties (brightness, contrast, etc.) |
| image_fitC | Fit image content to its frame |
| image_relinkC | Relink/replace an image with a new file |
| image_infoC | Get metadata for an image on a page |
| layer_createC | Create a new layer in the active document |
| layer_listC | List all layers in the active document |
| layer_reorderC | Move a layer to a new position in the layer stack |
| layer_setPropertiesC | Set layer properties (visibility, lock, etc.) |
| layer_deleteD | Delete a layer |
| shape_rectangle_createC | Create a rectangle on a page |
| shape_ellipse_createC | Create an ellipse or circle on a page |
| shape_polygon_createC | Create a polygon on a page |
| shape_line_createC | Create a graphic line on a page |
| shape_modifyC | Modify properties of an existing shape |
| shape_deleteC | Delete a shape from a page |
| undoC | Undo the last operation |
| redoC | Redo the last undone operation |
| undo_historyC | Get undo/redo state information |
| undo_beginGroupA | Begin an undo group. While active, each subsequent script runs as a single undo step, so one Undo reverts a whole tool call (e.g. a multi-step recipe). It cannot merge separate calls into one step — each call is still its own undo entry. Call undo_endGroup() to restore the default. |
| undo_endGroupB | End the undo group and restore the default undo behavior |
| anchoredObject_createC | Create an anchored object at an insertion point or attach to a text frame |
| anchoredObject_setPositionC | Reposition an anchored object |
| anchoredObject_releaseC | Release anchored object to regular page item |
| anchoredObject_getSettingsC | Get anchored object settings |
| anchoredObject_setPropertiesC | Set multiple anchored object properties |
| list_defineC | Define a new numbered or bulleted list |
| list_applyToParagraphC | Apply a list to a specific paragraph |
| list_applyToSelectionC | Apply a list to the current text selection |
| list_removeFromParagraphC | Remove list formatting from a paragraph |
| list_listB | List all defined lists in the document |
| list_restartNumberingC | Restart numbering at a specific paragraph |
| dataMerge_selectDataSourceC | Select a data source (CSV/TSV/XML) file for data merge |
| dataMerge_listFieldsB | List available data merge fields from the current data source |
| dataMerge_mergeRecordsC | Merge records into the document using the selected data source |
| dataMerge_exportC | Export the merged document to a file |
| dataMerge_removeDataSourceB | Remove the current data source from the document |
| preview_documentC | Render a page of the active document as an image (PNG or JPEG) so you can visually inspect layout, colors and typography |
| recipe_flowTextStoryA | Place a text file and flow it across as many pages as it needs in one call — creates the frames, links them, adds pages when it runs out, and reports where the story ended and whether it still overflows |
| recipe_exportPresetA | Export the active document to PDF using a named PDF export preset in one call — validates the preset first and, if it is wrong, fails with the list of valid preset names |
| changes_getStatusA | Report document change activity pushed by the plugin over the bridge — no InDesign round-trip. Pass |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| session_status | |
| bridge_status | |
| tools_inventory | |
| document_active |
TDQS
Scored across 197 tools
Many tools duplicate one another (export_executeScript/script_run, page_applyMaster/master_apply, table_list/export_getTables, font_list/export_getFonts), making selection ambiguous. Although some descriptions clarify intent, the sheer overlap forces agents to guess.
Names mix noun_verb and verb_noun patterns (page_add vs export_document) and use inconsistent camelCase (document_getStoryPages) alongside snake_case. Prefixes vary by domain (table_ vs tableStyle_, font_missing_check), preventing a predictable convention.
197 tools is far beyond the 50+ threshold for extreme mismatch, even for a feature-rich domain like InDesign automation. Many tools exist only to duplicate or wrap others, bloating the surface unnecessarily.
The surface covers most InDesign operations—documents, pages, text, tables, images, styles, export, data merge, scripts—with few obvious gaps. Missing a group_create and book_create/book_close prevents a perfect score, but core workflows are workable.