Updates existing content while maintaining schema compliance.
When updating content created with a previous version of a content type, the tool validates against the original schema version (specified in the content’s typeVersion field).
{
"type": "object",
"properties": {
"projectId": {
"type": "string",
"description": "Project ID (optional, uses session default)"
},
"contentId": {
"type": "string",
"description": "ID of content to update"
},
"name": {
"type": "string",
"description": "Updated name (optional)"
},
"description": {
"type": "string",
"description": "Updated description (optional)"
},
"content": {
"type": "object",
"description": "Content data matching the type's JSON schema (optional)"
},
"tags": {
"type": "array",
"items": { "type": "string" },
"description": "Updated tags (optional)"
},
"metadata": {
"type": "object",
"description": "Updated metadata (optional)"
}
},
"required": ["contentId"]
}
Parameters
| Parameter | Type | Required | Description |
|---|
projectId | string | No | Project ID (uses session default) |
contentId | string | Yes | ID of content to update |
name | string | No | Updated name |
description | string | No | Updated description |
content | object | No | Updated content data |
tags | string[] | No | Updated tags |
metadata | object | No | Updated metadata |
Response
| Field | Type | Description |
|---|
id | string | Unique identifier of the updated content |
status | string | Content status after update |
updatedAt | string | ISO 8601 update timestamp |
validationWarnings | string[] | Any validation warnings (optional) |
Example
Request
Update the title and add a new component:
{
"contentId": "cont_story_acme_001",
"name": "Acme Corp's Design System Journey",
"content": {
"title": "Acme Corp's Design System Journey",
"subtitle": "2024: The Digital Transformation",
"components": [
{
"type": "StoryParagraph",
"text": "Acme Corporation's transformation began in early 2024..."
},
{
"type": "StorySubheader",
"text": "The Challenge: Fragmentation at Scale"
},
{
"type": "StoryParagraph",
"text": "Updated content with more details..."
},
{
"type": "StorySubheader",
"text": "The Solution"
},
{
"type": "StoryParagraph",
"text": "New section about the solution..."
}
]
}
}
Response
{
"id": "cont_story_acme_001",
"status": "draft",
"updatedAt": "2024-06-20T14:30:00Z",
"validationWarnings": []
}
Usage
Update Name Only
const result = await mcp.call("update_content", {
contentId: "cont_story_acme_001",
name: "New Title for the Story"
});
Update Content Structure
// First, get the current content
const content = await mcp.call("get_content", {
contentId: "cont_story_acme_001"
});
// Modify and update
const result = await mcp.call("update_content", {
contentId: "cont_story_acme_001",
content: {
...content.content,
components: [
...content.content.components,
{
type: "StoryParagraph",
text: "New paragraph added to the story..."
}
]
}
});
const result = await mcp.call("update_content", {
contentId: "cont_story_acme_001",
tags: ["case-study", "design-system", "featured"]
});
const result = await mcp.call("update_content", {
contentId: "cont_story_acme_001",
metadata: {
locale: "en-US",
author: "[email protected]",
reviewedBy: "[email protected]"
}
});
Partial Updates
You only need to include the fields you want to update. Omitted fields remain unchanged:
// This only updates the name, leaving content, tags, etc. unchanged
await mcp.call("update_content", {
contentId: "cont_story_acme_001",
name: "Updated Title Only"
});
When updating the content field, you must provide the complete content structure. Partial content updates (updating only some fields within content) are not supported. Always fetch the current content first, modify it, then send the complete structure.