Docx

219 tools. 166 can modify or destroy data without limits.

20 destructive tools with no built-in limits. Policy required.

Last updated:

166 can modify or destroy data
53 read-only
219 tools total

Community server · catalogue entry verified 11/06/2026

How to control Docx ↓

What Docx exposes to your agents

Read (53) Write / Execute (146) Destructive / Financial (20)
Critical Risk

The most dangerous Docx tools

166 of Docx's 219 tools can modify, destroy, or commit something on every call — and an agent calls them with no built-in limits.

How to control Docx

PolicyLayer is an MCP gateway — it sits between your AI agents and Docx, and nothing reaches the server without passing your rules. These are the rules we recommend:

Deny destructive operations
{
  "delete_column_from_table": {
    "deny_if": [
      {
        "conditions": [],
        "on_deny": "Blocked by default. Requires approval."
      }
    ]
  }
}

Destructive tools should never be available to autonomous agents without human approval.

Rate limit write operations
{
  "accept_changes": {
    "limits": [
      {
        "counter": "accept_changes_per_hour",
        "window": "hour",
        "max": 30,
        "scope": "grant"
      }
    ]
  }
}

Prevents bulk unintended modifications from agents caught in loops.

Cap read operations
{
  "audit_document": {
    "limits": [
      {
        "counter": "audit_document_per_minute",
        "window": "minute",
        "max": 60,
        "scope": "grant"
      }
    ]
  }
}

Controls API costs and prevents retry loops from exhausting upstream rate limits.

  1. Create a free account and register Docx — nothing to install.
  2. Add these rules — paste them, or build them visually. Tune the limits to your setup.
  3. Point your MCP client (Claude, Cursor, anything) at your gateway URL.
ENFORCE POLICY ON DOCX →

Free to start. No card required.

All 219 Docx tools

