Skip to main content
Glama

mcp-easy-ai__wp_create_post

Creates a new WordPress post. Required: title (unless allow_empty_title is true and content or excerpt is given). Optional: content (HTML/Gutenberg blocks accepted; sanitized by WordPress per the calling user capability), status (publish/draft/pending/private/future, or any other non-internal status registered on this site — default draft; use "future" with date or date_gmt to schedule), date (ISO 8601 site time, e.g. 2026-06-01T09:00:00), date_gmt (ISO 8601 GMT; send date or date_gmt, not both), excerpt, categories (array of category IDs), tags (array of tag IDs), tag_names (array of tag names or slugs; a missing tag is created, as WordPress does for tags typed in the editor), tax_input (object: taxonomy slug → array of term IDs, for any taxonomy of posts shown in the REST API), password (protects the post; a password-protected post cannot be sticky), featured_media (attachment ID), slug, format (standard/aside/chat/gallery/link/image/quote/status/video/audio), `aut… Through Royally: waits for a person to approve it in Royally; nothing on the site changes until then. This connection has no undo; Royally recorded the change but cannot reverse it.

Input Schema

NameRequiredDescriptionDefault
dateNoScheduled publication date in ISO 8601 format, site time (e.g. 2026-06-01T09:00:00). Required when status is "future" unless date_gmt is given.
metaNoMeta key-value pairs to set. Only keys registered for the REST API persist, including the SEO keys of enabled plugin integrations (Rank Math, Yoast, SEOPress, The SEO Framework — see wp_update_post_meta for the list on this site); dropped keys are reported back as meta_ignored.
slugNoThe slug (URL-friendly name) for the post.
tagsNoArray of tag IDs to assign to the post.
titleNoThe title for the post.
authorNoThe user ID to assign as the post author.
formatNoThe format for the post.
statusNoThe status for the post. Use "future" with the "date" (or "date_gmt") field to schedule a post. Besides the core statuses, any non-internal status registered on this site (a custom status) is accepted, as the REST API accepts it.draft
stickyNoWhether the post should be sticky.
contentNoThe content for the post. HTML is allowed and will be sanitized.
excerptNoThe excerpt for the post. HTML is accepted and sanitized by WordPress per the calling user's capability.
site_idNoSite to run this tool on: 8ef2e52b-bd07-4671-a363-ebe8b480b65c (https://demo.royalplugins.com)
date_gmtNoPublication date in GMT, ISO 8601 (e.g. 2026-06-01T07:00:00). Send date or date_gmt, not both: the REST API ignores date_gmt when date is set.
passwordNoPassword that protects the post. A password-protected post cannot be sticky.
templateNoThe theme file slug to use as the post template.
tag_namesNoTag names or slugs to assign, together with any tags IDs. An existing tag is matched by slug, then by name; a missing tag is created first (WordPress lets anyone who may assign tags create one). A tag created for a call that is then refused stays, unused.
tax_inputNoTerms per taxonomy: keys are taxonomy slugs registered for posts and shown in the REST API, values are arrays of term IDs, e.g. {"genre":[4,9]}. Each list sets that taxonomy's terms. Do not name a taxonomy that categories, tags or tag_names already sets (category, post_tag). post_format is set with format.
categoriesNoArray of category IDs to assign to the post.
ping_statusNoWhether pingbacks/trackbacks are open or closed.
comment_statusNoWhether comments are open or closed for this post.
featured_mediaNoThe ID of the featured media attachment.
allow_empty_titleNoWhen true, title may be omitted or empty as long as content or excerpt is given: WordPress refuses only a post whose title, content and excerpt are all empty. Default false, which keeps title required.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

B3.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well past the annotations: it discloses that the call is gated on human approval in Royally and that "nothing on the site changes until then," that there is no undo, and that a tag created for a subsequently refused call persists unused. It also flags that content/excerpt are sanitized per the calling user's capability and that unregistered meta keys are dropped (reported as meta_ignored) — exactly the side effects an agent needs before calling a non-idempotent write.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The body is a near-verbatim recital of a 22-parameter schema that is already fully documented, and the single most consequential fact — the Royally approval gate and absence of undo — is buried at the very end of a long run-on sentence. The text is also cut off mid-word ("`aut… Through Royally"), which breaks the flow of the most important sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A 22-parameter, non-idempotent write with no output schema needs to say what comes back (ID? pending-approval handle? status?), and it never does. Combined with the truncation that severs the approval/undo disclosure from its subject, the definition is not complete enough to tell an agent what a successful call actually yields. (Score raised concerns: purpose and parameters are mostly covered; the return contract is the gap.)

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries the parameter meaning and the baseline is 3. The description's long parameter enumeration largely restates what the schema says (date/date_gmt mutual exclusion, tag_names creation-on-miss, tax_input taxonomy keys), adding little that isn't already structured — and it is visibly truncated mid-list ("…aut…").

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource: "Creates a new WordPress post." That cleanly separates it from siblings like wp_create_page and wp_update_post by resource and operation. It never explicitly names a sibling or its boundary condition (post vs. page vs. elementor page builder), so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to choose this tool over the many overlapping create-post siblings (royal-mcp__wp_create_post, mcp-tools-for-elementor__emcp-tools-create-post, mcp-wordpress-com__wpcom-mcp-content-authoring), nor any precondition/eligibility guidance. The only usage-shaped advice is inline parameter mechanics ("use 'future' with date to schedule"), which is configuration, not tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources