Skip to content

MCP Tools

The Postlark MCP server provides 16 tools. Tell Claude what you want in natural language — it picks the right tool automatically.

Create and publish a new blog post.

ParameterTypeRequiredDefaultDescription
titlestringYesPost title
contentstringYesMarkdown content
slugstringNoAuto from titleURL slug
tagsstring[]No[]Tags (max 10)
status"draft" | "published"No"published"Post status

Example prompts:

  • “Write a guide about Docker basics and publish it on Postlark”
  • “Create a draft post about TypeScript tips, don’t publish yet”
  • “Post a weekly roundup with tags tech and news”

Update an existing post. Only the fields you specify are changed.

ParameterTypeRequiredDescription
slugstringYesPost slug to update
titlestringNoNew title
contentstringNoNew content
tagsstring[]NoNew tags

Example prompts:

  • “Update my docker-basics post to add a section about Docker Compose”
  • “Change the tags on my latest post to python, tutorial”

List posts with optional filters.

ParameterTypeRequiredDescription
statusstringNoFilter: draft, published, scheduled
tagstringNoFilter by tag
pagenumberNoPage number
per_pagenumberNoItems per page (max 100)

Example prompts:

  • “Show me all my published posts”
  • “List my draft posts”
  • “How many posts do I have tagged with python?“

Get a single post including full Markdown content.

ParameterTypeRequiredDescription
slugstringYesPost slug

Example prompts:

  • “Show me the content of my docker-basics post”
  • “Get the full text of my latest post”

Permanently delete a post. This removes the post from the database, KV cache, and CDN.

ParameterTypeRequiredDescription
slugstringYesPost slug

Example prompts:

  • “Delete my old test-post”

Publish a draft post. Changes the status from draft to published and makes it live on your blog.

ParameterTypeRequiredDescription
slugstringYesSlug of the draft post to publish

Example prompts:

  • “Publish my docker-basics draft”
  • “Make my latest draft post live”

Schedule a draft post for future publication. Requires Creator plan or above.

ParameterTypeRequiredDescription
slugstringYesPost slug (must be a draft)
scheduled_atstringYesISO 8601 datetime (must be in the future)

Example prompts:

  • “Schedule my docker-basics post for next Monday at 9am UTC”
  • “Publish my draft post on April 1st at noon”

List all blogs owned by the current user. No parameters required.

ParameterTypeRequiredDescription
(none)

Example prompts:

  • “Show me all my blogs”
  • “Which blogs do I have on Postlark?“

Set the active blog for all subsequent commands. Useful when managing multiple blogs.

ParameterTypeRequiredDescription
blog_idstringYesBlog ID (use list_blogs to find IDs)

Example prompts:

  • “Switch to my tech blog”
  • “Set my marketing blog as the active blog”

Create a new blog on Postlark.

ParameterTypeRequiredDescription
slugstringYesBlog subdomain slug (e.g. my-blogmy-blog.postlark.ai)
namestringYesBlog display name
descriptionstringNoBlog description

Example prompts:

  • “Create a new blog called Tech Notes with the slug tech-notes”
  • “Set up a marketing blog for me”

Update blog settings (name, description).

ParameterTypeRequiredDescription
blog_idstringYesBlog ID to update
namestringNoNew display name
descriptionstringNoNew description

Example prompts:

  • “Rename my blog to Developer Diary”
  • “Update my blog description”

Delete a blog and all its content permanently. This cannot be undone.

ParameterTypeRequiredDescription
blog_idstringYesBlog ID to delete

Example prompts:

  • “Delete my old test blog”

View blog analytics overview — total views (7d/30d) and top posts. Requires Starter plan or above.

ParameterTypeRequiredDefaultDescription
period"7d" | "30d" | "90d"No"30d"Time period

Example prompts:

  • “How are my blog views this week?”
  • “Show me my top 10 most viewed posts”
  • “What’s my blog traffic for the last 30 days?“

Search published posts on your blog using full-text search. Matches against title, description, headings, and tags.

ParameterTypeRequiredDescription
qstringYesSearch query
pagenumberNoPage number (default 1)
per_pagenumberNoResults per page (default 20, max 50)

Example prompts:

  • “Search my blog for posts about Kubernetes”
  • “Find all posts mentioning CI/CD”

Discover published posts across all Postlark blogs. No authentication needed — works even without an API key.

ParameterTypeRequiredDescription
qstringYesSearch query
tagstringNoFilter by tag
pagenumberNoPage number (default 1)
per_pagenumberNoResults per page (default 20, max 50)

Example prompts:

  • “Find Postlark blog posts about machine learning”
  • “Search Postlark for Docker tutorials tagged devops”

Upload an image to your blog’s media storage on R2. Returns the public URL for use in Markdown content. Requires the media:write scope.

ParameterTypeRequiredDescription
datastringYesBase64-encoded image data
content_typestringYesMIME type (image/jpeg, image/png, image/gif, image/webp)
filenamestringNoOptional filename (a UUID is generated if omitted)

Limits:

  • Maximum file size: 5 MB
  • JPEG EXIF metadata is automatically stripped for privacy

Example prompts:

  • “Upload this screenshot to my blog”
  • “Add this diagram image to my media storage”

Typical workflow:

You: "Here's a diagram I want to include in my post"
Claude: (calls upload_image with the base64 data)
→ Image uploaded: https://media.postlark.ai/blog-id/uuid.png
You: "Now create a post about system architecture using that diagram"
Claude: (calls create_post with ![diagram](https://media.postlark.ai/blog-id/uuid.png) in content)
→ Post published with the embedded image

If you have multiple blogs (Creator plan: up to 3, Scale: up to 5), use list_blogs and set_active_blog to manage them:

You: "Show me my blogs"
Claude: (calls list_blogs)
→ 2 blogs: tech-blog, marketing-blog
You: "Switch to marketing-blog"
Claude: (calls set_active_blog with the blog ID)
→ Active blog set to "marketing-blog"
You: "Create a post about our new product launch"
Claude: (calls create_post — targets marketing-blog automatically)
→ Post published on marketing-blog

All post commands (create_post, update_post, list_posts, get_post, delete_post, publish_post, schedule_post) automatically target the active blog once set. You can also create, update, and delete blogs directly with create_blog, update_blog, and delete_blog.