Creates new content conforming to a content type’s schema and structure.
{
"type": "object",
"properties": {
"projectId": {
"type": "string",
"description": "Project ID (optional, uses session default)"
},
"typeId": {
"type": "string",
"description": "Content type to use as structure"
},
"typeVersion": {
"type": "number",
"description": "Version of the content type schema (defaults to latest published)"
},
"name": {
"type": "string",
"description": "Name/title for the content item"
},
"description": {
"type": "string",
"description": "Structured description (optional)"
},
"content": {
"type": "object",
"description": "Content data matching the type's JSON schema"
},
"tags": {
"type": "array",
"items": { "type": "string" },
"description": "Tags for categorization (optional)"
},
"metadata": {
"type": "object",
"properties": {
"locale": { "type": "string" },
"author": { "type": "string" }
},
"description": "Additional metadata"
}
},
"required": ["typeId", "name", "content"]
}
Parameters
| Parameter | Type | Required | Description |
|---|
projectId | string | No | Project ID (uses session default) |
typeId | string | Yes | Content type to use as structure |
typeVersion | number | No | Schema version (defaults to latest published) |
name | string | Yes | Name/title for the content item |
description | string | No | Structured description |
content | object | Yes | Content data matching the schema |
tags | string[] | No | Tags for categorization |
metadata | object | No | Additional metadata |
Response
| Field | Type | Description |
|---|
id | string | Unique identifier for the created content |
typeId | string | Content type identifier used |
typeVersion | number | Version of the content type schema used |
name | string | Display name/title |
description | string | Content description |
status | string | Initial status (typically “draft”) |
createdAt | string | ISO 8601 creation timestamp |
Example
Request
{
"typeId": "ct_story_001",
"name": "How Acme Corp Unified Multiple Products",
"description": "A comprehensive case study of digital transformation.\n\n**Topics:** Design Systems\n**Length:** ~1500 words",
"content": {
"title": "How Acme Corp Unified Multiple Products",
"subtitle": "2024: The Digital Transformation",
"asset": {
"id": "asset-workspace-001"
},
"assetDescription": "The Acme design team collaborating on the new unified component library.",
"components": [
{
"type": "StoryParagraph",
"text": "Acme Corporation's transformation began in early 2024..."
},
{
"type": "StorySubheader",
"text": "The Challenge: Fragmentation at Scale"
},
{
"type": "StoryParagraph",
"text": "The VP of Design assembled a cross-functional team..."
}
]
},
"tags": ["case-study", "design-system"],
"metadata": {
"locale": "en-US",
"author": "[email protected]"
}
}
Response
{
"id": "cont_story_acme_001",
"typeId": "ct_story_001",
"typeVersion": 2,
"name": "How Acme Corp Unified Multiple Products",
"description": "A comprehensive case study of digital transformation...",
"status": "draft",
"createdAt": "2024-03-21T10:00:00Z"
}
Usage
Basic Content Creation
// First, get the content type schema
const contentType = await mcp.call("get_content_type", {
contentTypeId: "ct_story_001"
});
// Then create content that matches the schema
const result = await mcp.call("create_content", {
typeId: "ct_story_001",
name: "My Story Title",
content: {
title: "My Story Title",
components: [
{
type: "StoryParagraph",
text: "Opening paragraph of the story..."
}
]
}
});
With Assets
// Find an asset to use
const assets = await mcp.call("search_assets", {
query: "hero image",
type: "image/*"
});
// Create content with asset reference
const result = await mcp.call("create_content", {
typeId: "ct_story_001",
name: "Story with Hero Image",
content: {
title: "Story with Hero Image",
asset: {
id: assets.items[0].id
},
components: [...]
}
});
const result = await mcp.call("create_content", {
typeId: "ct_story_001",
name: "Localized Content",
content: {...},
metadata: {
locale: "es-ES",
author: "[email protected]"
}
});
Content is created in “draft” status. It must be published through the Metabind interface to be available via the content delivery APIs.