DESTRUCTIVE 20 tools
Destructive delete_column_from_table Delete a column (0-based) from every row of a table. Destructive delete_comment Delete a comment and remove its range markers from the document. Destructive delete_content_control Remove an SDT content control wrapper, keeping its content in place. Destructive delete_custom_property Delete a custom document property by name. Destructive delete_endnote Delete an endnote and its in-body reference. Destructive delete_field Remove a complete complex field (begin through end runs) from the document. Destructive delete_footer Delete a footer by location: default, first, or even. Destructive delete_footnote Delete a footnote and its in-body reference. Destructive delete_header Delete a header by location: default, first, or even. Destructive delete_image Remove the drawing containing the image with the given rId from the document. Destructive delete_paragraph Delete the paragraph with the given paraId. Destructive delete_section_break delete_section_break Destructive delete_style Delete a style from the document. Destructive delete_table Delete a table by index (0-based). Raises IndexError if out of range. Destructive delete_table_row Delete a table row with tracked changes. Destructive delete_text delete_text Destructive flatten_document Accept all tracked changes and remove all revision markup. Destructive remove_bookmark Remove a bookmark by name (keeps paragraph content). Destructive remove_watermark Remove VML watermarks (e.g., DRAFT) from all document headers. Destructive scrub_pii scrub_pii
WRITE 144 tools
Write accept_changes Accept tracked changes — keep insertions, remove deletions. Empty author = all. Write clear_run_formatting Remove all character formatting from a run, causing it to inherit paragraph/style defaults. Write remove_hyperlink remove_hyperlink Write suppress_numbering Remove list numbering from a paragraph by setting numId to 0. Write restart_numbering Restart list numbering at a paragraph. Adds lvlOverride with startOverride. Write demote_list_item Increase the list indentation level (ilvl) of a paragraph by 1, maximum 8. Write find_replace_formatted find_replace_formatted Write accept_all_changes Accept all tracked changes in document order. Write accept_change Accept a single tracked change by its change_id. Write add_bookmark Add a named bookmark wrapping the specified paragraph. Write add_column_to_table Add a new column to every row of a table. First row gets header_text. Write add_comment Add a comment anchored to a paragraph. Write add_content_control add_content_control Write add_cross_reference Add a cross-reference link from one paragraph to another. Write add_endnote Add an endnote to a paragraph. Write add_equation Insert a LaTeX equation as OMML. Requires: pip install latex2mathml. Write add_field add_field Write add_footnote Add a footnote to a paragraph. url, if provided, is rendered as a hotlink. Write add_footnote_ref add_footnote_ref Write add_hyperlink add_hyperlink Write add_internal_link add_internal_link Write add_list Apply list formatting to paragraphs (bullet or numbered). Write add_page_break Insert a page break after a paragraph. Write add_section_break Add a section break at a paragraph. break_type: nextPage/continuous/evenPage/oddPage. Write add_table Insert a new table after a paragraph with tracked insertion. Write add_table_row Add a row to a table with tracked insertion. row_idx=-1 appends. Write apply_style_to_range Apply a style to a list of paragraphs by their paraIds. Write bates_number bates_number Write close_document Close a document and clean up temporary files. Write convert_to_pdf Convert the open document to PDF using LibreOffice headless. Write copy_document Save a complete snapshot of the open document to a new path. Write copy_style Deep-copy an existing style under a new name. Write copy_table Deep-copy a table and insert the copy immediately after the original. Write create_document create_document Write create_from_markdown create_from_markdown Write create_multilevel_list Create a multilevel list in numbering.xml. Each level dict: {num_fmt, lvl_text, indent, hanging, style?}. Write create_style create_style Write csv_to_table Insert a table from CSV text. Write duplicate_table_row Deep-copy a table row and insert the copy immediately after it. Write edit_header_footer edit_header_footer Write export_session_script Write session operations as a Python replay script. Write fill_template Fill SDT content controls from data dict. Keys match w:tag values. Write generate_list_of_figures Insert a List of Figures field (requires SEQ Figure captions). Write generate_list_of_tables Insert a List of Tables field (requires SEQ Table captions). Write generate_privilege_log Generate a privilege log DOCX from document metadata. Write generate_redaction_log Write a DOCX table of all redactions made this session. Write generate_toc Generate a Table of Contents from document headings. Write generate_tof Insert a Table of Figures field block after the paragraph with para_id. Write generate_tot Insert a Table of Tables field block after the paragraph with para_id. Write insert_bar_chart Insert a native bar chart (no Excel required). Write insert_blockquote Insert a blockquote paragraph after the given paragraph. Write insert_caption Insert a caption paragraph after the specified paragraph. Write insert_code_block insert_code_block Write insert_date_field Insert a DATE field at the end of a paragraph. Write insert_floating_image Insert a floating (anchored) image. wrap: square|topbottom|none. Write insert_if_field insert_if_field Write insert_image Insert an image into the document after a paragraph. Write insert_line_chart Insert a native line chart. Write insert_merge_field Insert a MERGEFIELD (mail merge) field at the end of a paragraph. Write insert_page_number_field Insert a PAGE field at the end of a paragraph. Write insert_paragraph Insert a new paragraph after the paragraph with the given paraId. Write insert_pie_chart Insert a native pie chart (single series, fixed 14x9 cm). Write insert_sequence_field Insert a SEQ (sequence) field for figure/table numbering. Write insert_text insert_text Write insert_text_box insert_text_box Write insert_watermark insert_watermark Write lock_content_control Lock a content control to prevent editing. Write merge_cells Merge a rectangular range of cells. Horizontal: gridSpan. Vertical: vMerge. Write merge_documents Merge another DOCX document's content into the current document. Write merge_review_rounds Merge tracked changes from N reviewer copies into the open document. Write modify_cell modify_cell Write promote_list_item Decrease the list indentation level (ilvl) of a paragraph by 1, minimum 0. Write redact_text redact_text Write reject_all_changes Reject all tracked changes in document order. Write reject_change Reject a single tracked change by its change_id. Write reject_changes Reject tracked changes — remove insertions, restore deleted text. Write replace_text replace_text Write reply_to_comment Reply to an existing comment (creates a threaded reply). Write resolve_comment Mark a comment as resolved (sets w15:done='1' in commentsExtended.xml). Write sanitize_metadata sanitize_metadata Write save_document Save all changes back to a .docx file. Write set_alt_text set_alt_text Write set_cell_shading Set background shading fill color on a table cell. Write set_cell_vertical_alignment Set vertical alignment of a table cell: top, center, or bottom. Write set_cell_width Set the width of a table cell in millimetres (stored as DXA). Write set_character_position Set vertical character position (raised/lowered) for a specific run. Write set_character_spacing Set character spacing (tracking) for a specific run in a paragraph. Write set_column_widths Set column widths in cm. len(widths_cm) must match column count. Write set_content_control_value Update the value/text of a content control by its tag. Write set_custom_property Set (upsert) a custom document property. Write set_different_first_page set_different_first_page Write set_document_language set_document_language Write set_document_protection Set document protection. edit: trackedChanges/comments/readOnly/forms/none. Write set_formatting Apply character formatting to text with tracked-change markup. Write set_header_row Mark the first row as a repeating header row. Write set_image_alt_text Set accessibility alt text and title on an embedded image. Write set_image_border set_image_border Write set_image_size Resize an embedded image by updating its EMU extent attributes. Write set_keep_lines_together Keep all lines of this paragraph on the same page. Write set_keep_with_next Keep this paragraph on the same page as the next paragraph. Write set_line_spacing set_line_spacing Write set_odd_even_headers set_odd_even_headers Write set_page_break_before Force a page break before this paragraph. Write set_page_margins set_page_margins Write set_page_orientation Set page orientation, swapping width/height dimensions if needed. Write set_page_size Set page size from millimetre values. Write set_paragraph_border set_paragraph_border Write set_paragraph_indentation set_paragraph_indentation Write set_paragraph_shading Set background shading on a paragraph. Write set_properties Set core document properties. Empty string = unchanged. Write set_row_height Set row height in millimetres. rule: exact, atLeast, or auto. Write set_run_color Set the font color of a specific run in a paragraph. Write set_run_font Set the font of a specific run (zero-based index) in a paragraph. Write set_run_highlight Set highlight color of a specific run in a paragraph. Write set_run_language Set the language on a run for spell-checking purposes. Write set_run_size Set the font size of a specific run in a paragraph. Write set_run_strikethrough Set strikethrough on a specific run in a paragraph. Write set_run_subscript Set subscript vertical alignment on a specific run in a paragraph. Write set_run_superscript Set superscript vertical alignment on a specific run in a paragraph. Write set_run_underline Set underline style on a specific run in a paragraph. Write set_section_columns Set the number of columns in a section. Write set_section_properties Modify section properties (page size, orientation, margins). 0/empty = unchanged. Write set_table_alignment Set table alignment: left, center, or right. Write set_table_borders Set borders on all six sides of a table (top, bottom, left, right, insideH, insideV). Write set_table_style Apply a named table style (e.g. TableGrid, LightShading-Accent1) to a table. Write set_text_case Set text case transformation on a run. Write set_theme_color Update a named color slot in the document theme. Write set_track_changes set_track_changes Write set_widow_control Enable widow/orphan control for this paragraph. Write sort_table sort_table Write split_document split_document Write split_table split_table Write update_chart_data Replace data series in an existing chart by chart_id. Write update_comment Replace the text of an existing comment. Write update_content_control update_content_control Write update_endnote Update the text of an existing endnote. Write update_fields Mark all fields as dirty so Word recalculates on open. Write update_footnote Update the text of an existing footnote. Write update_hyperlink Update the target URL of an existing external hyperlink relationship. Write update_image Replace the binary for an existing image in-place. Write update_paragraph Update the text and/or style of an existing paragraph. Write update_style Update an existing style's basedOn and/or next properties. Write update_toc Regenerate ToC entries from current headings. Write write_part Replace a DOCX part with new XML. Validates well-formedness first.
READ 53 tools
Read audit_document Run a comprehensive structural audit of the document. Read check_accessibility Scan the document for accessibility issues. Read get_alt_text Get the alt text and title for an image by 0-based index. Read get_body_text Return the full accepted-view text of the document. Read get_bookmarked_text Get the text content within a named bookmark. Read get_cell_text Return text content of a specific cell. Read get_comments List all comments with their ID, author, date, and text. Read get_content_control Return details of a single content control by its w:id. Read get_content_controls List all SDT content controls in the document. Read get_custom_properties Get custom document properties from docProps/custom.xml. Read get_document_info Get overview stats: paragraph count, headings, footnotes, comments, images. Read get_document_outline get_document_outline Read get_endnotes Get all endnotes with their ID and text content. Read get_equations Return all equations in the document as OMML XML strings. Read get_field Return details of a single field by field_id. Read get_footnotes List all footnotes with their ID and text content. Read get_headers_footers Get all headers and footers with their text content. Read get_headings Get the document heading structure with levels, text, and paraIds. Read get_images Get all embedded images with rId, filename, content type, and dimensions. Read get_lists Return all list definitions from numbering.xml. Read get_paragraph Get the full text and style of a specific paragraph by its paraId. Read get_paragraph_format Read all formatting attributes of a paragraph. Read get_properties Get core document properties (title, creator, subject, dates, revision). Read get_reading_time Estimate reading time for the open document. Read get_runs Get all runs in a paragraph with their formatting properties. Read get_sections List all sections in the document with their properties. Read get_session_log Return all operations performed this session as replayable JSON. Read get_statistics Return document statistics for the open document. Read get_style Get details of a single style by name or styleId (case-insensitive). Read get_styles Get all defined styles with ID, name, type, and base style. Read get_table Get structured info for a single table by zero-based index. Read get_tables Get all tables with row/column counts and cell text content. Read get_theme_colors Return the named color slots from word/theme/theme1.xml. Read get_tracked_changes Return all pending tracked changes (insertions and deletions) as a JSON list. Read get_word_count Return the word count of the open document body. Read list_bookmarks List all bookmarks in the document. Read list_comment_threads List all comment threads (root comments with their replies). Read list_fields List all fields in the document with their codes and cached values. Read list_hyperlinks List all hyperlinks in the document. Read list_parts List all XML parts (files) in the open DOCX zip. Read list_template_fields List all SDT template fields (tag, label, type) in the document. Read read_part Read raw XML of any DOCX part (e.g. 'word/document.xml'). Read search_text search_text Read validate_endnotes Cross-reference endnote IDs between document.xml and endnotes.xml. Read validate_footnotes Cross-reference footnote IDs between document.xml and footnotes.xml. Read validate_paraids Check paraId uniqueness across all document parts. Read validate_template_data Validate data dict covers all template fields. Returns missing and extra keys. Read compare_contracts Clause-aware diff between the open contract and another .docx file. Read diff_to_text diff_to_text Read export_markdown export_markdown Read generate_change_summary generate_change_summary Read open_document open_document Read table_to_csv Export a table as CSV string.

