create_content
Create a new content item (page, block or global) as an unpublished draft, filled in ONE call: pass its fields in data (shapes from list_content_types {name}).
Instructions
Create a new content item (page, block or global) as an unpublished draft, filled in ONE call: pass its fields in data (shapes from list_content_types {name}). Without data you get an empty shell that stays blank until update_content/set_field fills it. A page's position decides its URL and the template that renders it, so find the right parentId with list_tree (blog posts go under their blog page); omit it only for top-level sections. Under a list page, omit type to inherit the type it lists — a mismatch is refused, since the item would never appear on that list. Returns the new item in the get_content shape (documentId, locale, revision, data…), plus a hint when it still needs filling or placing. Then publish_content. To copy an existing item instead, use duplicate_content. Requires the content.create permission (Admin, Editor, Author — an Author only within their own sections).
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"name": "<name>"
},
"name": "create_content"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Initial field values (field name → value), same shapes as update_content. Provide this to create a FILLED draft in one call. Call list_content_types {name} first for the field names/shapes. | |
| name | Yes | Display name of the item (also the source of a page's auto slug), e.g. 'Summer sale 2026'. | |
| site | No | Site slug or id to act in (multisite). Omit to use this server's default site. Call list_sites to see what exists — an empty tree or search usually means the wrong site, not missing content. | |
| slug | No | URL slug for a page. Omit to auto-derive from the name. | |
| type | No | Content type name. Under a list-page parent, OMIT to inherit the type that page lists; a mismatch is refused unless allowTypeMismatch. | |
| locale | No | The LANGUAGE BRANCH for this content — MATCH the language you are writing (Norwegian content → 'nb', English → 'en'). list_sites reports the site's branches (`locales`). Defaults to the site default locale, which is usually English. | |
| parentId | No | documentId of the parent page. Required in practice for pages — find it with `list_tree`. Omit only for top-level pages. | |
| allowTypeMismatch | No | Set true ONLY for a deliberate sub-page whose type differs from the parent list page's listedType | |
| allowLanguageMismatch | No | Set true ONLY to deliberately create text whose language differs from the locale branch (the guard otherwise refuses, so e.g. Norwegian text can't silently land on the 'en' branch) |