MA

misar-ai/misarpost-mcp

Developer tools
0 stars 0 forks Quality 73 Trend 20

MisarPost MCP server — plan, generate, schedule and repurpose social content across every connected channel from any MCP client.

Overview

Plan, generate, schedule and repurpose posts across every connected channel, and track what performs — from any AI assistant. Works with Claude (Desktop, Code, and web), Cursor, VS Code, Windsurf, Cline, Zed, Gemini CLI, ChatGPT, and any other MCP-compatible client — over stdio or Streamable HTTP. Ready-made configs for every client live in connectors/. Create an API key at https://post.misar.io/dashboard/api-keys (Dashboard → API keys) — it starts with mpk_ — and give it to the server in one of three ways: the MISARPOST_API_KEY environment variable, your MCP client's env block, or { "api_key": "mpk_…" } in ~/.misarpost/config.json. Self-hosted instances: set MISARPOST_BASE_URL. Reusable workflows your client exposes as slash-commands. Read-only context an agent can attach without spending a tool call. Bundled in skills/ — guidance an agent loads when a task matches.

README

MisarPost MCP Server

Plan, generate, schedule and repurpose posts across every connected channel, and track what performs — from any AI assistant.

85 tools · 8 prompts · 6 resources · 8 agent skills

Works with Claude (Desktop, Code, and web), Cursor, VS Code, Windsurf, Cline, Zed, Gemini CLI, ChatGPT, and any other MCP-compatible client — over stdio or Streamable HTTP.


Install

npx -y @smithery/cli install misar/misarpost-mcp --client claude

Claude Code

claude mcp add misarpost -- npx -y @misarpost/mcp@latest

Manual (any client)

{
  "mcpServers": {
    "misarpost": {
      "command": "npx",
      "args": ["-y", "@misarpost/mcp@latest"],
      "env": { "MISARPOST_API_KEY": "mpk_your_key_here" }
    }
  }
}

Ready-made configs for every client live in connectors/.

Remote (no install)

{
  "mcpServers": {
    "misarpost": {
      "type": "streamable-http",
      "url": "https://api.misar.io/post/mcp",
      "headers": { "Authorization": "Bearer mpk_your_key_here" }
    }
  }
}

Authentication

Create an API key at https://post.misar.io/dashboard/api-keys (Dashboard → API keys) — it starts with mpk_ — and give it to the server in one of three ways: the MISARPOST_API_KEY environment variable, your MCP client’s env block, or { "api_key": "mpk_…" } in ~/.misarpost/config.json.

Self-hosted instances: set MISARPOST_BASE_URL.


Tools