Related servers

Other MCP servers with similar tools — same risk classification, starter policies for each.

Questions about Docx

Can an AI agent delete data through the Docx MCP server? +

Yes. The Docx server exposes 20 destructive tools including delete_column_from_table, delete_comment, delete_content_control. These permanently remove resources with no undo. PolicyLayer blocks destructive tools by default so they never reach the upstream server.

How do I prevent bulk modifications through Docx? +

The Docx server has 144 write tools including accept_changes, clear_run_formatting, remove_hyperlink. Set a rate limit in your policy -- for example, 10 calls per hour prevents an agent from making more than 10 modifications per hour. PolicyLayer enforces this at the gateway, before calls reach Docx.

How many tools does the Docx MCP server expose? +

219 tools across 4 categories: Destructive, Execute, Read, Write. 53 are read-only. 166 can modify, create, or delete data.

How do I enforce a policy on Docx? +

Register the Docx MCP server in PolicyLayer, apply the suggested rules above (adjust the limits to your use case), and point your AI client at the PolicyLayer proxy URL instead of the server directly. Your agents keep the same tools; PolicyLayer evaluates every call against policy before it executes. Nothing to install, live in minutes.

Enforce policy on every Docx tool call.

Deterministic rules across all 219 Docx tools. Per-identity grants. Full audit log. Live in minutes. Nothing to install.

Free to start. No card required.

219 Docx tools catalogued and risk-classified — across an index of 43,000+ MCP servers.

// GET IN TOUCH

Have a question or want to learn more? Send us a message.

Message sent.

We'll get back to you soon.