Misar.Blog MCP Server

Publish and manage articles, series, comments, reactions, newsletters, and analytics — from any AI…

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
89%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~3,298Tokens (tool definitions)
~1001 BTypical response size
Significant attention impact (2.58% of 128k context)

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

npm@misarblog/mcp5.1.8stdio

Remote endpoints

https://api.misar.io/blog/mcpstreamable-http
https://www.misar.blog/api/mcpstreamable-http

What it can do

Tool inventory

Tools (23)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded23 tools
verifiedversion not recorded23 tools
verifiedversion not recorded23 tools
verifiedversion not recorded23 tools
verifiedversion not recorded23 tools
verifiedversion not recorded23 tools
verifiedversion not recorded23 tools
verifiedversion not recorded23 tools
verifiedversion not recorded23 tools