Tool Description
list_connections List the user’s active connected social accounts with their account ID, platform and display name.
list_publish_options Look up the destinations a connected account can publish into — Discord or Slack channels, Pinterest boards, Reddit post flairs, Hashnode or Medium publications, Hashnode tags, Lemmy communities, Listmonk lists or templates, Skool groups, Whop forums, or WordPress categories and tags.
list_account_plugs Show the plugs (automatic follow-up actions — e.g.
configure_account_plug Turn a plug on or off for one connected account and set its configuration, replacing the plug’s previous configuration.
list_posts List the user’s scheduled and published posts, newest-scheduled first, 20 per page, with platform, status, scheduled/published time, post URL, tags and engagement metrics.
schedule_post Schedule a post to ONE connected account at a given time, or publish it immediately with scheduled_at=“now”.
cancel_post Cancel a post that is still pending or queued, so it never publishes.
get_calendar Get every post scheduled between two dates (default: 7 days ago to 30 days ahead), oldest first, with platform, status, time, text, media, first comment and tags — the content calendar view.
update_post Edit a post that has not gone out yet (status pending, queued or draft): its text, its scheduled time, its first comment, or its tags.
reply_to_post Post a public reply/comment on one of the user’s ALREADY-PUBLISHED posts, on the platform it was published to.
revert_post Delete an ALREADY-PUBLISHED post from the platform it went out on (unlike cancel_post, which only stops a post that has not published yet).
revert_post_batch “Delete everywhere”: delete every published post from one batch (one compose or repurpose action sent to several accounts) from all of its platforms.
share_post Create (or return the existing) public preview link for one of the user’s posts.
unshare_post Revoke a post’s public preview link, so the old link stops working.
list_drafts List up to 50 draft post variants awaiting review (status draft or pending_review), newest first — including AI-generated drafts from generate_posts — with platform, caption, hashtags, tone and source…
review_drafts Approve or reject several drafts at once by ID.
get_stats Get the account overview: connected accounts, posts queued, published this week and this month, drafts waiting, the last published post, the top performing post of the month, and the average engagement rate (null when no metrics exist yet)…
get_analytics_trends Get per-channel daily trends for the last 7, 30 or 90 days: posts published and failed, engagement and impressions, totals, and the change against the previous period.
get_growth_overview Get the Growth Hub overview for the last 7, 30 or 90 days: per-platform engagement trend lines, the weakest-performing platforms (bottlenecks), which post formats perform best, and which platforms have real trend data behind their suggestions.
list_growth_opportunities List rising trends worth posting about now, limited to the user’s niches and to platforms they have connected, each with the hashtag, its growth, and a posting suggestion.
list_growth_playbooks Get per-platform growth playbooks for the user’s connected platforms — cadence, format, timing and anti-spam guidance compiled from each platform’s official creator documentation, with source links.
get_next_growth_opportunity Get the single best next content opportunity for the user’s connected platforms and niches — a compact version of list_growth_opportunities.
get_contentripple_usage Show how many ContentRipple repurposes the user has run this month, their monthly limit (null means unlimited), and their plan tier.
repurpose_content Turn one source — a URL, pasted text or markdown, or an RSS item — into channel-native variants such as an X thread, LinkedIn post or carousel, Instagram caption or reel script, newsletter, or YouTube description.
update_content_variant Edit a saved ContentRipple variant’s text (which marks it edited) and/or set its status.
schedule_content_variant Schedule a saved ContentRipple variant (its text plus hashtags) to a connected account of the matching platform at a given time.
fetch_content_feed Read an RSS or Atom feed and return its entries, so the user can pick one to repurpose with repurpose_content (source_type rss).
parse_content_source Extract the core message, key points and structure from a URL, pasted text (50-20,000 characters) or Markdown, without generating any variants — a preview of what repurpose_content would work from.
list_repurpose_history List past ContentRipple repurposes, newest first: each source (type, URL, title, core message) with its variants and, for variants that were scheduled, the post’s status, URL and engagement…
delete_repurpose_source Delete one repurposed source and its variants from ContentRipple history.
generate_posts Write AI post variants about a topic for one or more platforms — up to 5 per platform — and save them as drafts (visible in list_drafts).
enhance_topic Rewrite a raw topic or idea into a structured content brief: a sharper topic, suggested tone, content angles and key messages for the chosen platforms.
generate_plan For a topic or brief, suggest hook options, the best posting time slots, and trending hashtags per platform.
research_hashtags Build a tiered hashtag strategy for a keyword across platforms — broad, mid and niche tags plus each platform’s algorithm signals.
get_optimization_insights Analyse the last 30 days of post metrics with AI and return the best time of day, best tone, top hashtags, prompt suggestions and per-platform insights.
generate_image Generate an image for a post from a text prompt, sized for the platform (16:9 for X, LinkedIn and YouTube, square for Instagram and Threads, 9:16 for TikTok), and store it in the user’s media.
get_trends Get the latest trending hashtags and content hooks for the user’s TrendPulse niches, each with a snapshot id.
queue_trend_drafts Turn 1–3 trend snapshots (from get_trends) into draft posts — one per snapshot for each platform the user has connected — saved to the draft queue (list_drafts).
schedule_trend_posts Publish posts about 1–3 trend snapshots to the given connected accounts, scheduled five minutes from now — one post per content hook per account, written from the trend’s hooks.
refresh_trends Force a fresh fetch of trending hashtags from every trend source for the user’s niches and store new snapshots, instead of waiting for the scheduled refresh.
send_trend_digest Email the user their trend digest (top recent trends for their niches) now.
get_trend_hooks Get the content hooks (opening lines and angles) for one trend snapshot — snapshot ids come from get_trends…
get_trend_platform_content Get the per-platform content already generated for one trend snapshot — hashtags, plus title/description for YouTube and title/subtitle for Medium.
generate_trend_platform_content Generate per-platform content (hashtags, and titles where a platform needs them) for one trend snapshot, for the platforms asked (default: all seven).
use_trend_platform_content Turn one platform’s generated trend content into a draft post (generating it first if needed).
get_trend_performance Show how the user’s trend-sourced posts actually performed: each TrendPulse draft (last 100) joined to whether it was scheduled or published and its likes, comments, reposts, impressions and reach…
list_post_templates List the user’s saved post templates, most recently updated first — reusable composer states with text, per-platform overrides, target accounts, platform settings, media and first comment…
get_post_template Get one saved post template in full, by id — to reuse its text, accounts and settings in schedule_post…
create_post_template Save a reusable post template: default text, optional per-platform text, target accounts, platform settings, media and first comment.
update_post_template Change a saved post template.
delete_post_template Permanently delete a saved post template.
list_post_tags List the user’s post tags (id, name, colour).
create_post_tag Create a post tag with a name and colour, for grouping posts by campaign or theme.
update_post_tag Rename and/or recolour a post tag.
delete_post_tag Permanently delete a post tag and remove it from every post that carries it.
list_media List the user’s uploaded media library, newest first, 24 per page, with each file’s public URL — usable directly in schedule_post’s media_urls…
delete_media Permanently delete a file from the media library and storage.
list_video_avatars List the stock presenter avatars available for AI video generation.
list_video_voices List the stock voices available for AI video generation.
create_video_script Write a short talking-presenter video script from a post’s text.
generate_video Start rendering an AI presenter video from a script, avatar and voice.
get_video_status Check an AI video job: processing, failed (with the error), or completed with the video’s URL in the media storage — ready for schedule_post’s media_urls…
list_personas List the user’s PersonaForge personas — writing styles learned from a real account — plus extraction jobs still running and recent failures…
get_persona Get one persona in full: its name, cover image, source account, and the style profile used when writing in it…
create_persona Start learning a writing persona from recent posts — either a connected account (instagram, twitter, youtube) or a public profile (youtube, medium, mastodon, bluesky).
get_persona_job_status Check a persona extraction job started by create_persona: its status, the new persona’s id once done, or the error…
rename_persona Rename a persona.
delete_persona Permanently delete a persona and its learned voice.
generate_persona_post Write a post about a topic in a persona’s voice (or the user’s own trained voice when no persona is given), with a voice-match score.
list_persona_replies List AI-drafted replies to inbound comments and messages, by status (default pending — the ones waiting for review)…
generate_persona_reply Draft a reply, in the user’s trained voice, to an inbound comment or message on one of their posts.
review_persona_reply Approve, edit or reject one pending AI-drafted reply.
get_voice_model Get the user’s own trained voice model — tone breakdown, signature phrases, emoji patterns, average post length, preferred hooks, hashtag style and how many posts it learned from.
train_voice_model Train (or retrain) the user’s own voice model from their last 50 published posts.
generate_bio_variants Generate two profile-bio variants for one platform in the user’s trained voice — A authority-focused, B curiosity-focused — and save them as a bio A/B test.
list_competitor_personas List the competitor accounts the user has analysed, newest first, with posting frequency, content pillars, gaps, average engagement and best posting time…
analyze_competitor Analyse a competitor’s public X (Twitter) or LinkedIn account — posting frequency, content pillars, gaps, engagement and best posting time — and save it (re-analysing the same handle updates it).
list_notifications List the user’s MisarPost notifications (publish results, account problems and the like), newest first, with the unread count…
mark_notification_read Mark one notification as read, e.g.
mark_all_notifications_read Mark every unread notification as read.
list_webhooks List the user’s outbound webhooks — the URLs MisarPost sends signed event payloads to — with their events and whether each is active.
create_webhook Register an outbound webhook: MisarPost will POST signed payloads for the chosen events to this URL from now on.
update_webhook Change an outbound webhook’s URL or events, or pause/resume it with active.
delete_webhook Permanently remove an outbound webhook; events stop being delivered to its URL.
list_workspaces List the workspaces the user belongs to.

Prompts

Reusable workflows your client exposes as slash-commands.

Prompt Description
plan_content_week Plan a week of posts grounded in past performance and what is already scheduled.
repurpose_a_post Turn one piece of content into channel-native variants and schedule the approved ones.
performance_review Report what performed, what did not, and the single most useful change.
draft_queue_triage Review waiting drafts and decide what to schedule, edit or drop.
cross_post Publish one message to several connected accounts, adapted per platform, after approval.
trend_response Find a trend worth responding to and draft credible posts about it.
reply_queue_review Review AI-drafted replies to comments and decide which to approve, edit or skip.
growth_opportunities Find what to post next from Growth Hub signals (Empire plan).

Resources

Read-only context an agent can attach without spending a tool call.

URI Description
misarpost://connections Active connected accounts with their IDs and platforms.
misarpost://queue The first page of queued posts — what is already scheduled — so new posts do not collide with it…
misarpost://drafts Drafts awaiting review, so work in progress is resumed rather than restarted…
misarpost://stats Queued, published and draft counts, the top performing post of the month, and the average engagement rate…
misarpost://tags The user’s post tags (id, name, colour), for tagging and filtering posts…
misarpost://templates Saved post templates — reusable text, target accounts and platform settings…

Agent skills

Bundled in skills/ — guidance an agent loads when a task matches.

Skill Use when
find-growth-opportunities Find what to post next from MisarPost Growth Hub signals — rising trends on the user’s connected platforms, underperforming platforms and formats, and each platform’s official playbook. Use when asked what to post next, what is trending for me, how to grow an account, or why a platform is underperforming.
plan-and-schedule-content Plan a content calendar for the user’s connected accounts and schedule it once approved. Use when asked to plan content, fill the calendar, map out a week or month of posts, or decide what to post when in MisarPost.
repurpose-across-channels Turn one article, URL, announcement or block of text into channel-native variants with ContentRipple and schedule the approved ones. Use when asked to repurpose, adapt, cross-promote or turn a blog post into social posts in MisarPost.
respond-to-trends Find trends the user’s account can credibly join and turn the chosen ones into drafts or scheduled posts in MisarPost. Use when asked what is trending, to jump on a trend, to post about something current, or for trending hashtags.
review-persona-replies Draft and review replies to comments and messages in the user’s own voice with MisarPost PersonaForge, approving only what the user signs off. Use when asked to reply to comments, handle the reply queue, answer DMs in their voice, or review AI-drafted replies.
review-post-performance Report what performed, what did not, and the single most useful change, from MisarPost’s own post and engagement data. Use when asked about post performance, engagement, reach, stats, what is working, or for a weekly or monthly report.
schedule-and-publish Schedule or immediately publish a post to one or more connected accounts in MisarPost, with explicit confirmation, the right platform settings, and an honest report of what went out. Use when asked to post, publish, schedule, cross-post, or cancel a scheduled post.
triage-draft-queue Work through MisarPost drafts awaiting review — decide what to schedule, edit or drop — and act only on what the user approves. Use when asked to review drafts, clear the draft queue, or approve or reject generated posts.

Safety

Destructive and irreversible actions are annotated (destructiveHint) so clients can prompt before running them. The skills instruct agents to confirm before anything that sends mail, publishes content, or is otherwise visible to other people.

Discovery (initialize, tools/list, prompts/list, resources/list) never requires credentials, so registries can index the server without one. Every action does.


MIT © Misar.AI

View this README on GitHub

Install

npx -y @misarpost/mcp@latest

Configuration

{ "mcpServers": { "misarpost": { "command": "npx", "args": ["-y", "@misarpost/mcp@latest"], "env": { "MISARPOST_API_KEY": "mpk_your_key_here" } } } }