What's New
Core preset for AI agents β Ships superdoc_inspect and superdoc_perform_action with 40 LLM-safe actions: insert/replace/delete text, add comments, create tables, format content, accept/reject changes, and more. All verbs mapped to document operations.
Tracked paragraph-property changes β Numbering and alignment changes now round-trip as w:pPrChange. Track it, export to Word, re-import, and accept or reject in the review UI.
Comment threading β reply_to_comment action with proper parentId wiring so conversations survive export/import.
Citation hyperlinks with tracked changes β Hyperlinks now preserve w:ins/w:del marks through DOCX export and re-import.
MCP core preset support β Serve the core preset tools over Model Context Protocol with MCP_PRESET=core.
createAgentToolkit β Single options object returns {tools, systemPrompt, dispatch} with preset and exclusions applied to all three β no more forgetting to pass excludeActions to every function.
Provider-native tool formats β getTools supports 'vercel' (flat), 'openai' (Chat-Completions-nested), and 'anthropic' (with cache_control).
Improvements
Large-document performance β 50s β 16s on 38-page redlines. Headless editor skips whole-doc linked-style CSS. blocks.list returns visible text (skips tracked-deleted runs) so re-editing resolves offsets correctly.
Tracked-change decision interface β Side-targeted reject: pass side: 'inserted' | 'deleted' to trackChanges.decide and resolve only half a replacement.
System prompt narrowing β excludeActions parameter shrinks both tool enum and prompt documentation β model sees no phantom actions.
Receipt token hygiene β Per-item lists capped at 8 entries; full counts in executedOperationCount and selectedTargetCount. Stops 200-paragraph font changes from costing thousands of prompt tokens.
Python SDK parity β Core preset, 40 actions, dispatch with exclusion guards, create_agent_toolkit, full ActionArgs types.
Fixes
Cell shading on export β tables.setShading({ color: null }) now deletes background attr on both table-scoped and cell-scoped paths.
Tracked pPrChange edge cases β One-sided replacement survivors downgrade to plain insert/delete. pPrChange inside kept tracked tables resolves via id, not mark-based planner. Tracked numbering attach guards against blank authors.
Border rendering β Thick borders paint at authored width (no 2x multiplier).
Native CLI binary prompt assets β Bun-compiled binaries now embed system-prompt.md and serve get-system-prompt without TOOLS_ASSET_NOT_FOUND.
Hyperlink round-trip β Final-doc export flattens tracked pPrChange so .docx carries only accepted numbering. Accepting a tracked table by id cascades to resolve contained pPr changes.
Prompt asset errors β readPromptFile now distinguishes ENOENT (missing asset) from permission/IO failures.
CLI tracked mode transport β attach_numbering, add_list_items, lists.setType in changeMode:'tracked' now pass the flag in both input and options dialects so tracked changes survive transport.
move_range safety β Refuses ranges containing tables, lists, or images before mutating.
reply_to_comment contract β Sends only {text, parentId, parentCommentId} with no target so threads inherit parent's anchor per spec.
Comment export cleanup β Synthetic tracked-change rows for the sidebar no longer fabricate spurious w:comment elements on export.