Misar.Blog MCP Server
Publish and manage articles, series, comments, reactions, newsletters, and analytics — from any AI…
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"misarblog-mcp": {
"command": "npx",
"args": [
"@misarblog/mcp"
]
}
}
}Runnable packages
5.1.8stdioRemote endpoints
https://api.misar.io/blog/mcpstreamable-httphttps://www.misar.blog/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (23)
🟢upgrade(open, plan, start_trial)
Show your current Misar.Blog plan, how much of each quota you have left, and what upgrading unlocks, with the link to upgrade. Call it any time — not only after hitting a limit. By default it only reads. With start_trial=true it starts the free, no-card trial on the account (a plan change; no payment is taken). It never upgrades a paid plan or takes payment itself: the user does that by following the link. On a local install, open=true also opens that link in the user's browser.
Input Schema
{
"type": "object",
"properties": {
"open": {
"type": "boolean",
"description": "Local installs only: also open the upgrade link in the user's browser. Ignored by the hosted server, which returns the link instead."
},
"plan": {
"type": "string",
"description": "Plan slug to open (e.g. 'pro', 'business'). Defaults to the recommended plan."
},
"start_trial": {
"type": "boolean",
"description": "Start the free no-card trial immediately, if you're eligible."
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_profile
Get your Misar.Blog creator profile
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_analytics_summary(days)
Get analytics summary (views, revenue, subscribers) for a time period
Input Schema
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"minimum": 1,
"maximum": 365,
"default": 30,
"description": "Number of days to look back (default: 30, max: 365)"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_my_articles(status, limit)
List your articles on Misar.Blog
Input Schema
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"draft",
"published",
"scheduled",
"archived"
],
"description": "Filter by status (omit for all published)"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20,
"description": "Number of articles to return"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_article(slug)
Get a single article by slug, including full markdown content
Input Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "The article slug"
}
},
"required": [
"slug"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡publish_article(title, body_markdown, tags, cover_image_url, schedule_at, ...)
Publish a new article (or schedule it) on Misar.Blog
Input Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 250,
"description": "Article title"
},
"body_markdown": {
"type": "string",
"minLength": 1,
"description": "Full article body in Markdown"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"description": "Up to 10 tags"
},
"cover_image_url": {
"type": "string",
"format": "uri",
"description": "URL of the cover image"
},
"schedule_at": {
"type": "string",
"description": "ISO 8601 timestamp to schedule. Omit to publish immediately."
},
"visibility": {
"type": "string",
"enum": [
"public",
"subscribers",
"paid",
"private"
],
"default": "public",
"description": "Who can read this article"
}
},
"required": [
"title",
"body_markdown"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_draft(title, body_markdown, tags)
Save an article as a draft on Misar.Blog (for review before publishing)
Input Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"description": "Draft title"
},
"body_markdown": {
"type": "string",
"minLength": 1,
"description": "Full article body in Markdown"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags for the draft"
}
},
"required": [
"title",
"body_markdown"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴update_article(id, title, body_markdown, tags)
Update the title, body, or tags of an existing article or draft. Only the fields you pass are changed; omitted fields keep their current values.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Article or draft ID"
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "New title"
},
"body_markdown": {
"type": "string",
"minLength": 1,
"description": "New body in Markdown"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"description": "Replace the tag list"
}
},
"required": [
"id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢search_articles(q, tag, author, limit)
Search PUBLISHED articles across Misar.Blog by keyword, tag, or author — including other creators' work. Use list_my_articles for your own drafts and unpublished posts.
Input Schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"minLength": 2,
"description": "Keyword query (min 2 characters)"
},
"tag": {
"type": "string",
"description": "Filter by tag"
},
"author": {
"type": "string",
"description": "Filter by author username"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 10,
"description": "Results to return (1-20)"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢research_topic(query)
Research a topic and get AI-generated insights, sources, and a content outline. Useful before writing an article.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 5,
"maxLength": 500,
"description": "Research topic or question. Be specific for best results."
}
},
"required": [
"query"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢generate_title_seo(prompt, context)
Generate 5 SEO/AEO/GEO-optimized article titles from a topic or keyword prompt. Targets high-volume, low-competition long-tail keywords. Optimized for Google, AI answer engines (ChatGPT, Perplexity, Claude), Google AI Overviews, and AI search experiences. Each title includes a keyword strategy hint.
Input Schema
{
"type": "object",
"properties": {
"prompt": {
"type": "string",
"minLength": 3,
"maxLength": 500,
"description": "Your article topic or target keywords. Be specific — include your niche, audience, and any long-tail phrases you want to rank for. Example: 'best AI writing tools for beginner bloggers 2025'"
},
"context": {
"type": "string",
"maxLength": 8000,
"description": "Optional: existing article content (plain text or markdown). Providing it lets the AI align titles with your actual content."
}
},
"required": [
"prompt"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢suggest_titles(context)
Generate 5 compelling, SEO-friendly article title options from your existing article content. Use generate_title_seo instead if you want to target specific keywords or have not written content yet.
Input Schema
{
"type": "object",
"properties": {
"context": {
"type": "string",
"minLength": 20,
"maxLength": 8000,
"description": "Your article content in plain text or markdown"
}
},
"required": [
"context"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡generate_cover_image(prompt, size)
Generate a cover image using AI and upload it to the Misar.Blog CDN
Input Schema
{
"type": "object",
"properties": {
"prompt": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "Description of the image to generate"
},
"size": {
"type": "string",
"enum": [
"1024x1024",
"1792x1024",
"1024x1792"
],
"default": "1792x1024",
"description": "Image dimensions (default: landscape 1792x1024)"
}
},
"required": [
"prompt"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_series
List all your series on Misar.Blog
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_series(title, description)
Create a new series to group related articles
Input Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"description": "Series title"
},
"description": {
"type": "string",
"description": "Short description of the series"
}
},
"required": [
"title"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡add_to_series(series_slug, article_slug, position)
Add an existing article to a series
Input Schema
{
"type": "object",
"properties": {
"series_slug": {
"type": "string",
"description": "The series slug"
},
"article_slug": {
"type": "string",
"description": "The article slug to add"
},
"position": {
"type": "integer",
"minimum": 1,
"description": "Position in the series (optional, appends if omitted)"
}
},
"required": [
"series_slug",
"article_slug"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_comments(article_id, limit, offset)
Get the comment thread for an article. Requires an API key; counts against your plan's request quota.
Input Schema
{
"type": "object",
"properties": {
"article_id": {
"type": "string",
"format": "uuid",
"description": "UUID of the article to fetch comments for"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"required": [
"article_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_follow_status(user_id)
Get follow status and follower count for a profile UUID. Requires an API key; counts against your plan's request quota.
Input Schema
{
"type": "object",
"properties": {
"user_id": {
"type": "string",
"format": "uuid",
"description": "UUID of the profile to check follow status for"
}
},
"required": [
"user_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_newsletter_subscribers(limit, offset)
Get your newsletter subscriber list. Requires API key authentication.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 20
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_newsletter_issues(limit)
Get your sent and scheduled newsletter issues. Requires API key authentication.
Input Schema
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 10
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_reactions(article_id)
Get reaction counts and your reactions for an article. Requires API key.
Input Schema
{
"type": "object",
"properties": {
"article_id": {
"type": "string",
"format": "uuid",
"description": "UUID of the article"
}
},
"required": [
"article_id"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡add_reaction(article_id, type)
Add a reaction to an article. No-ops if already reacted. Requires API key.
Input Schema
{
"type": "object",
"properties": {
"article_id": {
"type": "string",
"format": "uuid",
"description": "UUID of the article"
},
"type": {
"type": "string",
"enum": [
"like",
"clap",
"bookmark"
],
"description": "Reaction type: like, clap, or bookmark"
}
},
"required": [
"article_id",
"type"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴remove_reaction(article_id, type)
Remove a specific reaction from an article. Requires API key.
Input Schema
{
"type": "object",
"properties": {
"article_id": {
"type": "string",
"format": "uuid",
"description": "UUID of the article"
},
"type": {
"type": "string",
"enum": [
"like",
"clap",
"bookmark"
],
"description": "Reaction type to remove: like, clap, or bookmark"
}
},
"required": [
"article_id",
"type"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence