Update Doc (Platform MCP)

Updates an existing monday.com document by executing an ordered list of operations such as appending content, renaming, editing blocks, or adding comments using the Platform MCP.

Use this tool to modify an existing monday.com document. You supply one or more operations in an ordered array, and they are executed sequentially — the tool stops at the first failure. Operations cover the full range of document edits: appending markdown, renaming the document, updating or creating individual blocks at precise positions, deleting blocks, and adding comments.

To target a document, provide either doc_id (the id field from read_docs) or object_id (the numeric ID visible in the document URL). If you need block IDs for update_block, delete_block, or replace_block operations, call read_docs first with include_blocks: true.

🚧

Operations are executed sequentially and stop on the first failure. If an operation references a block created in the same call (e.g., nesting content inside a notice_box), you must split it into two separate update_doc calls — the first to create the container, the second to nest content inside it using parent_block_id.

Parameters

ParameterTypeRequiredDescription
doc_idstringYes (or object_id)The document ID returned by read_docs (id field). Takes priority over object_id if both are provided.
object_idstringYes (or doc_id)The document object ID visible in the document URL. Resolved to doc_id internally.
operationsarrayYesOrdered list of operations to perform (1–25). Each operation requires an operation_type and type-specific fields. See operation types below.

Operation types

operation_typeKey fieldsWhen to use
set_namename (string)Rename the document.
add_markdown_contentmarkdown (string), optional after_block_idAppend markdown as blocks. Best for text, headings, lists, and simple tables. No block IDs needed.
update_blockblock_id, content (with block_content_type)Edit the content of an existing text, code, or list_item block in place. Cannot change block subtype — use replace_block for that.
create_blockblock (with block_type), optional after_block_id, optional parent_block_idInsert a new block at a specific position. Supports text, list_item, code, divider, page_break, image, video, notice_box, table, and layout.
delete_blockblock_idPermanently remove a block. The only option for BOARD, WIDGET, DOC embed, and GIPHY blocks.
replace_blockblock_id, block (with block_type), optional after_block_idDelete a block and create a new one in its place. Use when changing image/video source, table structure, or notice_box theme.
add_commentbody (HTML string), optional block_id, selection_from, selection_length, parent_update_id, mentions_listAdd a doc-level, block-level, or text-selection comment. Format body with HTML, not markdown.

Example

Append a new section to document 41622523:

{
  "doc_id": "41622523",
  "operations": [
    {
      "operation_type": "add_markdown_content",
      "markdown": "## Section Added via update_doc\n\nThis section was appended using the `add_markdown_content` operation."
    }
  ]
}

The tool confirmed 1/1 operations completed and returned the IDs of the 2 new blocks created: f1fe721e-a5c9-4e99-8564-6ad39fc6a635 and e1693499-5daa-41ec-ba92-782d1960384a.


Programmatic equivalent

Use the GraphQL API to achieve the same result:

mutation {
  add_blocks_to_document(
    doc_id: 41622523
    content: "{\"delta\":[{\"insert\":\"Section Added via update_doc\"},{\"insert\":\"\\n\",\"attributes\":{\"header\":2}}]}"
    after_block_id: null
  ) {
    id
  }
}

For full documentation, see Docs.