Skip to main content

revisedoc

Edit .docx files the way Word intended — with full change tracking, inline comments, and revision history. No more sending around unmarked copies or losing track of what changed. Use it from the command line, from your Python code, or hook it up as an MCP server so your AI coding agent can edit documents with the same care a human reviewer would.

Features

  • Tracked-changes replace — Replace text using Word-compatible <w:del> / <w:ins> markup
  • Inline comments — Anchor comments to any text range
  • Revision inspection — List all tracked changes with id, author, date, type, text
  • Revision restoration — Undo a specific tracked change
  • MCP server — Expose all operations as structured tools for AI agents (opencode, Claude Code, etc.)

Use Cases

  • Contract redlining — Replace outdated terms in a .docx contract with tracked changes so the other side sees exactly what was modified.

  • Document review workflows — Annotate drafts with inline comments, then list and restore revisions to review changes systematically.

  • AI-assisted editing — Connect the MCP server to opencode or Claude Code and have your agent propose edits with full change tracking — no more "just trust me, I made some changes."

  • Batch processing — Script document updates across hundreds of files using the Python API, with every change recorded in Word's revision log.

Installation

pip install revisedoc          # with pip
pipx install revisedoc          # with pipx (isolated)

For AI agent integration (opencode, Claude Code):

pip install "revisedoc[mcp]"     # pip — quotes required in zsh
pipx install "revisedoc[mcp]"    # pipx — quotes required in zsh

[mcp] is an optional extra — it installs the same revisedoc package plus the mcp SDK dependency. Without it, the CLI and Python API work fine; only the revisedoc-mcp server is unavailable.

Note for zsh users: the square brackets must be quoted. Use pip install "revisedoc[mcp]" not pip install revisedoc[mcp].

CLI Usage

# Replace text with tracked changes
revisedoc replace input.docx output.docx "old text" "new text" --author "Me"

# Add a comment
revisedoc comment input.docx output.docx "target text" "my comment" --author "Reviewer"

# List tracked changes
revisedoc list-revisions input.docx
revisedoc list-revisions input.docx --format json

# Undo a revision (restore deleted text)
revisedoc restore input.docx output.docx --revision-id 3

# Undo an insertion instead
revisedoc restore input.docx output.docx --revision-id 3 --restore-type insertion

# Print document plain text
revisedoc get-text input.docx

Python API

from docx import Document
from revisedoc import replace_text, add_comment, list_revisions, restore_revision, get_full_text, finalize_comments

doc = Document("input.docx")
replace_text(doc, "old phrase", "new phrase", author="MyBot")
add_comment(doc, "some specific text", "Review this part", author="Reviewer")
pending = doc.part._pending_comments
doc.save("output.docx")
finalize_comments("output.docx", pending_comments=pending)

MCP Server — AI Agent Integration

Start the MCP server:

revisedoc-mcp

opencode

Add to opencode.json:

{
  "mcp": {
    "revisedoc": {
      "type": "local",
      "command": ["revisedoc-mcp"],
      "enabled": true
    }
  }
}

Claude Code

Add to .claude/settings.json:

{
  "mcpServers": {
    "revisedoc": {
      "command": "revisedoc-mcp"
    }
  }
}

Available Tools

Tool Description
docx_replace Replace text with tracked changes
docx_comment Add a comment anchored to text
docx_list_revisions List all tracked changes
docx_restore Undo a revision by ID
docx_get_text Print document plain text

Development

pip install -e ".[mcp,test]"
pytest tests/ -v

Architecture

The package structure:

src/revisedoc/
├── __init__.py     # Public API exports
├── editor.py       # Core editing operations
├── cli.py          # Command-line interface
└── mcp.py          # MCP server for AI agents

Metadata

Release files for revisedoc 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for revisedoc 0.1.2
File Size Uploaded
revisedoc-0.1.2.tar.gz 15.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for revisedoc 0.1.2
File Interpreter ABI Platform
revisedoc-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 27.3 kB

Release files / revisedoc-0.1.2.tar.gz

Download URL revisedoc-0.1.2.tar.gz
Size 15.8 kB
Tags Source
SHA-256 checksum
How to use checksums
886690f673ea8713c8613a9a323cb47455c262f50470ffab9d740a6ffa6ed459
BLAKE2b-256 checksum
How to use checksums
a7a24335d222fb0b2a9fd5340936994b3b074595c3a2954901c4d685dce0cef8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release files / revisedoc-0.1.2-py3-none-any.whl

Download URL revisedoc-0.1.2-py3-none-any.whl
Size 11.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
756b361e0627639bfac3fb0cfa31a748c9db752c1e6cee00372a2c6b81688e7a
BLAKE2b-256 checksum
How to use checksums
e1918ff877d3d9cfad58e12b670ecb9a9910ec6d856710b831cad55ebe4e595d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page