> ## Documentation Index
> Fetch the complete documentation index at: https://docs.metabind.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Creation Overview

> Create and update content items

Content creation tools enable AI agents to create, update, *and* validate content within content type constraints.

## Available Tools

<CardGroup cols={2}>
  <Card title="create_content" icon="plus" href="/mcp/creation/create-content">
    Create new content items
  </Card>

  <Card title="update_content" icon="pen" href="/mcp/creation/update-content">
    Update existing content
  </Card>
</CardGroup>

## Validation

All content is validated against the content type's JSON schema before creation or update. This ensures:

* Required fields are present
* Field types match the schema
* String lengths respect `maxLength` constraints
* Component types match allowed definitions
* Asset references point to existing assets

## Best Practices

### Before Creating Content

1. **Fetch the schema first**: Always use `get_content_type` to understand the structure
2. **Validate asset IDs**: Use `search_assets` to verify assets exist
3. **Check length limits**: Review `maxLength` constraints in the schema
4. **Use correct component types**: Match type names exactly as defined

### Content Structure

1. **Include all required fields**: Check the schema's `required` arrays
2. **Follow component patterns**: Each component needs a `type` field
3. **Reference assets by ID**: Use `{ "id": "asset-xxx" }` format

### Descriptions

Use structured markdown for descriptions:

```
Brief summary of the content.

**Topics:** Topic1, Topic2, Topic3
**Key points:** Point1, Point2, Point3
**Length:** ~1500 words
**Language:** English
```

This format helps both humans and AI agents understand the content context.

## Common Workflow

```javascript theme={null}
// 1. Get the content type schema
const contentType = await mcp.call("get_content_type", {
  contentTypeId: "ct_story_001"
});

// 2. Find assets to use
const assets = await mcp.call("search_assets", {
  query: "hero image",
  type: "image/*"
});

// 3. Create the content
const result = await mcp.call("create_content", {
  typeId: "ct_story_001",
  name: "My New Story",
  content: {
    title: "My New Story",
    asset: { id: assets.items[0].id },
    components: [
      {
        type: "StoryParagraph",
        text: "Opening paragraph..."
      }
    ]
  }
});

// 4. Update if needed
await mcp.call("update_content", {
  contentId: result.id,
  content: {
    // Updated content...
  }
});
```
