Create content
create_contentCreate WordPress posts, pages, or custom post types as drafts by default, with options to publish, schedule, set taxonomies, and assign custom fields.
Instructions
Create a post, page, or any custom post type. Content is created as a DRAFT unless you explicitly pass status: "publish" — this server never publishes to a live site implicitly. Schedule by passing status: "future" with a future date. Taxonomy terms can be given by name and are created if missing.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "create_content"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Publish date in site time, ISO 8601 (2026-01-31T09:00:00). With status "future" (or "publish" and a future date) this schedules the post. | |
| meta | No | Custom fields, as key/value pairs. A key only writes if it is registered with show_in_rest — use set_content_meta for unregistered keys. | |
| slug | No | URL slug. Changing this on published content breaks existing links unless you add a redirect. | |
| type | No | Content type to create. | post |
| terms | No | Taxonomy assignments keyed by taxonomy slug or REST base, e.g. {"categories": [3], "tags": ["news"]}. Replaces the item's terms in each taxonomy given. Names that do not exist yet are created. | |
| title | No | The title, as plain text. | |
| author | No | User ID of the author. | |
| format | No | Post format. Only applies to types that support post formats. | |
| parent | No | Parent ID, for hierarchical types such as pages. 0 for none. | |
| status | No | publish | future | draft | pending | private | trash. "future" needs a `date` in the future. "trash" moves the item to the trash (same as delete_content without force). | |
| sticky | No | Pin the post to the top of the blog. Posts only. | |
| content | No | Full content body, replacing whatever is there. For the block editor this is block markup (<!-- wp:paragraph --><p>…</p><!-- /wp:paragraph -->); classic content is plain HTML. Use `edits` instead for a small change. | |
| excerpt | No | Hand-written excerpt. | |
| site_id | No | Which configured WordPress site to act on. Optional — with a single site configured it is used automatically; with several, the default site is used unless you name one. Run list_sites for valid ids. | |
| password | No | Password-protect the content. Empty string removes the password. | |
| template | No | Page template file, e.g. "templates/full-width.php". Empty string for the default template. | |
| menu_order | No | Sort order for hierarchical types. | |
| ping_status | No | Whether pingbacks and trackbacks are accepted. | |
| comment_status | No | Whether comments are open on this item. | |
| featured_media | No | Attachment ID of the featured image, or 0 to remove it. Upload it with create_media first. |