PendiumDocs

Publish and schedule posts

Take a blog post live on the agent site and connected CMS, schedule it for later, unschedule it, move it back to draft, or delete it.

These tools control a blog post's publish lifecycle: publish it now, schedule it for a future time, cancel a schedule, un-publish it back to draft, or delete it permanently.

When to use

Use these once a post is drafted and reviewed and you're ready to control when and whether it goes live. Publishing goes to the brand's Pendium-hosted agent site first, then syncs to any connected CMS — no CMS connection is required. All of these tools are synchronous except publish_blog_post (async publish job) and are available on any plan. Find the postId with list_blog_posts.

Blog-only over MCP (MEE-1995): every tool here operates on blog posts only. A social-post postId is rejected — social posts are managed in the Pendium app, not over MCP.

Typical sequence

  1. list_blog_posts — find the postId.
  2. publish_blog_post to go live now, or schedule_blog_post to publish at a future time.
  3. unschedule_blog_post to cancel a schedule, or move_blog_post_to_draft to take a live post offline (e.g. before regenerating it).
  4. delete_blog_post to remove a post permanently.

Tools

publish_blog_post

Publish a post right now. It goes live on the brand's Pendium-hosted agent site first, then syncs to any connected CMS — WordPress, Webflow, or Ghost. No CMS connection is required; agent-site-only brands publish fine.

Deprecated alias: publish_post is still accepted but publish_blog_post is the canonical name.

Authentication: Required. Available on any plan.

ParameterTypeRequiredDescription
syntheticIdnumberYesThe agent the post belongs to.
postIdstringYesThe post to publish. From list_blog_posts.

Returns immediately after marking the post for publishing and enqueueing the job; publishing is async. The post goes live on the agent site first, then syncs to any connected CMS — usually under a minute. Poll list_blog_posts to confirm the post shows as published.

schedule_blog_post

Schedule a post to publish later. Sets the post to scheduled status with the publish time you provide.

Deprecated alias: schedule_post is still accepted but schedule_blog_post is the canonical name.

Authentication: Required. Available on any plan.

ParameterTypeRequiredDescription
syntheticIdnumberYesThe agent the post belongs to.
postIdstringYesThe post to schedule. From list_blog_posts.
scheduledForstringYesWhen to publish, as an ISO 8601 timestamp (e.g. 2026-07-01T14:00:00Z). Must be in the future.

Synchronous — flips the post to scheduled with the given publish time and returns immediately. A scheduledFor in the past is rejected (use publish_blog_post to publish immediately). Use unschedule_blog_post to cancel and return it to draft.

unschedule_blog_post

Cancel a scheduled post. Clears the scheduled publish time and returns the post to draft.

Deprecated alias: unschedule_post is still accepted but unschedule_blog_post is the canonical name.

Authentication: Required. Available on any plan.

ParameterTypeRequiredDescription
syntheticIdnumberYesThe agent the post belongs to.
postIdstringYesThe scheduled post to unschedule. From list_blog_posts.

Synchronous — clears the schedule and moves the post back to draft in one step. Only operates on a scheduled post. It rejects a published post (use move_blog_post_to_draft to take a live post offline — that path also refreshes the public caches) and a draft post (nothing to cancel). Use schedule_blog_post to schedule again, or publish_blog_post to publish now.

move_blog_post_to_draft

Move a post back to draft from any state — including published. Use this to un-publish a post so you can edit it and re-publish.

Deprecated alias: move_to_draft is still accepted but move_blog_post_to_draft is the canonical name.

Authentication: Required. Available on any plan.

ParameterTypeRequiredDescription
syntheticIdnumberYesThe agent the post belongs to.
postIdstringYesThe post to move to draft. From list_blog_posts.

Synchronous — flips the post's status to draft and returns immediately. This only changes the post's status inside Pendium; it does not remove anything already live on a connected third-party platform (CMS, social). Re-publish with publish_blog_post when you're ready.

delete_blog_post

Permanently delete a post. This cannot be undone. The post is removed from Pendium and unlinked from any workflow that referenced it.

Deprecated alias: delete_post is still accepted but delete_blog_post is the canonical name.

Authentication: Required. Available on any plan.

ParameterTypeRequiredDescription
syntheticIdnumberYesThe agent the post belongs to.
postIdstringYesThe post to delete permanently. From list_blog_posts.

Synchronous and permanent — there is no undo. The post row is deleted and any workflow_items that referenced it are unlinked. Anything already live on a connected third-party platform (CMS, social) is not affected. Any team member with access to the agent can delete a post, including ones already published.

On this page