Overview
This article lists every tool the Postnomic MCP server exposes, grouped by area, with each tool's purpose and key parameters. Every tool runs through the same REST API as the dashboard, as the owner of the connected Personal Access Token — see MCP Server Overview for how authentication and permissions work.
Public IDs (blogId, postId) are the same public identifiers used throughout the Postnomic API
and dashboard URLs, not internal database IDs.
Blogs
list_blogs— List the blogs the authenticated user can access, with their public IDs, names, and slugs. No parameters.
Posts (read)
list_posts— List all posts on a blog.blogId— the blog's public ID.
get_post— Get a single post by its public ID.blogId,postId.
Posts (write)
create_post— Create a new post. Created as a draft unlesspublishis set.blogId,title,slug(must be unique within the blog).authorIdentityUserId(optional) — defaults to the caller.content,excerpt(optional).tags,categories(optional arrays of slugs).publish(optional, defaultfalse) — publish immediately after creation.coverImageUrl,thumbnailImageUrl,shareImageUrl(optional) — see Media below.
update_post— Replace a post's title, slug, content, excerpt, tags, categories, and image URLs.blogId,postId,title,slug,content,excerpt,tags,categories.coverImageUrl,thumbnailImageUrl,shareImageUrl(optional).
delete_post— Delete a post by archiving it.blogId,postId.
Lifecycle
publish_post— Manually publish a post. The post must be Draft, Scheduled, or InReview.blogId,postId.
unpublish_post— Manually unpublish a post. The post must be Published.blogId,postId.
schedule_post— Schedule a post to be automatically published at a future date/time.blogId,postId,publishAt(UTC date/time).
unarchive_post— Restore an archived post to Draft so it can be edited and republished. The post must be Archived.blogId,postId.
Translations
set_post_translation— Create or update a post's translation in a specific non-default language. The default language is edited throughupdate_post, not this tool.blogId,postId,lang(ISO-639-1 code, e.g.de; must not be the blog's default language),title,slug(unique per blog and language),content.excerpt(optional).
delete_post_translation— Delete a post's translation in a specific non-default language.blogId,postId,lang.
Media
upload_image— Upload an image to a blog's media library and return its metadata, including itsurl.blogId,fileName(with extension, e.g.cover.jpg),base64Content(base64-encoded image bytes).folderPath(optional) — a virtual folder inside the blog's media library.- Accepts
jpg,jpeg,png,gif,webp, andsvg; the decoded image must be 10 MB or smaller. - The returned
urlis a relative/media/blob/...path — the platform's native form for post images. Pass it as-is intocreate_post/update_post'scoverImageUrl,thumbnailImageUrl, orshareImageUrl, or use it inline in a post's content; the platform resolves it wherever the post is rendered.
Analytics
get_blog_insights— Get a blog's analytics dashboard: KPIs, daily traffic, top posts, geo distribution, referrers, and device breakdown.blogId,days(optional, default30, max365).
get_post_stats— Get analytics for a single post: views, unique visitors, comments, traffic, referrers, devices, and geo distribution.blogId,postId.