Revise
Server Details
Collaborative word processor you can use with your agent.
Glama couldn't complete the latest health check. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.
If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.
- Status
- Unhealthy
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP
- URL
TDQS
Scored across 18 tools
Every tool targets a distinct operation on documents, from creation (create, import, upload) to editing, commenting, formatting, and cleanup. Even the three creation tools are clearly differentiated by input source (markdown, URL, local file), and descriptions explicitly cross-reference to avoid confusion.
All tool names follow a consistent verb_noun pattern in snake_case, e.g., clean_document, get_document_info, set_page_layout. There are no mixed conventions, camelCase variants, or vague verbs.
At 18 tools, the set is slightly above the typical 3-15 range, but each tool has a clear and non-redundant purpose, covering creation, reading, editing, formatting, comments, suggestions, and export. The count feels justified for a comprehensive document editing server.
The tool surface covers creation, reading, editing, formatting, comments, suggestions, and export, but misses notable operations like document deletion, cross-document listing/search, and comment resolution. These gaps could cause dead ends in workflows where a user wants to remove a document or find an existing one.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- Changed
create_document1 field changed- changed
Input schema / properties / title / maxLengthPrevious value: -500New value: +300
- Changed
import_document1 field changed- changed
Input schema / properties / title / maxLengthPrevious value: -500New value: +300
- Changed
rename_document1 field changed- changed
Input schema / properties / title / maxLengthPrevious value: -500New value: +300
3 tool updates
- Added
clean_document - Changed
leave_comment1 field changed- added
Input schema / properties / acknowledge_existing_thread_idsAdded value: +{ + "description": "Only for a NEW thread that deliberately overlaps existing unresolved threads: list their ids to confirm you read them and are raising a genuinely different point. Without this, a new thread over text that already carries one is rejected. Do not use it to restate a point an existing thread already makes — reply to that thread instead.", + "items": { + "type": "string" + }, + "type": "array" +}
- Changed
set_page_layout2 fields changed- added
Input schema / properties / line_numberingAdded value: +{ + "anyOf": [ + { + "properties": { + "count_by": { + "description": "Show only every Nth number (default 1 = every line)", + "maximum": 9007199254740991, + "minimum": 1, + "type": "integer" + }, + "distance_px": { + "description": "Gap between numbers and the text margin in px", + "minimum": 0, + "type": "number" + }, + "restart": { + "description": "When the counter resets (default newPage)", + "enum": [ + "newPage", + "newSection", + "continuous" + ], + "type": "string" + }, + "start": { + "description": "First line number (default 1)", + "maximum": 9007199254740991, + "minimum": 1, + "type": "integer" + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Word-style line numbering in the left margin (pleading paper). Pass an object (possibly empty) to enable, null to disable" +} - added
Input schema / properties / watermarkAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Diagonal page watermark text painted on every page, e.g. \"DRAFT\" or \"CONFIDENTIAL\". Also accepts a JSON settings string {text, color?, opacity?, diagonal?, fontSizePx?}. Pass \"\" or null to remove the watermark" +}
1 tool update
- Changed
read_document7 fields changed- added
Input schema / properties / start_blockAdded value: +{ + "description": "0-based top-level block index to start reading from (default 0). Use the previous response's next_start_block to continue a paginated read.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Output schema / properties / blocks_includedAdded value: +{ + "description": "Top-level blocks included in this page", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Output schema / properties / next_start_blockAdded value: +{ + "description": "Pass as start_block to read the next page", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Output schema / properties / noteAdded value: +{ + "description": "Pagination guidance", + "type": "string" +} - added
Output schema / properties / start_blockAdded value: +{ + "description": "First top-level block index included in this page", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Output schema / properties / total_blocksAdded value: +{ + "description": "Total top-level blocks in the document", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Output schema / properties / truncatedAdded value: +{ + "description": "True when the read was cut at a block boundary", + "type": "boolean" +}
1 tool update
- Added
style_blocks
3 tool updates
- Changed
edit_document1 field changed- changed
Input schema / properties / mode / descriptionPrevious value: -"suggest: tracked changes (default for documents with 20+ words); apply: edit directly (default for documents under 20 words). Pass apply explicitly to edit a substantial document without suggesting."New value: +"Omit for the default: suggest (tracked changes) on documents with 20+ words, apply on shorter ones. Choose \"apply\" on a substantial document only when your user explicitly asked for direct edits without review — never on your own judgment."
- Changed
insert_footnote1 field changed- changed
Input schema / properties / mode / descriptionPrevious value: -"suggest: pending tracked change (default on documents with 20+ words); apply: insert directly"New value: +"Omit for the default: suggest (pending tracked change) on documents with 20+ words, apply on shorter ones. Choose \"apply\" on a substantial document only when your user explicitly asked for direct edits without review."
- Added
leave_comment
15 tool updates
- Changed
create_document1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "edit_token": { + "description": "Bearer token scoped to this document for future read/edit calls", + "type": "string" + }, + "id": { + "description": "Document ID", + "type": "string" + }, + "notes": { + "description": "Human-facing claim and retention notes", + "type": "string" + }, + "title": { + "description": "Document title", + "type": "string" + }, + "unlock_more": { + "description": "Agent-facing guidance for authenticating to unlock more tools", + "type": "string" + }, + "url": { + "description": "Editor URL", + "type": "string" + } + }, + "required": [ + "id", + "title", + "url", + "edit_token", + "notes", + "unlock_more" + ], + "type": "object" +}
- Changed
edit_document2 fields changed- changed
Input schema / properties / edits / items / oneOfPrevious value: -[ - { - "properties": { - "all": { - "description": "Replace every occurrence in the block (default: first only)", - "type": "boolean" - }, - "block_id": { - "description": "Block id anchor (from read_document with_block_ids)", - "type": "string" - }, - "find": { - "description": "Exact text to find within the block", - "minLength": 1, - "type": "string" - }, - "replace": { - "description": "Replacement text", - "type": "string" - }, - "type": { - "const": "replace", - "type": "string" - } - }, - "required": [ - "type", - "block_id", - "find", - "replace" - ], - "type": "object" - }, - { - "properties": { - "block_id": { - "description": "Anchor block id (required unless position is \"end\")", - "type": "string" - }, - "markdown": { - "description": "Markdown content to insert", - "minLength": 1, - "type": "string" - }, - "position": { - "description": "Where to insert relative to block_id, or \"end\" of document", - "enum": [ - "before", - "after", - "end" - ], - "type": "string" - }, - "type": { - "const": "insert_markdown", - "type": "string" - } - }, - "required": [ - "type", - "markdown", - "position" - ], - "type": "object" - }, - { - "properties": { - "block_id": { - "description": "Block id to delete", - "type": "string" - }, - "type": { - "const": "delete_block", - "type": "string" - } - }, - "required": [ - "type", - "block_id" - ], - "type": "object" - } -]New value: +[ + { + "properties": { + "all": { + "description": "Replace every occurrence in the block (default: first only)", + "type": "boolean" + }, + "block_id": { + "description": "Block id anchor (from read_document with_block_ids)", + "type": "string" + }, + "find": { + "description": "Exact text to find within the block", + "minLength": 1, + "type": "string" + }, + "format": { + "description": "Replacement format. Omit to auto-detect HTML and otherwise parse Markdown", + "enum": [ + "markdown", + "html" + ], + "type": "string" + }, + "replace": { + "description": "Replacement content (Markdown by default; HTML is auto-detected)", + "type": "string" + }, + "type": { + "const": "replace", + "type": "string" + } + }, + "required": [ + "type", + "block_id", + "find", + "replace" + ], + "type": "object" + }, + { + "properties": { + "block_id": { + "description": "Anchor block id (required unless position is \"end\")", + "type": "string" + }, + "markdown": { + "description": "Markdown content to insert", + "minLength": 1, + "type": "string" + }, + "position": { + "description": "Where to insert relative to block_id, or \"end\" of document", + "enum": [ + "before", + "after", + "end" + ], + "type": "string" + }, + "type": { + "const": "insert_markdown", + "type": "string" + } + }, + "required": [ + "type", + "markdown", + "position" + ], + "type": "object" + }, + { + "properties": { + "block_id": { + "description": "Anchor block id (required unless position is \"end\")", + "type": "string" + }, + "html": { + "description": "HTML block content parsed by Revise's native agent parser", + "minLength": 1, + "type": "string" + }, + "position": { + "description": "Where to insert relative to block_id, or \"end\" of document", + "enum": [ + "before", + "after", + "end" + ], + "type": "string" + }, + "type": { + "const": "insert_html", + "type": "string" + } + }, + "required": [ + "type", + "html", + "position" + ], + "type": "object" + }, + { + "properties": { + "block_id": { + "description": "Block id to delete", + "type": "string" + }, + "type": { + "const": "delete_block", + "type": "string" + } + }, + "required": [ + "type", + "block_id" + ], + "type": "object" + } +] - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "acceptedChangeRegions": { + "description": "Change regions accepted immediately", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "editsRequested": { + "description": "Requested edit count", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "note": { + "description": "Review guidance", + "type": "string" + }, + "pendingSuggestionIds": { + "description": "Tracked-change suggestion IDs", + "items": { + "type": "string" + }, + "type": "array" + }, + "status": { + "description": "Whether edits were suggested or directly applied", + "enum": [ + "suggested", + "applied" + ], + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" +}
- Changed
export_document1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "bytes": { + "description": "Hosted file byte length", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "content": { + "description": "Inline exported text content", + "type": "string" + }, + "download_url": { + "description": "Temporary download URL", + "type": "string" + }, + "format": { + "description": "Export format", + "type": "string" + }, + "id": { + "description": "Document ID", + "type": "string" + }, + "notes": { + "description": "Download expiry notes", + "type": "string" + }, + "status": { + "const": "exported", + "description": "Export status", + "type": "string" + } + }, + "required": [ + "status", + "id", + "format" + ], + "type": "object" +}
- Changed
get_document_info1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "blocks": { + "description": "Top-level block count", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "createdAt": { + "description": "Creation timestamp from the Revise API" + }, + "id": { + "description": "Document ID", + "type": "string" + }, + "isOwner": { + "description": "Whether the current user owns the document", + "type": "boolean" + }, + "isPublic": { + "description": "Whether the document is publicly shared", + "type": "boolean" + }, + "pages": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Rendered page count, or null in pageless mode" + }, + "publicUrl": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Public URL, when enabled" + }, + "readOnly": { + "description": "Whether the current user has read-only access", + "type": "boolean" + }, + "title": { + "description": "Document title", + "type": "string" + }, + "updatedAt": { + "description": "Last update timestamp from the Revise API" + }, + "url": { + "description": "Editor URL", + "type": "string" + }, + "words": { + "description": "Word count", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "id", + "title", + "isPublic", + "isOwner", + "readOnly", + "url", + "publicUrl", + "words", + "pages", + "blocks" + ], + "type": "object" +}
- Changed
get_document_outline1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "blocks": { + "description": "Top-level block count", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "sections": { + "items": { + "additionalProperties": false, + "properties": { + "blockId": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Heading block ID" + }, + "heading": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "Heading level" + }, + "text": { + "description": "Heading text", + "type": "string" + }, + "words": { + "description": "Words in this section", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "blockId", + "heading", + "text", + "words" + ], + "type": "object" + }, + "type": "array" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Document title" + }, + "totalWords": { + "description": "Total word count", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "title", + "totalWords", + "blocks", + "sections" + ], + "type": "object" +}
- Changed
get_recent_changes1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "added": { + "description": "Added blocks", + "items": { + "additionalProperties": false, + "properties": { + "blockId": { + "description": "Block ID", + "type": "string" + }, + "markdown": { + "description": "Block markdown", + "type": "string" + } + }, + "required": [ + "blockId", + "markdown" + ], + "type": "object" + }, + "type": "array" + }, + "baselineEstablished": { + "description": "True when this first call only established a baseline", + "type": "boolean" + }, + "changed": { + "description": "Changed blocks", + "items": { + "additionalProperties": false, + "properties": { + "after": { + "description": "Current block markdown", + "type": "string" + }, + "before": { + "description": "Previous block markdown", + "type": "string" + }, + "blockId": { + "description": "Block ID", + "type": "string" + } + }, + "required": [ + "blockId", + "before", + "after" + ], + "type": "object" + }, + "type": "array" + }, + "note": { + "description": "Result note or truncation guidance", + "type": "string" + }, + "removed": { + "description": "Removed blocks", + "items": { + "additionalProperties": false, + "properties": { + "blockId": { + "description": "Block ID", + "type": "string" + }, + "markdown": { + "description": "Block markdown", + "type": "string" + } + }, + "required": [ + "blockId", + "markdown" + ], + "type": "object" + }, + "type": "array" + }, + "since": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "ISO timestamp for the previous baseline" + }, + "summary": { + "additionalProperties": false, + "description": "Exact changed-block counts", + "properties": { + "added": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "changed": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "removed": { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "added", + "removed", + "changed" + ], + "type": "object" + } + }, + "type": "object" +}
- Changed
import_document1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "edit_token": { + "description": "Bearer token scoped to this document for future read/edit calls", + "type": "string" + }, + "id": { + "description": "Document ID", + "type": "string" + }, + "notes": { + "description": "Human-facing claim and retention notes", + "type": "string" + }, + "title": { + "description": "Document title", + "type": "string" + }, + "unlock_more": { + "description": "Agent-facing guidance for authenticating to unlock more tools", + "type": "string" + }, + "url": { + "description": "Editor URL", + "type": "string" + } + }, + "required": [ + "id", + "title", + "url", + "edit_token", + "notes", + "unlock_more" + ], + "type": "object" +}
- Added
insert_footnote - Changed
read_document2 fields changed- added
Input schema / properties / viewAdded value: +{ + "description": "Projection of pending suggestions: final = accepted (default), original = rejected", + "enum": [ + "final", + "original" + ], + "type": "string" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "content": { + "description": "Document content in the requested format", + "type": "string" + }, + "format": { + "description": "Returned format", + "enum": [ + "markdown", + "text", + "html" + ], + "type": "string" + }, + "id": { + "description": "Document ID", + "type": "string" + }, + "with_block_ids": { + "description": "Whether markdown block anchors were included", + "type": "boolean" + } + }, + "required": [ + "id", + "format", + "content" + ], + "type": "object" +}
- Changed
rename_document1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "status": { + "const": "renamed", + "description": "Rename status", + "type": "string" + }, + "title": { + "description": "New title", + "type": "string" + } + }, + "required": [ + "status", + "title" + ], + "type": "object" +}
- Changed
replace_document_content1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "blocks": { + "description": "Number of blocks in the new content", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "status": { + "const": "replaced", + "description": "Replacement status", + "type": "string" + } + }, + "required": [ + "status", + "blocks" + ], + "type": "object" +}
- Changed
resolve_suggestions2 fields changed- added
Input schema / properties / kindAdded value: +{ + "description": "Limit to one kind of change (Word-style review filter): insert = added text/blocks, delete = removed text/blocks, format = formatting-only changes; omit for all kinds", + "enum": [ + "insert", + "delete", + "format" + ], + "type": "string" +} - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "note": { + "description": "Why no suggestions were resolved", + "type": "string" + }, + "resolvedChangeRegions": { + "description": "Resolved change-region count", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "status": { + "description": "Suggestion resolution outcome", + "enum": [ + "accepted", + "rejected", + "no_matching_suggestions" + ], + "type": "string" + } + }, + "required": [ + "status" + ], + "type": "object" +}
- Changed
search_within_document1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "groups": { + "description": "Context groups containing matches", + "items": { + "additionalProperties": false, + "properties": { + "blockRange": { + "description": "Inclusive top-level block index range", + "items": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + ], + "type": "array" + }, + "markdown": { + "description": "Context group markdown with block anchors", + "type": "string" + }, + "matchedBlockIds": { + "description": "Matching block IDs", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "blockRange", + "matchedBlockIds", + "markdown" + ], + "type": "object" + }, + "type": "array" + }, + "note": { + "description": "Result note or truncation guidance", + "type": "string" + }, + "query": { + "description": "Search query", + "type": "string" + }, + "returnedMatchingBlocks": { + "description": "Number of matching blocks returned in this response", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "totalMatchingBlocks": { + "description": "Matching block count", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + } + }, + "required": [ + "query", + "totalMatchingBlocks" + ], + "type": "object" +}
- Changed
set_page_layout3 fields changed- added
Input schema / properties / note_modeAdded value: +{ + "description": "Bulk-convert every note in the document to this stream: footnotes (per-page bottom areas, numbered 1,2,3) or endnotes (grouped on their own page at the end, numbered i,ii,iii). Individual notes choose their stream at insert time via insert_footnote", + "enum": [ + "footnotes", + "endnotes" + ], + "type": "string" +} - added
Input schema / properties / show_page_numbers / descriptionAdded value: +"Show/hide page numbers (managed as an automatic header/footer page-number field slot; hand-authored header/footer content is never overwritten)" - changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "applied": { + "additionalProperties": {}, + "description": "Applied layout settings", + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "status": { + "const": "updated", + "description": "Layout update status", + "type": "string" + } + }, + "required": [ + "status", + "applied" + ], + "type": "object" +}
- Changed
upload_document1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "additionalProperties": false, + "properties": { + "curl": { + "description": "Ready-to-run curl command for the upload", + "type": "string" + }, + "expires_in": { + "description": "Seconds until the upload URL expires", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "next": { + "description": "What to do after reserving the upload", + "type": "string" + }, + "upload_url": { + "description": "One-time upload endpoint", + "type": "string" + } + }, + "required": [ + "upload_url", + "expires_in", + "curl", + "next" + ], + "type": "object" +}
14 tool updates
- First observed
create_document - First observed
edit_document - First observed
export_document - First observed
get_document_info - First observed
get_document_outline - First observed
get_recent_changes - First observed
import_document - First observed
read_document - First observed
rename_document - First observed
replace_document_content - First observed
resolve_suggestions - First observed
search_within_document - First observed
set_page_layout - First observed
upload_document
Related MCP Connectors
Create and improve live, shared interactive documents with your agent.
Persistent docs and memory for AI agents — read, write, organize & search a shared workspace.
An agent-first office suite Claude & ChatGPT read and write over one MCP URL.
Markdown workspace for AI agents: read, write, organize, and share markdown documents.
Related MCP Servers
- AlicenseBqualityAmaintenanceProvides a local, collaborative visual document editor that works with MCP agents, enabling creation and editing of brochures, reports, and other designs with live synchronization, revision history, and portable exports.29MIT

Writespaceofficial
AlicenseNot gradedqualityDmaintenancePersistent docs and memory for AI agents. Writespace is a collaborative markdown editor with a built-in MCP server — your model reads, writes, organizes, and searches a shared workspace while humans edit the same docs live. Drop the ranked full-text search straight in as RAG retrieval.MIT- AlicenseNot gradedqualityCmaintenanceEnables AI agents to read, edit, and create Microsoft Word documents (.docx) with support for rich text, tables, and images, deployable locally or via SSE.3MIT
- AlicenseAqualityBmaintenanceEnables AI agents to perform safe, semantic edits on Markdown and DOCX documents through a normalized model with staging, diff review, and stale-edit protection.13MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.