Bug Description
When calling clickup_update_document_page via the ClickUp MCP server without explicitly passing content_edit_mode, the updated content is appended to the existing page content instead of replacing it.
The MCP tool's schema documents the default as "replace", but the actual behavior is "append". This causes document pages to grow with duplicated/concatenated content after every update.
Impact
This is critical for the framework's distillation protocol: every CURRENT_STATUS, PLAN, or TECHNICAL_ANALYSIS update appends the full new content to the existing content, corrupting the document.
Conversely, when content_edit_mode: "replace" IS explicitly passed, the replace works correctly — but if only the new/changed section is sent (not the full document), the entire page is replaced with just that section, losing all other content.
Steps to Reproduce
- Create a ClickUp document page with some content
- Call
clickup_update_document_page with new content but without passing content_edit_mode
- Read the page back — the new content is appended to the original instead of replacing it
Workaround
Always pass content_edit_mode: "replace" explicitly, and always send the complete page content (not just the changed section).
Proposed Fix
Update the following files in the framework:
1. claude-memory/providers/clickup/SETUP.md
Add a CRITICAL note in the "How Claude interacts with ClickUp" section:
> **CRITICAL — `content_edit_mode`**: When calling `clickup_update_document_page`, **ALWAYS pass `content_edit_mode: "replace"` explicitly**. The tool's documented default is "replace" but the actual ClickUp API behavior defaults to "append", concatenating new content to existing content instead of replacing it.
2. CONVENTIONS document (ClickUp-hosted or template)
Add a new section at the end:
## ClickUp-Specific Rules
### Document Update Mode (CRITICAL)
When updating ClickUp document pages via `clickup_update_document_page`, **ALWAYS pass `content_edit_mode: "replace"` explicitly**. The tool's documented default is "replace" but the actual behavior defaults to "append", which causes the updated content to be concatenated to the existing content instead of replacing it.
This applies to ALL page updates: CURRENT STATUS, TECHNICAL ANALYSIS, PLAN, CHANGELOG, etc.
Environment
- ClickUp MCP server (via Claude Code MCP integration)
- ClickUp API v3
- Claude Code on Windows 11
Bug Description
When calling
clickup_update_document_pagevia the ClickUp MCP server without explicitly passingcontent_edit_mode, the updated content is appended to the existing page content instead of replacing it.The MCP tool's schema documents the default as
"replace", but the actual behavior is"append". This causes document pages to grow with duplicated/concatenated content after every update.Impact
This is critical for the framework's distillation protocol: every
CURRENT_STATUS,PLAN, orTECHNICAL_ANALYSISupdate appends the full new content to the existing content, corrupting the document.Conversely, when
content_edit_mode: "replace"IS explicitly passed, the replace works correctly — but if only the new/changed section is sent (not the full document), the entire page is replaced with just that section, losing all other content.Steps to Reproduce
clickup_update_document_pagewith new content but without passingcontent_edit_modeWorkaround
Always pass
content_edit_mode: "replace"explicitly, and always send the complete page content (not just the changed section).Proposed Fix
Update the following files in the framework:
1.
claude-memory/providers/clickup/SETUP.mdAdd a CRITICAL note in the "How Claude interacts with ClickUp" section:
> **CRITICAL — `content_edit_mode`**: When calling `clickup_update_document_page`, **ALWAYS pass `content_edit_mode: "replace"` explicitly**. The tool's documented default is "replace" but the actual ClickUp API behavior defaults to "append", concatenating new content to existing content instead of replacing it.2. CONVENTIONS document (ClickUp-hosted or template)
Add a new section at the end:
Environment