{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_f9z3v24nsf8d","handle":"misarpost-mcp-server","url":"https://wellknown.network/agents/misarpost-mcp-server","links":{"self":"https://wellknown.network/agents/misarpost-mcp-server/record.json","html":"https://wellknown.network/agents/misarpost-mcp-server","markdown":"https://wellknown.network/agents/misarpost-mcp-server/record.md","api":"https://wellknown.network/api/v1/agents/misarpost-mcp-server","status":"https://wellknown.network/api/v1/agents/misarpost-mcp-server/status","claim":"https://wellknown.network/agents/misarpost-mcp-server/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/misarpost-mcp-server/claim.json","badge":"https://wellknown.network/agents/misarpost-mcp-server/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/misarpost-mcp-server/history","tools":"https://wellknown.network/api/v1/agents/misarpost-mcp-server/tools"},"ard":{"identifier":"urn:air:api.misar.io:server:misarpost-mcp-server","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"MisarPost MCP Server","summary":"Plan, generate, schedule and repurpose posts across every channel, and track what performs.","description":"Plan, generate, schedule and repurpose posts across every channel, and track what performs.","publisher":{"name":"Misar-AI","url":null},"homepage":"https://www.misarpost.com","repository":"https://github.com/Misar-AI/misarpost-mcp","version":"3.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://api.misar.io/post/mcp","type":"mcp_streamable_http","auth":null,"probeable":true},{"url":"npm:@misarpost/mcp","type":"package_npm","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-17T08:16:27.497802Z","publishedAt":"2026-10-17T08:16:27.497802Z","registryName":"io.github.Misar-AI/misarpost-mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.writing","name":"Writing & Editing","confidence":1,"provenance":"derived"},{"slug":"content.social","name":"Social Media","confidence":1,"provenance":"derived"},{"slug":"media.video-generation","name":"Video Generation","confidence":1,"provenance":"derived"},{"slug":"productivity.calendar","name":"Calendar & Scheduling","confidence":1,"provenance":"derived"},{"slug":"communication.chat","name":"Team Chat","confidence":1,"provenance":"derived"},{"slug":"communication.notifications","name":"Notifications","confidence":1,"provenance":"derived"},{"slug":"data.news","name":"News & Feeds","confidence":0.919,"provenance":"derived"},{"slug":"media.image-generation","name":"Image Generation","confidence":0.583,"provenance":"derived"}],"categories":["communication","content","data","media","productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 3h ago.","lastOkAt":"2026-10-24T06:26:46.695Z","lastProbedAt":"2026-10-24T06:26:46.695Z","statusComputedAt":"2026-10-24T06:29:44.914Z","reliability30d":{"probes":19,"successRate":1,"p50Ms":812,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":19,"ok":19,"authBoundaryOk":0,"serviceOk":19,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-24T06:26:46.695Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":869,"error":null,"detail":{"tools":[{"name":"list_connections","description":"List the user's active connected social accounts with their account ID, platform and display name. Call this before scheduling: schedule_post needs the connecte"},{"name":"list_publish_options","description":"Look up the destinations a connected account can publish into — Discord or Slack channels, Pinterest boards, Reddit post flairs, Hashnode or Medium publications"},{"name":"list_account_plugs","description":"Show the plugs (automatic follow-up actions — e.g. reposting or resharing a post once it passes a likes or reactions threshold, on X, Bluesky, Threads and Linke"},{"name":"configure_account_plug","description":"Turn a plug on or off for one connected account and set its configuration, replacing the plug's previous configuration. An activated plug later acts on that acc"},{"name":"list_posts","description":"List the user's scheduled and published posts, newest-scheduled first, 20 per page, with platform, status, scheduled/published time, post URL, tags and engageme"},{"name":"schedule_post","description":"Schedule a post to ONE connected account at a given time, or publish it immediately with scheduled_at=\"now\". This queues real content for a real audience — show"},{"name":"cancel_post","description":"Cancel a post that is still pending or queued, so it never publishes. Posts that are already publishing or published cannot be cancelled, and a cancelled post c"},{"name":"get_calendar","description":"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 tag"},{"name":"update_post","description":"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. Changing the time moves w"},{"name":"reply_to_post","description":"Post a public reply/comment on one of the user's ALREADY-PUBLISHED posts, on the platform it was published to. It goes live immediately and cannot be recalled f"},{"name":"revert_post","description":"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). This removes it from"},{"name":"revert_post_batch","description":"\"Delete everywhere\": delete every published post from one batch (one compose or repurpose action sent to several accounts) from all of its platforms. Each platf"},{"name":"share_post","description":"Create (or return the existing) public preview link for one of the user's posts. Anyone with the link can view the post without signing in, so get the user's ex"},{"name":"unshare_post","description":"Revoke a post's public preview link, so the old link stops working. Safe to call when no link exists."},{"name":"list_drafts","description":"List up to 50 draft post variants awaiting review (status draft or pending_review), newest first — including AI-generated drafts from generate_posts — with plat"},{"name":"review_drafts","description":"Approve or reject several drafts at once by ID. Approving does NOT schedule or publish anything — use schedule_post for that. Rejected drafts drop out of list_d"},{"name":"get_stats","description":"Get the account overview: connected accounts, posts queued, published this week and this month, drafts waiting, the last published post, the top performing post"},{"name":"get_analytics_trends","description":"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 "},{"name":"get_growth_overview","description":"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 forma"},{"name":"list_growth_opportunities","description":"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 "},{"name":"list_growth_playbooks","description":"Get per-platform growth playbooks for the user's connected platforms — cadence, format, timing and anti-spam guidance compiled from each platform's official cre"},{"name":"get_next_growth_opportunity","description":"Get the single best next content opportunity for the user's connected platforms and niches — a compact version of list_growth_opportunities. Returns `{ opportun"},{"name":"get_contentripple_usage","description":"Show how many ContentRipple repurposes the user has run this month, their monthly limit (null means unlimited), and their plan tier. Check before a large repurp"},{"name":"repurpose_content","description":"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 captio"},{"name":"update_content_variant","description":"Edit a saved ContentRipple variant's text (which marks it edited) and/or set its status. Use the variant id returned by repurpose_content. Publishes nothing."},{"name":"schedule_content_variant","description":"Schedule a saved ContentRipple variant (its text plus hashtags) to a connected account of the matching platform at a given time. Only these formats can be publi"},{"name":"fetch_content_feed","description":"Read an RSS or Atom feed and return its entries, so the user can pick one to repurpose with repurpose_content (source_type rss). Nothing is saved."},{"name":"parse_content_source","description":"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 wh"},{"name":"list_repurpose_history","description":"List past ContentRipple repurposes, newest first: each source (type, URL, title, core message) with its variants and, for variants that were scheduled, the post"},{"name":"delete_repurpose_source","description":"Delete one repurposed source and its variants from ContentRipple history. Posts already scheduled or published from it are not touched. This cannot be undone — "},{"name":"generate_posts","description":"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). Nothing is scheduled o"},{"name":"enhance_topic","description":"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. Saves no"},{"name":"generate_plan","description":"For a topic or brief, suggest hook options, the best posting time slots, and trending hashtags per platform. Saves nothing and schedules nothing; counts against"},{"name":"research_hashtags","description":"Build a tiered hashtag strategy for a keyword across platforms — broad, mid and niche tags plus each platform's algorithm signals. Saves nothing; counts against"},{"name":"get_optimization_insights","description":"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. Changes"},{"name":"generate_image","description":"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), a"},{"name":"get_trends","description":"Get the latest trending hashtags and content hooks for the user's TrendPulse niches, each with a snapshot id. Returns cached results under two hours old, or ref"},{"name":"queue_trend_drafts","description":"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)"},{"name":"schedule_trend_posts","description":"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 t"},{"name":"refresh_trends","description":"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. Ne"},{"name":"send_trend_digest","description":"Email the user their trend digest (top recent trends for their niches) now. It always goes to the account owner's own address — never anyone else. Returns `skip"},{"name":"get_trend_hooks","description":"Get the content hooks (opening lines and angles) for one trend snapshot — snapshot ids come from get_trends."},{"name":"get_trend_platform_content","description":"Get the per-platform content already generated for one trend snapshot — hashtags, plus title/description for YouTube and title/subtitle for Medium. Empty until "},{"name":"generate_trend_platform_content","description":"Generate per-platform content (hashtags, and titles where a platform needs them) for one trend snapshot, for the platforms asked (default: all seven). Regenerat"},{"name":"use_trend_platform_content","description":"Turn one platform's generated trend content into a draft post (generating it first if needed). The draft lands in the review queue (list_drafts) — nothing is pu"},{"name":"get_trend_performance","description":"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, comm"},{"name":"list_post_templates","description":"List the user's saved post templates, most recently updated first — reusable composer states with text, per-platform overrides, target accounts, platform settin"},{"name":"get_post_template","description":"Get one saved post template in full, by id — to reuse its text, accounts and settings in schedule_post."},{"name":"create_post_template","description":"Save a reusable post template: default text, optional per-platform text, target accounts, platform settings, media and first comment. Saving publishes nothing."},{"name":"update_post_template","description":"Change a saved post template. Only the fields passed are changed, and each one passed replaces the stored value entirely (e.g. account_ids replaces the whole li"},{"name":"delete_post_template","description":"Permanently delete a saved post template. Posts already scheduled from it are not affected. Confirm with the user first."},{"name":"list_post_tags","description":"List the user's post tags (id, name, colour). Tag ids filter list_posts and get_calendar and are applied with schedule_post or update_post."},{"name":"create_post_tag","description":"Create a post tag with a name and colour, for grouping posts by campaign or theme. Names must be unique per user."},{"name":"update_post_tag","description":"Rename and/or recolour a post tag. Posts keep the tag."},{"name":"delete_post_tag","description":"Permanently delete a post tag and remove it from every post that carries it. The posts themselves are not affected. Confirm with the user first."},{"name":"list_media","description":"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."},{"name":"delete_media","description":"Permanently delete a file from the media library and storage. Posts that already include its URL keep their own copy of the URL, but the file behind it is gone."},{"name":"list_video_avatars","description":"List the stock presenter avatars available for AI video generation. Pass an avatar's id to generate_video."},{"name":"list_video_voices","description":"List the stock voices available for AI video generation. Pass a voice's id to generate_video."},{"name":"create_video_script","description":"Write a short talking-presenter video script from a post's text. Saves nothing; counts against the monthly AI allowance. Show the script to the user before gene"},{"name":"generate_video","description":"Start rendering an AI presenter video from a script, avatar and voice. Returns a job id immediately; poll get_video_status until it completes. Rendering is mete"},{"name":"get_video_status","description":"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."},{"name":"list_personas","description":"List the user's PersonaForge personas — writing styles learned from a real account — plus extraction jobs still running and recent failures."},{"name":"get_persona","description":"Get one persona in full: its name, cover image, source account, and the style profile used when writing in it."},{"name":"create_persona","description":"Start learning a writing persona from recent posts — either a connected account (instagram, twitter, youtube) or a public profile (youtube, medium, mastodon, bl"},{"name":"get_persona_job_status","description":"Check a persona extraction job started by create_persona: its status, the new persona's id once done, or the error."},{"name":"rename_persona","description":"Rename a persona. Its learned voice is unchanged."},{"name":"delete_persona","description":"Permanently delete a persona and its learned voice. Recreating it means re-running create_persona. Confirm with the user first."},{"name":"generate_persona_post","description":"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. The post is saved for revi"},{"name":"list_persona_replies","description":"List AI-drafted replies to inbound comments and messages, by status (default pending — the ones waiting for review)."},{"name":"generate_persona_reply","description":"Draft a reply, in the user's trained voice, to an inbound comment or message on one of their posts. The draft is saved as pending for review (list_persona_repli"},{"name":"review_persona_reply","description":"Approve, edit or reject one pending AI-drafted reply. Approving or editing adds the final text to the draft queue (list_drafts) — it is not posted. Reject marks"},{"name":"get_voice_model","description":"Get the user's own trained voice model — tone breakdown, signature phrases, emoji patterns, average post length, preferred hooks, hashtag style and how many pos"},{"name":"train_voice_model","description":"Train (or retrain) the user's own voice model from their last 50 published posts. Replaces the existing voice model. Uses one AI text action from the plan's quo"},{"name":"generate_bio_variants","description":"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. Opt"},{"name":"list_competitor_personas","description":"List the competitor accounts the user has analysed, newest first, with posting frequency, content pillars, gaps, average engagement and best posting time."},{"name":"analyze_competitor","description":"Analyse a competitor's public X (Twitter) or LinkedIn account — posting frequency, content pillars, gaps, engagement and best posting time — and save it (re-ana"},{"name":"list_notifications","description":"List the user's MisarPost notifications (publish results, account problems and the like), newest first, with the unread count."},{"name":"mark_notification_read","description":"Mark one notification as read, e.g. after relaying it to the user. It drops out of the unread count."},{"name":"mark_all_notifications_read","description":"Mark every unread notification as read. There is no way to mark them unread again."},{"name":"list_webhooks","description":"List the user's outbound webhooks — the URLs MisarPost sends signed event payloads to — with their events and whether each is active. Signing secrets are never "},{"name":"create_webhook","description":"Register an outbound webhook: MisarPost will POST signed payloads for the chosen events to this URL from now on. The response carries the signing secret exactly"},{"name":"update_webhook","description":"Change an outbound webhook's URL or events, or pause/resume it with active. Only the fields passed change."},{"name":"delete_webhook","description":"Permanently remove an outbound webhook; events stop being delivered to its URL. Confirm with the user first."},{"name":"list_workspaces","description":"List the workspaces the user belongs to. When workspace scoping is on, posts, accounts and stats are limited to the active workspace."}],"toolCount":85,"toolsHash":"50d6bb9a4570ca9a05e27571540754585e9801ed36e31a63a248095ba8fab7ef","serverName":"misarpost","capabilities":["tools","prompts","resources"],"serverVersion":"3.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T23:26:21.462Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":873,"error":null,"detail":{"tools":[{"name":"list_connections","description":"List the user's active connected social accounts with their account ID, platform and display name. Call this before scheduling: schedule_post needs the connecte"},{"name":"list_publish_options","description":"Look up the destinations a connected account can publish into — Discord or Slack channels, Pinterest boards, Reddit post flairs, Hashnode or Medium publications"},{"name":"list_account_plugs","description":"Show the plugs (automatic follow-up actions — e.g. reposting or resharing a post once it passes a likes or reactions threshold, on X, Bluesky, Threads and Linke"},{"name":"configure_account_plug","description":"Turn a plug on or off for one connected account and set its configuration, replacing the plug's previous configuration. An activated plug later acts on that acc"},{"name":"list_posts","description":"List the user's scheduled and published posts, newest-scheduled first, 20 per page, with platform, status, scheduled/published time, post URL, tags and engageme"},{"name":"schedule_post","description":"Schedule a post to ONE connected account at a given time, or publish it immediately with scheduled_at=\"now\". This queues real content for a real audience — show"},{"name":"cancel_post","description":"Cancel a post that is still pending or queued, so it never publishes. Posts that are already publishing or published cannot be cancelled, and a cancelled post c"},{"name":"get_calendar","description":"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 tag"},{"name":"update_post","description":"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. Changing the time moves w"},{"name":"reply_to_post","description":"Post a public reply/comment on one of the user's ALREADY-PUBLISHED posts, on the platform it was published to. It goes live immediately and cannot be recalled f"},{"name":"revert_post","description":"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). This removes it from"},{"name":"revert_post_batch","description":"\"Delete everywhere\": delete every published post from one batch (one compose or repurpose action sent to several accounts) from all of its platforms. Each platf"},{"name":"share_post","description":"Create (or return the existing) public preview link for one of the user's posts. Anyone with the link can view the post without signing in, so get the user's ex"},{"name":"unshare_post","description":"Revoke a post's public preview link, so the old link stops working. Safe to call when no link exists."},{"name":"list_drafts","description":"List up to 50 draft post variants awaiting review (status draft or pending_review), newest first — including AI-generated drafts from generate_posts — with plat"},{"name":"review_drafts","description":"Approve or reject several drafts at once by ID. Approving does NOT schedule or publish anything — use schedule_post for that. Rejected drafts drop out of list_d"},{"name":"get_stats","description":"Get the account overview: connected accounts, posts queued, published this week and this month, drafts waiting, the last published post, the top performing post"},{"name":"get_analytics_trends","description":"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 "},{"name":"get_growth_overview","description":"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 forma"},{"name":"list_growth_opportunities","description":"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 "},{"name":"list_growth_playbooks","description":"Get per-platform growth playbooks for the user's connected platforms — cadence, format, timing and anti-spam guidance compiled from each platform's official cre"},{"name":"get_next_growth_opportunity","description":"Get the single best next content opportunity for the user's connected platforms and niches — a compact version of list_growth_opportunities. Returns `{ opportun"},{"name":"get_contentripple_usage","description":"Show how many ContentRipple repurposes the user has run this month, their monthly limit (null means unlimited), and their plan tier. Check before a large repurp"},{"name":"repurpose_content","description":"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 captio"},{"name":"update_content_variant","description":"Edit a saved ContentRipple variant's text (which marks it edited) and/or set its status. Use the variant id returned by repurpose_content. Publishes nothing."},{"name":"schedule_content_variant","description":"Schedule a saved ContentRipple variant (its text plus hashtags) to a connected account of the matching platform at a given time. Only these formats can be publi"},{"name":"fetch_content_feed","description":"Read an RSS or Atom feed and return its entries, so the user can pick one to repurpose with repurpose_content (source_type rss). Nothing is saved."},{"name":"parse_content_source","description":"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 wh"},{"name":"list_repurpose_history","description":"List past ContentRipple repurposes, newest first: each source (type, URL, title, core message) with its variants and, for variants that were scheduled, the post"},{"name":"delete_repurpose_source","description":"Delete one repurposed source and its variants from ContentRipple history. Posts already scheduled or published from it are not touched. This cannot be undone — "},{"name":"generate_posts","description":"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). Nothing is scheduled o"},{"name":"enhance_topic","description":"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. Saves no"},{"name":"generate_plan","description":"For a topic or brief, suggest hook options, the best posting time slots, and trending hashtags per platform. Saves nothing and schedules nothing; counts against"},{"name":"research_hashtags","description":"Build a tiered hashtag strategy for a keyword across platforms — broad, mid and niche tags plus each platform's algorithm signals. Saves nothing; counts against"},{"name":"get_optimization_insights","description":"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. Changes"},{"name":"generate_image","description":"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), a"},{"name":"get_trends","description":"Get the latest trending hashtags and content hooks for the user's TrendPulse niches, each with a snapshot id. Returns cached results under two hours old, or ref"},{"name":"queue_trend_drafts","description":"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)"},{"name":"schedule_trend_posts","description":"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 t"},{"name":"refresh_trends","description":"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. Ne"},{"name":"send_trend_digest","description":"Email the user their trend digest (top recent trends for their niches) now. It always goes to the account owner's own address — never anyone else. Returns `skip"},{"name":"get_trend_hooks","description":"Get the content hooks (opening lines and angles) for one trend snapshot — snapshot ids come from get_trends."},{"name":"get_trend_platform_content","description":"Get the per-platform content already generated for one trend snapshot — hashtags, plus title/description for YouTube and title/subtitle for Medium. Empty until "},{"name":"generate_trend_platform_content","description":"Generate per-platform content (hashtags, and titles where a platform needs them) for one trend snapshot, for the platforms asked (default: all seven). Regenerat"},{"name":"use_trend_platform_content","description":"Turn one platform's generated trend content into a draft post (generating it first if needed). The draft lands in the review queue (list_drafts) — nothing is pu"},{"name":"get_trend_performance","description":"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, comm"},{"name":"list_post_templates","description":"List the user's saved post templates, most recently updated first — reusable composer states with text, per-platform overrides, target accounts, platform settin"},{"name":"get_post_template","description":"Get one saved post template in full, by id — to reuse its text, accounts and settings in schedule_post."},{"name":"create_post_template","description":"Save a reusable post template: default text, optional per-platform text, target accounts, platform settings, media and first comment. Saving publishes nothing."},{"name":"update_post_template","description":"Change a saved post template. Only the fields passed are changed, and each one passed replaces the stored value entirely (e.g. account_ids replaces the whole li"},{"name":"delete_post_template","description":"Permanently delete a saved post template. Posts already scheduled from it are not affected. Confirm with the user first."},{"name":"list_post_tags","description":"List the user's post tags (id, name, colour). Tag ids filter list_posts and get_calendar and are applied with schedule_post or update_post."},{"name":"create_post_tag","description":"Create a post tag with a name and colour, for grouping posts by campaign or theme. Names must be unique per user."},{"name":"update_post_tag","description":"Rename and/or recolour a post tag. Posts keep the tag."},{"name":"delete_post_tag","description":"Permanently delete a post tag and remove it from every post that carries it. The posts themselves are not affected. Confirm with the user first."},{"name":"list_media","description":"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."},{"name":"delete_media","description":"Permanently delete a file from the media library and storage. Posts that already include its URL keep their own copy of the URL, but the file behind it is gone."},{"name":"list_video_avatars","description":"List the stock presenter avatars available for AI video generation. Pass an avatar's id to generate_video."},{"name":"list_video_voices","description":"List the stock voices available for AI video generation. Pass a voice's id to generate_video."},{"name":"create_video_script","description":"Write a short talking-presenter video script from a post's text. Saves nothing; counts against the monthly AI allowance. Show the script to the user before gene"},{"name":"generate_video","description":"Start rendering an AI presenter video from a script, avatar and voice. Returns a job id immediately; poll get_video_status until it completes. Rendering is mete"},{"name":"get_video_status","description":"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."},{"name":"list_personas","description":"List the user's PersonaForge personas — writing styles learned from a real account — plus extraction jobs still running and recent failures."},{"name":"get_persona","description":"Get one persona in full: its name, cover image, source account, and the style profile used when writing in it."},{"name":"create_persona","description":"Start learning a writing persona from recent posts — either a connected account (instagram, twitter, youtube) or a public profile (youtube, medium, mastodon, bl"},{"name":"get_persona_job_status","description":"Check a persona extraction job started by create_persona: its status, the new persona's id once done, or the error."},{"name":"rename_persona","description":"Rename a persona. Its learned voice is unchanged."},{"name":"delete_persona","description":"Permanently delete a persona and its learned voice. Recreating it means re-running create_persona. Confirm with the user first."},{"name":"generate_persona_post","description":"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. The post is saved for revi"},{"name":"list_persona_replies","description":"List AI-drafted replies to inbound comments and messages, by status (default pending — the ones waiting for review)."},{"name":"generate_persona_reply","description":"Draft a reply, in the user's trained voice, to an inbound comment or message on one of their posts. The draft is saved as pending for review (list_persona_repli"},{"name":"review_persona_reply","description":"Approve, edit or reject one pending AI-drafted reply. Approving or editing adds the final text to the draft queue (list_drafts) — it is not posted. Reject marks"},{"name":"get_voice_model","description":"Get the user's own trained voice model — tone breakdown, signature phrases, emoji patterns, average post length, preferred hooks, hashtag style and how many pos"},{"name":"train_voice_model","description":"Train (or retrain) the user's own voice model from their last 50 published posts. Replaces the existing voice model. Uses one AI text action from the plan's quo"},{"name":"generate_bio_variants","description":"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. Opt"},{"name":"list_competitor_personas","description":"List the competitor accounts the user has analysed, newest first, with posting frequency, content pillars, gaps, average engagement and best posting time."},{"name":"analyze_competitor","description":"Analyse a competitor's public X (Twitter) or LinkedIn account — posting frequency, content pillars, gaps, engagement and best posting time — and save it (re-ana"},{"name":"list_notifications","description":"List the user's MisarPost notifications (publish results, account problems and the like), newest first, with the unread count."},{"name":"mark_notification_read","description":"Mark one notification as read, e.g. after relaying it to the user. It drops out of the unread count."},{"name":"mark_all_notifications_read","description":"Mark every unread notification as read. There is no way to mark them unread again."},{"name":"list_webhooks","description":"List the user's outbound webhooks — the URLs MisarPost sends signed event payloads to — with their events and whether each is active. Signing secrets are never "},{"name":"create_webhook","description":"Register an outbound webhook: MisarPost will POST signed payloads for the chosen events to this URL from now on. The response carries the signing secret exactly"},{"name":"update_webhook","description":"Change an outbound webhook's URL or events, or pause/resume it with active. Only the fields passed change."},{"name":"delete_webhook","description":"Permanently remove an outbound webhook; events stop being delivered to its URL. Confirm with the user first."},{"name":"list_workspaces","description":"List the workspaces the user belongs to. When workspace scoping is on, posts, accounts and stats are limited to the active workspace."}],"toolCount":85,"toolsHash":"50d6bb9a4570ca9a05e27571540754585e9801ed36e31a63a248095ba8fab7ef","serverName":"misarpost","capabilities":["tools","prompts","resources"],"serverVersion":"3.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T16:30:03.038Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":929,"error":null,"detail":{"tools":[{"name":"list_connections","description":"List the user's active connected social accounts with their account ID, platform and display name. Call this before scheduling: schedule_post needs the connecte"},{"name":"list_publish_options","description":"Look up the destinations a connected account can publish into — Discord or Slack channels, Pinterest boards, Reddit post flairs, Hashnode or Medium publications"},{"name":"list_account_plugs","description":"Show the plugs (automatic follow-up actions — e.g. reposting or resharing a post once it passes a likes or reactions threshold, on X, Bluesky, Threads and Linke"},{"name":"configure_account_plug","description":"Turn a plug on or off for one connected account and set its configuration, replacing the plug's previous configuration. An activated plug later acts on that acc"},{"name":"list_posts","description":"List the user's scheduled and published posts, newest-scheduled first, 20 per page, with platform, status, scheduled/published time, post URL, tags and engageme"},{"name":"schedule_post","description":"Schedule a post to ONE connected account at a given time, or publish it immediately with scheduled_at=\"now\". This queues real content for a real audience — show"},{"name":"cancel_post","description":"Cancel a post that is still pending or queued, so it never publishes. Posts that are already publishing or published cannot be cancelled, and a cancelled post c"},{"name":"get_calendar","description":"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 tag"},{"name":"update_post","description":"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. Changing the time moves w"},{"name":"reply_to_post","description":"Post a public reply/comment on one of the user's ALREADY-PUBLISHED posts, on the platform it was published to. It goes live immediately and cannot be recalled f"},{"name":"revert_post","description":"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). This removes it from"},{"name":"revert_post_batch","description":"\"Delete everywhere\": delete every published post from one batch (one compose or repurpose action sent to several accounts) from all of its platforms. Each platf"},{"name":"share_post","description":"Create (or return the existing) public preview link for one of the user's posts. Anyone with the link can view the post without signing in, so get the user's ex"},{"name":"unshare_post","description":"Revoke a post's public preview link, so the old link stops working. Safe to call when no link exists."},{"name":"list_drafts","description":"List up to 50 draft post variants awaiting review (status draft or pending_review), newest first — including AI-generated drafts from generate_posts — with plat"},{"name":"review_drafts","description":"Approve or reject several drafts at once by ID. Approving does NOT schedule or publish anything — use schedule_post for that. Rejected drafts drop out of list_d"},{"name":"get_stats","description":"Get the account overview: connected accounts, posts queued, published this week and this month, drafts waiting, the last published post, the top performing post"},{"name":"get_analytics_trends","description":"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 "},{"name":"get_growth_overview","description":"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 forma"},{"name":"list_growth_opportunities","description":"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 "},{"name":"list_growth_playbooks","description":"Get per-platform growth playbooks for the user's connected platforms — cadence, format, timing and anti-spam guidance compiled from each platform's official cre"},{"name":"get_next_growth_opportunity","description":"Get the single best next content opportunity for the user's connected platforms and niches — a compact version of list_growth_opportunities. Returns `{ opportun"},{"name":"get_contentripple_usage","description":"Show how many ContentRipple repurposes the user has run this month, their monthly limit (null means unlimited), and their plan tier. Check before a large repurp"},{"name":"repurpose_content","description":"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 captio"},{"name":"update_content_variant","description":"Edit a saved ContentRipple variant's text (which marks it edited) and/or set its status. Use the variant id returned by repurpose_content. Publishes nothing."},{"name":"schedule_content_variant","description":"Schedule a saved ContentRipple variant (its text plus hashtags) to a connected account of the matching platform at a given time. Only these formats can be publi"},{"name":"fetch_content_feed","description":"Read an RSS or Atom feed and return its entries, so the user can pick one to repurpose with repurpose_content (source_type rss). Nothing is saved."},{"name":"parse_content_source","description":"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 wh"},{"name":"list_repurpose_history","description":"List past ContentRipple repurposes, newest first: each source (type, URL, title, core message) with its variants and, for variants that were scheduled, the post"},{"name":"delete_repurpose_source","description":"Delete one repurposed source and its variants from ContentRipple history. Posts already scheduled or published from it are not touched. This cannot be undone — "},{"name":"generate_posts","description":"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). Nothing is scheduled o"},{"name":"enhance_topic","description":"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. Saves no"},{"name":"generate_plan","description":"For a topic or brief, suggest hook options, the best posting time slots, and trending hashtags per platform. Saves nothing and schedules nothing; counts against"},{"name":"research_hashtags","description":"Build a tiered hashtag strategy for a keyword across platforms — broad, mid and niche tags plus each platform's algorithm signals. Saves nothing; counts against"},{"name":"get_optimization_insights","description":"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. Changes"},{"name":"generate_image","description":"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), a"},{"name":"get_trends","description":"Get the latest trending hashtags and content hooks for the user's TrendPulse niches, each with a snapshot id. Returns cached results under two hours old, or ref"},{"name":"queue_trend_drafts","description":"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)"},{"name":"schedule_trend_posts","description":"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 t"},{"name":"refresh_trends","description":"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. Ne"},{"name":"send_trend_digest","description":"Email the user their trend digest (top recent trends for their niches) now. It always goes to the account owner's own address — never anyone else. Returns `skip"},{"name":"get_trend_hooks","description":"Get the content hooks (opening lines and angles) for one trend snapshot — snapshot ids come from get_trends."},{"name":"get_trend_platform_content","description":"Get the per-platform content already generated for one trend snapshot — hashtags, plus title/description for YouTube and title/subtitle for Medium. Empty until "},{"name":"generate_trend_platform_content","description":"Generate per-platform content (hashtags, and titles where a platform needs them) for one trend snapshot, for the platforms asked (default: all seven). Regenerat"},{"name":"use_trend_platform_content","description":"Turn one platform's generated trend content into a draft post (generating it first if needed). The draft lands in the review queue (list_drafts) — nothing is pu"},{"name":"get_trend_performance","description":"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, comm"},{"name":"list_post_templates","description":"List the user's saved post templates, most recently updated first — reusable composer states with text, per-platform overrides, target accounts, platform settin"},{"name":"get_post_template","description":"Get one saved post template in full, by id — to reuse its text, accounts and settings in schedule_post."},{"name":"create_post_template","description":"Save a reusable post template: default text, optional per-platform text, target accounts, platform settings, media and first comment. Saving publishes nothing."},{"name":"update_post_template","description":"Change a saved post template. Only the fields passed are changed, and each one passed replaces the stored value entirely (e.g. account_ids replaces the whole li"},{"name":"delete_post_template","description":"Permanently delete a saved post template. Posts already scheduled from it are not affected. Confirm with the user first."},{"name":"list_post_tags","description":"List the user's post tags (id, name, colour). Tag ids filter list_posts and get_calendar and are applied with schedule_post or update_post."},{"name":"create_post_tag","description":"Create a post tag with a name and colour, for grouping posts by campaign or theme. Names must be unique per user."},{"name":"update_post_tag","description":"Rename and/or recolour a post tag. Posts keep the tag."},{"name":"delete_post_tag","description":"Permanently delete a post tag and remove it from every post that carries it. The posts themselves are not affected. Confirm with the user first."},{"name":"list_media","description":"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."},{"name":"delete_media","description":"Permanently delete a file from the media library and storage. Posts that already include its URL keep their own copy of the URL, but the file behind it is gone."},{"name":"list_video_avatars","description":"List the stock presenter avatars available for AI video generation. Pass an avatar's id to generate_video."},{"name":"list_video_voices","description":"List the stock voices available for AI video generation. Pass a voice's id to generate_video."},{"name":"create_video_script","description":"Write a short talking-presenter video script from a post's text. Saves nothing; counts against the monthly AI allowance. Show the script to the user before gene"},{"name":"generate_video","description":"Start rendering an AI presenter video from a script, avatar and voice. Returns a job id immediately; poll get_video_status until it completes. Rendering is mete"},{"name":"get_video_status","description":"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."},{"name":"list_personas","description":"List the user's PersonaForge personas — writing styles learned from a real account — plus extraction jobs still running and recent failures."},{"name":"get_persona","description":"Get one persona in full: its name, cover image, source account, and the style profile used when writing in it."},{"name":"create_persona","description":"Start learning a writing persona from recent posts — either a connected account (instagram, twitter, youtube) or a public profile (youtube, medium, mastodon, bl"},{"name":"get_persona_job_status","description":"Check a persona extraction job started by create_persona: its status, the new persona's id once done, or the error."},{"name":"rename_persona","description":"Rename a persona. Its learned voice is unchanged."},{"name":"delete_persona","description":"Permanently delete a persona and its learned voice. Recreating it means re-running create_persona. Confirm with the user first."},{"name":"generate_persona_post","description":"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. The post is saved for revi"},{"name":"list_persona_replies","description":"List AI-drafted replies to inbound comments and messages, by status (default pending — the ones waiting for review)."},{"name":"generate_persona_reply","description":"Draft a reply, in the user's trained voice, to an inbound comment or message on one of their posts. The draft is saved as pending for review (list_persona_repli"},{"name":"review_persona_reply","description":"Approve, edit or reject one pending AI-drafted reply. Approving or editing adds the final text to the draft queue (list_drafts) — it is not posted. Reject marks"},{"name":"get_voice_model","description":"Get the user's own trained voice model — tone breakdown, signature phrases, emoji patterns, average post length, preferred hooks, hashtag style and how many pos"},{"name":"train_voice_model","description":"Train (or retrain) the user's own voice model from their last 50 published posts. Replaces the existing voice model. Uses one AI text action from the plan's quo"},{"name":"generate_bio_variants","description":"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. Opt"},{"name":"list_competitor_personas","description":"List the competitor accounts the user has analysed, newest first, with posting frequency, content pillars, gaps, average engagement and best posting time."},{"name":"analyze_competitor","description":"Analyse a competitor's public X (Twitter) or LinkedIn account — posting frequency, content pillars, gaps, engagement and best posting time — and save it (re-ana"},{"name":"list_notifications","description":"List the user's MisarPost notifications (publish results, account problems and the like), newest first, with the unread count."},{"name":"mark_notification_read","description":"Mark one notification as read, e.g. after relaying it to the user. It drops out of the unread count."},{"name":"mark_all_notifications_read","description":"Mark every unread notification as read. There is no way to mark them unread again."},{"name":"list_webhooks","description":"List the user's outbound webhooks — the URLs MisarPost sends signed event payloads to — with their events and whether each is active. Signing secrets are never "},{"name":"create_webhook","description":"Register an outbound webhook: MisarPost will POST signed payloads for the chosen events to this URL from now on. The response carries the signing secret exactly"},{"name":"update_webhook","description":"Change an outbound webhook's URL or events, or pause/resume it with active. Only the fields passed change."},{"name":"delete_webhook","description":"Permanently remove an outbound webhook; events stop being delivered to its URL. Confirm with the user first."},{"name":"list_workspaces","description":"List the workspaces the user belongs to. When workspace scoping is on, posts, accounts and stats are limited to the active workspace."}],"toolCount":85,"toolsHash":"50d6bb9a4570ca9a05e27571540754585e9801ed36e31a63a248095ba8fab7ef","serverName":"misarpost","capabilities":["tools","prompts","resources"],"serverVersion":"3.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T10:34:26.186Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":913,"error":null,"detail":{"tools":[{"name":"list_connections","description":"List the user's active connected social accounts with their account ID, platform and display name. Call this before scheduling: schedule_post needs the connecte"},{"name":"list_publish_options","description":"Look up the destinations a connected account can publish into — Discord or Slack channels, Pinterest boards, Reddit post flairs, Hashnode or Medium publications"},{"name":"list_account_plugs","description":"Show the plugs (automatic follow-up actions — e.g. reposting or resharing a post once it passes a likes or reactions threshold, on X, Bluesky, Threads and Linke"},{"name":"configure_account_plug","description":"Turn a plug on or off for one connected account and set its configuration, replacing the plug's previous configuration. An activated plug later acts on that acc"},{"name":"list_posts","description":"List the user's scheduled and published posts, newest-scheduled first, 20 per page, with platform, status, scheduled/published time, post URL, tags and engageme"},{"name":"schedule_post","description":"Schedule a post to ONE connected account at a given time, or publish it immediately with scheduled_at=\"now\". This queues real content for a real audience — show"},{"name":"cancel_post","description":"Cancel a post that is still pending or queued, so it never publishes. Posts that are already publishing or published cannot be cancelled, and a cancelled post c"},{"name":"get_calendar","description":"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 tag"},{"name":"update_post","description":"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. Changing the time moves w"},{"name":"reply_to_post","description":"Post a public reply/comment on one of the user's ALREADY-PUBLISHED posts, on the platform it was published to. It goes live immediately and cannot be recalled f"},{"name":"revert_post","description":"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). This removes it from"},{"name":"revert_post_batch","description":"\"Delete everywhere\": delete every published post from one batch (one compose or repurpose action sent to several accounts) from all of its platforms. Each platf"},{"name":"share_post","description":"Create (or return the existing) public preview link for one of the user's posts. Anyone with the link can view the post without signing in, so get the user's ex"},{"name":"unshare_post","description":"Revoke a post's public preview link, so the old link stops working. Safe to call when no link exists."},{"name":"list_drafts","description":"List up to 50 draft post variants awaiting review (status draft or pending_review), newest first — including AI-generated drafts from generate_posts — with plat"},{"name":"review_drafts","description":"Approve or reject several drafts at once by ID. Approving does NOT schedule or publish anything — use schedule_post for that. Rejected drafts drop out of list_d"},{"name":"get_stats","description":"Get the account overview: connected accounts, posts queued, published this week and this month, drafts waiting, the last published post, the top performing post"},{"name":"get_analytics_trends","description":"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 "},{"name":"get_growth_overview","description":"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 forma"},{"name":"list_growth_opportunities","description":"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 "},{"name":"list_growth_playbooks","description":"Get per-platform growth playbooks for the user's connected platforms — cadence, format, timing and anti-spam guidance compiled from each platform's official cre"},{"name":"get_next_growth_opportunity","description":"Get the single best next content opportunity for the user's connected platforms and niches — a compact version of list_growth_opportunities. Returns `{ opportun"},{"name":"get_contentripple_usage","description":"Show how many ContentRipple repurposes the user has run this month, their monthly limit (null means unlimited), and their plan tier. Check before a large repurp"},{"name":"repurpose_content","description":"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 captio"},{"name":"update_content_variant","description":"Edit a saved ContentRipple variant's text (which marks it edited) and/or set its status. Use the variant id returned by repurpose_content. Publishes nothing."},{"name":"schedule_content_variant","description":"Schedule a saved ContentRipple variant (its text plus hashtags) to a connected account of the matching platform at a given time. Only these formats can be publi"},{"name":"fetch_content_feed","description":"Read an RSS or Atom feed and return its entries, so the user can pick one to repurpose with repurpose_content (source_type rss). Nothing is saved."},{"name":"parse_content_source","description":"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 wh"},{"name":"list_repurpose_history","description":"List past ContentRipple repurposes, newest first: each source (type, URL, title, core message) with its variants and, for variants that were scheduled, the post"},{"name":"delete_repurpose_source","description":"Delete one repurposed source and its variants from ContentRipple history. Posts already scheduled or published from it are not touched. This cannot be undone — "},{"name":"generate_posts","description":"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). Nothing is scheduled o"},{"name":"enhance_topic","description":"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. Saves no"},{"name":"generate_plan","description":"For a topic or brief, suggest hook options, the best posting time slots, and trending hashtags per platform. Saves nothing and schedules nothing; counts against"},{"name":"research_hashtags","description":"Build a tiered hashtag strategy for a keyword across platforms — broad, mid and niche tags plus each platform's algorithm signals. Saves nothing; counts against"},{"name":"get_optimization_insights","description":"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. Changes"},{"name":"generate_image","description":"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), a"},{"name":"get_trends","description":"Get the latest trending hashtags and content hooks for the user's TrendPulse niches, each with a snapshot id. Returns cached results under two hours old, or ref"},{"name":"queue_trend_drafts","description":"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)"},{"name":"schedule_trend_posts","description":"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 t"},{"name":"refresh_trends","description":"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. Ne"},{"name":"send_trend_digest","description":"Email the user their trend digest (top recent trends for their niches) now. It always goes to the account owner's own address — never anyone else. Returns `skip"},{"name":"get_trend_hooks","description":"Get the content hooks (opening lines and angles) for one trend snapshot — snapshot ids come from get_trends."},{"name":"get_trend_platform_content","description":"Get the per-platform content already generated for one trend snapshot — hashtags, plus title/description for YouTube and title/subtitle for Medium. Empty until "},{"name":"generate_trend_platform_content","description":"Generate per-platform content (hashtags, and titles where a platform needs them) for one trend snapshot, for the platforms asked (default: all seven). Regenerat"},{"name":"use_trend_platform_content","description":"Turn one platform's generated trend content into a draft post (generating it first if needed). The draft lands in the review queue (list_drafts) — nothing is pu"},{"name":"get_trend_performance","description":"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, comm"},{"name":"list_post_templates","description":"List the user's saved post templates, most recently updated first — reusable composer states with text, per-platform overrides, target accounts, platform settin"},{"name":"get_post_template","description":"Get one saved post template in full, by id — to reuse its text, accounts and settings in schedule_post."},{"name":"create_post_template","description":"Save a reusable post template: default text, optional per-platform text, target accounts, platform settings, media and first comment. Saving publishes nothing."},{"name":"update_post_template","description":"Change a saved post template. Only the fields passed are changed, and each one passed replaces the stored value entirely (e.g. account_ids replaces the whole li"},{"name":"delete_post_template","description":"Permanently delete a saved post template. Posts already scheduled from it are not affected. Confirm with the user first."},{"name":"list_post_tags","description":"List the user's post tags (id, name, colour). Tag ids filter list_posts and get_calendar and are applied with schedule_post or update_post."},{"name":"create_post_tag","description":"Create a post tag with a name and colour, for grouping posts by campaign or theme. Names must be unique per user."},{"name":"update_post_tag","description":"Rename and/or recolour a post tag. Posts keep the tag."},{"name":"delete_post_tag","description":"Permanently delete a post tag and remove it from every post that carries it. The posts themselves are not affected. Confirm with the user first."},{"name":"list_media","description":"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."},{"name":"delete_media","description":"Permanently delete a file from the media library and storage. Posts that already include its URL keep their own copy of the URL, but the file behind it is gone."},{"name":"list_video_avatars","description":"List the stock presenter avatars available for AI video generation. Pass an avatar's id to generate_video."},{"name":"list_video_voices","description":"List the stock voices available for AI video generation. Pass a voice's id to generate_video."},{"name":"create_video_script","description":"Write a short talking-presenter video script from a post's text. Saves nothing; counts against the monthly AI allowance. Show the script to the user before gene"},{"name":"generate_video","description":"Start rendering an AI presenter video from a script, avatar and voice. Returns a job id immediately; poll get_video_status until it completes. Rendering is mete"},{"name":"get_video_status","description":"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."},{"name":"list_personas","description":"List the user's PersonaForge personas — writing styles learned from a real account — plus extraction jobs still running and recent failures."},{"name":"get_persona","description":"Get one persona in full: its name, cover image, source account, and the style profile used when writing in it."},{"name":"create_persona","description":"Start learning a writing persona from recent posts — either a connected account (instagram, twitter, youtube) or a public profile (youtube, medium, mastodon, bl"},{"name":"get_persona_job_status","description":"Check a persona extraction job started by create_persona: its status, the new persona's id once done, or the error."},{"name":"rename_persona","description":"Rename a persona. Its learned voice is unchanged."},{"name":"delete_persona","description":"Permanently delete a persona and its learned voice. Recreating it means re-running create_persona. Confirm with the user first."},{"name":"generate_persona_post","description":"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. The post is saved for revi"},{"name":"list_persona_replies","description":"List AI-drafted replies to inbound comments and messages, by status (default pending — the ones waiting for review)."},{"name":"generate_persona_reply","description":"Draft a reply, in the user's trained voice, to an inbound comment or message on one of their posts. The draft is saved as pending for review (list_persona_repli"},{"name":"review_persona_reply","description":"Approve, edit or reject one pending AI-drafted reply. Approving or editing adds the final text to the draft queue (list_drafts) — it is not posted. Reject marks"},{"name":"get_voice_model","description":"Get the user's own trained voice model — tone breakdown, signature phrases, emoji patterns, average post length, preferred hooks, hashtag style and how many pos"},{"name":"train_voice_model","description":"Train (or retrain) the user's own voice model from their last 50 published posts. Replaces the existing voice model. Uses one AI text action from the plan's quo"},{"name":"generate_bio_variants","description":"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. Opt"},{"name":"list_competitor_personas","description":"List the competitor accounts the user has analysed, newest first, with posting frequency, content pillars, gaps, average engagement and best posting time."},{"name":"analyze_competitor","description":"Analyse a competitor's public X (Twitter) or LinkedIn account — posting frequency, content pillars, gaps, engagement and best posting time — and save it (re-ana"},{"name":"list_notifications","description":"List the user's MisarPost notifications (publish results, account problems and the like), newest first, with the unread count."},{"name":"mark_notification_read","description":"Mark one notification as read, e.g. after relaying it to the user. It drops out of the unread count."},{"name":"mark_all_notifications_read","description":"Mark every unread notification as read. There is no way to mark them unread again."},{"name":"list_webhooks","description":"List the user's outbound webhooks — the URLs MisarPost sends signed event payloads to — with their events and whether each is active. Signing secrets are never "},{"name":"create_webhook","description":"Register an outbound webhook: MisarPost will POST signed payloads for the chosen events to this URL from now on. The response carries the signing secret exactly"},{"name":"update_webhook","description":"Change an outbound webhook's URL or events, or pause/resume it with active. Only the fields passed change."},{"name":"delete_webhook","description":"Permanently remove an outbound webhook; events stop being delivered to its URL. Confirm with the user first."},{"name":"list_workspaces","description":"List the workspaces the user belongs to. When workspace scoping is on, posts, accounts and stats are limited to the active workspace."}],"toolCount":85,"toolsHash":"50d6bb9a4570ca9a05e27571540754585e9801ed36e31a63a248095ba8fab7ef","serverName":"misarpost","capabilities":["tools","prompts","resources"],"serverVersion":"3.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T03:22:59.701Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":856,"error":null,"detail":{"tools":[{"name":"list_connections","description":"List the user's active connected social accounts with their account ID, platform and display name. Call this before scheduling: schedule_post needs the connecte"},{"name":"list_publish_options","description":"Look up the destinations a connected account can publish into — Discord or Slack channels, Pinterest boards, Reddit post flairs, Hashnode or Medium publications"},{"name":"list_account_plugs","description":"Show the plugs (automatic follow-up actions — e.g. reposting or resharing a post once it passes a likes or reactions threshold, on X, Bluesky, Threads and Linke"},{"name":"configure_account_plug","description":"Turn a plug on or off for one connected account and set its configuration, replacing the plug's previous configuration. An activated plug later acts on that acc"},{"name":"list_posts","description":"List the user's scheduled and published posts, newest-scheduled first, 20 per page, with platform, status, scheduled/published time, post URL, tags and engageme"},{"name":"schedule_post","description":"Schedule a post to ONE connected account at a given time, or publish it immediately with scheduled_at=\"now\". This queues real content for a real audience — show"},{"name":"cancel_post","description":"Cancel a post that is still pending or queued, so it never publishes. Posts that are already publishing or published cannot be cancelled, and a cancelled post c"},{"name":"get_calendar","description":"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 tag"},{"name":"update_post","description":"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. Changing the time moves w"},{"name":"reply_to_post","description":"Post a public reply/comment on one of the user's ALREADY-PUBLISHED posts, on the platform it was published to. It goes live immediately and cannot be recalled f"},{"name":"revert_post","description":"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). This removes it from"},{"name":"revert_post_batch","description":"\"Delete everywhere\": delete every published post from one batch (one compose or repurpose action sent to several accounts) from all of its platforms. Each platf"},{"name":"share_post","description":"Create (or return the existing) public preview link for one of the user's posts. Anyone with the link can view the post without signing in, so get the user's ex"},{"name":"unshare_post","description":"Revoke a post's public preview link, so the old link stops working. Safe to call when no link exists."},{"name":"list_drafts","description":"List up to 50 draft post variants awaiting review (status draft or pending_review), newest first — including AI-generated drafts from generate_posts — with plat"},{"name":"review_drafts","description":"Approve or reject several drafts at once by ID. Approving does NOT schedule or publish anything — use schedule_post for that. Rejected drafts drop out of list_d"},{"name":"get_stats","description":"Get the account overview: connected accounts, posts queued, published this week and this month, drafts waiting, the last published post, the top performing post"},{"name":"get_analytics_trends","description":"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 "},{"name":"get_growth_overview","description":"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 forma"},{"name":"list_growth_opportunities","description":"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 "},{"name":"list_growth_playbooks","description":"Get per-platform growth playbooks for the user's connected platforms — cadence, format, timing and anti-spam guidance compiled from each platform's official cre"},{"name":"get_next_growth_opportunity","description":"Get the single best next content opportunity for the user's connected platforms and niches — a compact version of list_growth_opportunities. Returns `{ opportun"},{"name":"get_contentripple_usage","description":"Show how many ContentRipple repurposes the user has run this month, their monthly limit (null means unlimited), and their plan tier. Check before a large repurp"},{"name":"repurpose_content","description":"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 captio"},{"name":"update_content_variant","description":"Edit a saved ContentRipple variant's text (which marks it edited) and/or set its status. Use the variant id returned by repurpose_content. Publishes nothing."},{"name":"schedule_content_variant","description":"Schedule a saved ContentRipple variant (its text plus hashtags) to a connected account of the matching platform at a given time. Only these formats can be publi"},{"name":"fetch_content_feed","description":"Read an RSS or Atom feed and return its entries, so the user can pick one to repurpose with repurpose_content (source_type rss). Nothing is saved."},{"name":"parse_content_source","description":"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 wh"},{"name":"list_repurpose_history","description":"List past ContentRipple repurposes, newest first: each source (type, URL, title, core message) with its variants and, for variants that were scheduled, the post"},{"name":"delete_repurpose_source","description":"Delete one repurposed source and its variants from ContentRipple history. Posts already scheduled or published from it are not touched. This cannot be undone — "},{"name":"generate_posts","description":"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). Nothing is scheduled o"},{"name":"enhance_topic","description":"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. Saves no"},{"name":"generate_plan","description":"For a topic or brief, suggest hook options, the best posting time slots, and trending hashtags per platform. Saves nothing and schedules nothing; counts against"},{"name":"research_hashtags","description":"Build a tiered hashtag strategy for a keyword across platforms — broad, mid and niche tags plus each platform's algorithm signals. Saves nothing; counts against"},{"name":"get_optimization_insights","description":"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. Changes"},{"name":"generate_image","description":"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), a"},{"name":"get_trends","description":"Get the latest trending hashtags and content hooks for the user's TrendPulse niches, each with a snapshot id. Returns cached results under two hours old, or ref"},{"name":"queue_trend_drafts","description":"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)"},{"name":"schedule_trend_posts","description":"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 t"},{"name":"refresh_trends","description":"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. Ne"},{"name":"send_trend_digest","description":"Email the user their trend digest (top recent trends for their niches) now. It always goes to the account owner's own address — never anyone else. Returns `skip"},{"name":"get_trend_hooks","description":"Get the content hooks (opening lines and angles) for one trend snapshot — snapshot ids come from get_trends."},{"name":"get_trend_platform_content","description":"Get the per-platform content already generated for one trend snapshot — hashtags, plus title/description for YouTube and title/subtitle for Medium. Empty until "},{"name":"generate_trend_platform_content","description":"Generate per-platform content (hashtags, and titles where a platform needs them) for one trend snapshot, for the platforms asked (default: all seven). Regenerat"},{"name":"use_trend_platform_content","description":"Turn one platform's generated trend content into a draft post (generating it first if needed). The draft lands in the review queue (list_drafts) — nothing is pu"},{"name":"get_trend_performance","description":"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, comm"},{"name":"list_post_templates","description":"List the user's saved post templates, most recently updated first — reusable composer states with text, per-platform overrides, target accounts, platform settin"},{"name":"get_post_template","description":"Get one saved post template in full, by id — to reuse its text, accounts and settings in schedule_post."},{"name":"create_post_template","description":"Save a reusable post template: default text, optional per-platform text, target accounts, platform settings, media and first comment. Saving publishes nothing."},{"name":"update_post_template","description":"Change a saved post template. Only the fields passed are changed, and each one passed replaces the stored value entirely (e.g. account_ids replaces the whole li"},{"name":"delete_post_template","description":"Permanently delete a saved post template. Posts already scheduled from it are not affected. Confirm with the user first."},{"name":"list_post_tags","description":"List the user's post tags (id, name, colour). Tag ids filter list_posts and get_calendar and are applied with schedule_post or update_post."},{"name":"create_post_tag","description":"Create a post tag with a name and colour, for grouping posts by campaign or theme. Names must be unique per user."},{"name":"update_post_tag","description":"Rename and/or recolour a post tag. Posts keep the tag."},{"name":"delete_post_tag","description":"Permanently delete a post tag and remove it from every post that carries it. The posts themselves are not affected. Confirm with the user first."},{"name":"list_media","description":"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."},{"name":"delete_media","description":"Permanently delete a file from the media library and storage. Posts that already include its URL keep their own copy of the URL, but the file behind it is gone."},{"name":"list_video_avatars","description":"List the stock presenter avatars available for AI video generation. Pass an avatar's id to generate_video."},{"name":"list_video_voices","description":"List the stock voices available for AI video generation. Pass a voice's id to generate_video."},{"name":"create_video_script","description":"Write a short talking-presenter video script from a post's text. Saves nothing; counts against the monthly AI allowance. Show the script to the user before gene"},{"name":"generate_video","description":"Start rendering an AI presenter video from a script, avatar and voice. Returns a job id immediately; poll get_video_status until it completes. Rendering is mete"},{"name":"get_video_status","description":"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."},{"name":"list_personas","description":"List the user's PersonaForge personas — writing styles learned from a real account — plus extraction jobs still running and recent failures."},{"name":"get_persona","description":"Get one persona in full: its name, cover image, source account, and the style profile used when writing in it."},{"name":"create_persona","description":"Start learning a writing persona from recent posts — either a connected account (instagram, twitter, youtube) or a public profile (youtube, medium, mastodon, bl"},{"name":"get_persona_job_status","description":"Check a persona extraction job started by create_persona: its status, the new persona's id once done, or the error."},{"name":"rename_persona","description":"Rename a persona. Its learned voice is unchanged."},{"name":"delete_persona","description":"Permanently delete a persona and its learned voice. Recreating it means re-running create_persona. Confirm with the user first."},{"name":"generate_persona_post","description":"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. The post is saved for revi"},{"name":"list_persona_replies","description":"List AI-drafted replies to inbound comments and messages, by status (default pending — the ones waiting for review)."},{"name":"generate_persona_reply","description":"Draft a reply, in the user's trained voice, to an inbound comment or message on one of their posts. The draft is saved as pending for review (list_persona_repli"},{"name":"review_persona_reply","description":"Approve, edit or reject one pending AI-drafted reply. Approving or editing adds the final text to the draft queue (list_drafts) — it is not posted. Reject marks"},{"name":"get_voice_model","description":"Get the user's own trained voice model — tone breakdown, signature phrases, emoji patterns, average post length, preferred hooks, hashtag style and how many pos"},{"name":"train_voice_model","description":"Train (or retrain) the user's own voice model from their last 50 published posts. Replaces the existing voice model. Uses one AI text action from the plan's quo"},{"name":"generate_bio_variants","description":"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. Opt"},{"name":"list_competitor_personas","description":"List the competitor accounts the user has analysed, newest first, with posting frequency, content pillars, gaps, average engagement and best posting time."},{"name":"analyze_competitor","description":"Analyse a competitor's public X (Twitter) or LinkedIn account — posting frequency, content pillars, gaps, engagement and best posting time — and save it (re-ana"},{"name":"list_notifications","description":"List the user's MisarPost notifications (publish results, account problems and the like), newest first, with the unread count."},{"name":"mark_notification_read","description":"Mark one notification as read, e.g. after relaying it to the user. It drops out of the unread count."},{"name":"mark_all_notifications_read","description":"Mark every unread notification as read. There is no way to mark them unread again."},{"name":"list_webhooks","description":"List the user's outbound webhooks — the URLs MisarPost sends signed event payloads to — with their events and whether each is active. Signing secrets are never "},{"name":"create_webhook","description":"Register an outbound webhook: MisarPost will POST signed payloads for the chosen events to this URL from now on. The response carries the signing secret exactly"},{"name":"update_webhook","description":"Change an outbound webhook's URL or events, or pause/resume it with active. Only the fields passed change."},{"name":"delete_webhook","description":"Permanently remove an outbound webhook; events stop being delivered to its URL. Confirm with the user first."},{"name":"list_workspaces","description":"List the workspaces the user belongs to. When workspace scoping is on, posts, accounts and stats are limited to the active workspace."}],"toolCount":85,"toolsHash":"50d6bb9a4570ca9a05e27571540754585e9801ed36e31a63a248095ba8fab7ef","serverName":"misarpost","capabilities":["tools","prompts","resources"],"serverVersion":"3.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T20:26:40.772Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":934,"error":null,"detail":{"tools":[{"name":"list_connections","description":"List the user's active connected social accounts with their account ID, platform and display name. Call this before scheduling: schedule_post needs the connecte"},{"name":"list_publish_options","description":"Look up the destinations a connected account can publish into — Discord or Slack channels, Pinterest boards, Reddit post flairs, Hashnode or Medium publications"},{"name":"list_account_plugs","description":"Show the plugs (automatic follow-up actions — e.g. reposting or resharing a post once it passes a likes or reactions threshold, on X, Bluesky, Threads and Linke"},{"name":"configure_account_plug","description":"Turn a plug on or off for one connected account and set its configuration, replacing the plug's previous configuration. An activated plug later acts on that acc"},{"name":"list_posts","description":"List the user's scheduled and published posts, newest-scheduled first, 20 per page, with platform, status, scheduled/published time, post URL, tags and engageme"},{"name":"schedule_post","description":"Schedule a post to ONE connected account at a given time, or publish it immediately with scheduled_at=\"now\". This queues real content for a real audience — show"},{"name":"cancel_post","description":"Cancel a post that is still pending or queued, so it never publishes. Posts that are already publishing or published cannot be cancelled, and a cancelled post c"},{"name":"get_calendar","description":"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 tag"},{"name":"update_post","description":"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. Changing the time moves w"},{"name":"reply_to_post","description":"Post a public reply/comment on one of the user's ALREADY-PUBLISHED posts, on the platform it was published to. It goes live immediately and cannot be recalled f"},{"name":"revert_post","description":"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). This removes it from"},{"name":"revert_post_batch","description":"\"Delete everywhere\": delete every published post from one batch (one compose or repurpose action sent to several accounts) from all of its platforms. Each platf"},{"name":"share_post","description":"Create (or return the existing) public preview link for one of the user's posts. Anyone with the link can view the post without signing in, so get the user's ex"},{"name":"unshare_post","description":"Revoke a post's public preview link, so the old link stops working. Safe to call when no link exists."},{"name":"list_drafts","description":"List up to 50 draft post variants awaiting review (status draft or pending_review), newest first — including AI-generated drafts from generate_posts — with plat"},{"name":"review_drafts","description":"Approve or reject several drafts at once by ID. Approving does NOT schedule or publish anything — use schedule_post for that. Rejected drafts drop out of list_d"},{"name":"get_stats","description":"Get the account overview: connected accounts, posts queued, published this week and this month, drafts waiting, the last published post, the top performing post"},{"name":"get_analytics_trends","description":"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 "},{"name":"get_growth_overview","description":"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 forma"},{"name":"list_growth_opportunities","description":"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 "},{"name":"list_growth_playbooks","description":"Get per-platform growth playbooks for the user's connected platforms — cadence, format, timing and anti-spam guidance compiled from each platform's official cre"},{"name":"get_next_growth_opportunity","description":"Get the single best next content opportunity for the user's connected platforms and niches — a compact version of list_growth_opportunities. Returns `{ opportun"},{"name":"get_contentripple_usage","description":"Show how many ContentRipple repurposes the user has run this month, their monthly limit (null means unlimited), and their plan tier. Check before a large repurp"},{"name":"repurpose_content","description":"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 captio"},{"name":"update_content_variant","description":"Edit a saved ContentRipple variant's text (which marks it edited) and/or set its status. Use the variant id returned by repurpose_content. Publishes nothing."},{"name":"schedule_content_variant","description":"Schedule a saved ContentRipple variant (its text plus hashtags) to a connected account of the matching platform at a given time. Only these formats can be publi"},{"name":"fetch_content_feed","description":"Read an RSS or Atom feed and return its entries, so the user can pick one to repurpose with repurpose_content (source_type rss). Nothing is saved."},{"name":"parse_content_source","description":"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 wh"},{"name":"list_repurpose_history","description":"List past ContentRipple repurposes, newest first: each source (type, URL, title, core message) with its variants and, for variants that were scheduled, the post"},{"name":"delete_repurpose_source","description":"Delete one repurposed source and its variants from ContentRipple history. Posts already scheduled or published from it are not touched. This cannot be undone — "},{"name":"generate_posts","description":"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). Nothing is scheduled o"},{"name":"enhance_topic","description":"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. Saves no"},{"name":"generate_plan","description":"For a topic or brief, suggest hook options, the best posting time slots, and trending hashtags per platform. Saves nothing and schedules nothing; counts against"},{"name":"research_hashtags","description":"Build a tiered hashtag strategy for a keyword across platforms — broad, mid and niche tags plus each platform's algorithm signals. Saves nothing; counts against"},{"name":"get_optimization_insights","description":"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. Changes"},{"name":"generate_image","description":"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), a"},{"name":"get_trends","description":"Get the latest trending hashtags and content hooks for the user's TrendPulse niches, each with a snapshot id. Returns cached results under two hours old, or ref"},{"name":"queue_trend_drafts","description":"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)"},{"name":"schedule_trend_posts","description":"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 t"},{"name":"refresh_trends","description":"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. Ne"},{"name":"send_trend_digest","description":"Email the user their trend digest (top recent trends for their niches) now. It always goes to the account owner's own address — never anyone else. Returns `skip"},{"name":"get_trend_hooks","description":"Get the content hooks (opening lines and angles) for one trend snapshot — snapshot ids come from get_trends."},{"name":"get_trend_platform_content","description":"Get the per-platform content already generated for one trend snapshot — hashtags, plus title/description for YouTube and title/subtitle for Medium. Empty until "},{"name":"generate_trend_platform_content","description":"Generate per-platform content (hashtags, and titles where a platform needs them) for one trend snapshot, for the platforms asked (default: all seven). Regenerat"},{"name":"use_trend_platform_content","description":"Turn one platform's generated trend content into a draft post (generating it first if needed). The draft lands in the review queue (list_drafts) — nothing is pu"},{"name":"get_trend_performance","description":"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, comm"},{"name":"list_post_templates","description":"List the user's saved post templates, most recently updated first — reusable composer states with text, per-platform overrides, target accounts, platform settin"},{"name":"get_post_template","description":"Get one saved post template in full, by id — to reuse its text, accounts and settings in schedule_post."},{"name":"create_post_template","description":"Save a reusable post template: default text, optional per-platform text, target accounts, platform settings, media and first comment. Saving publishes nothing."},{"name":"update_post_template","description":"Change a saved post template. Only the fields passed are changed, and each one passed replaces the stored value entirely (e.g. account_ids replaces the whole li"},{"name":"delete_post_template","description":"Permanently delete a saved post template. Posts already scheduled from it are not affected. Confirm with the user first."},{"name":"list_post_tags","description":"List the user's post tags (id, name, colour). Tag ids filter list_posts and get_calendar and are applied with schedule_post or update_post."},{"name":"create_post_tag","description":"Create a post tag with a name and colour, for grouping posts by campaign or theme. Names must be unique per user."},{"name":"update_post_tag","description":"Rename and/or recolour a post tag. Posts keep the tag."},{"name":"delete_post_tag","description":"Permanently delete a post tag and remove it from every post that carries it. The posts themselves are not affected. Confirm with the user first."},{"name":"list_media","description":"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."},{"name":"delete_media","description":"Permanently delete a file from the media library and storage. Posts that already include its URL keep their own copy of the URL, but the file behind it is gone."},{"name":"list_video_avatars","description":"List the stock presenter avatars available for AI video generation. Pass an avatar's id to generate_video."},{"name":"list_video_voices","description":"List the stock voices available for AI video generation. Pass a voice's id to generate_video."},{"name":"create_video_script","description":"Write a short talking-presenter video script from a post's text. Saves nothing; counts against the monthly AI allowance. Show the script to the user before gene"},{"name":"generate_video","description":"Start rendering an AI presenter video from a script, avatar and voice. Returns a job id immediately; poll get_video_status until it completes. Rendering is mete"},{"name":"get_video_status","description":"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."},{"name":"list_personas","description":"List the user's PersonaForge personas — writing styles learned from a real account — plus extraction jobs still running and recent failures."},{"name":"get_persona","description":"Get one persona in full: its name, cover image, source account, and the style profile used when writing in it."},{"name":"create_persona","description":"Start learning a writing persona from recent posts — either a connected account (instagram, twitter, youtube) or a public profile (youtube, medium, mastodon, bl"},{"name":"get_persona_job_status","description":"Check a persona extraction job started by create_persona: its status, the new persona's id once done, or the error."},{"name":"rename_persona","description":"Rename a persona. Its learned voice is unchanged."},{"name":"delete_persona","description":"Permanently delete a persona and its learned voice. Recreating it means re-running create_persona. Confirm with the user first."},{"name":"generate_persona_post","description":"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. The post is saved for revi"},{"name":"list_persona_replies","description":"List AI-drafted replies to inbound comments and messages, by status (default pending — the ones waiting for review)."},{"name":"generate_persona_reply","description":"Draft a reply, in the user's trained voice, to an inbound comment or message on one of their posts. The draft is saved as pending for review (list_persona_repli"},{"name":"review_persona_reply","description":"Approve, edit or reject one pending AI-drafted reply. Approving or editing adds the final text to the draft queue (list_drafts) — it is not posted. Reject marks"},{"name":"get_voice_model","description":"Get the user's own trained voice model — tone breakdown, signature phrases, emoji patterns, average post length, preferred hooks, hashtag style and how many pos"},{"name":"train_voice_model","description":"Train (or retrain) the user's own voice model from their last 50 published posts. Replaces the existing voice model. Uses one AI text action from the plan's quo"},{"name":"generate_bio_variants","description":"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. Opt"},{"name":"list_competitor_personas","description":"List the competitor accounts the user has analysed, newest first, with posting frequency, content pillars, gaps, average engagement and best posting time."},{"name":"analyze_competitor","description":"Analyse a competitor's public X (Twitter) or LinkedIn account — posting frequency, content pillars, gaps, engagement and best posting time — and save it (re-ana"},{"name":"list_notifications","description":"List the user's MisarPost notifications (publish results, account problems and the like), newest first, with the unread count."},{"name":"mark_notification_read","description":"Mark one notification as read, e.g. after relaying it to the user. It drops out of the unread count."},{"name":"mark_all_notifications_read","description":"Mark every unread notification as read. There is no way to mark them unread again."},{"name":"list_webhooks","description":"List the user's outbound webhooks — the URLs MisarPost sends signed event payloads to — with their events and whether each is active. Signing secrets are never "},{"name":"create_webhook","description":"Register an outbound webhook: MisarPost will POST signed payloads for the chosen events to this URL from now on. The response carries the signing secret exactly"},{"name":"update_webhook","description":"Change an outbound webhook's URL or events, or pause/resume it with active. Only the fields passed change."},{"name":"delete_webhook","description":"Permanently remove an outbound webhook; events stop being delivered to its URL. Confirm with the user first."},{"name":"list_workspaces","description":"List the workspaces the user belongs to. When workspace scoping is on, posts, accounts and stats are limited to the active workspace."}],"toolCount":85,"toolsHash":"50d6bb9a4570ca9a05e27571540754585e9801ed36e31a63a248095ba8fab7ef","serverName":"misarpost","capabilities":["tools","prompts","resources"],"serverVersion":"3.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T13:28:38.982Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":646,"error":null,"detail":{"tools":[{"name":"list_connections","description":"List the user's active connected social accounts with their account ID, platform and display name. Call this before scheduling: schedule_post needs the connecte"},{"name":"list_publish_options","description":"Look up the destinations a connected account can publish into — Discord or Slack channels, Pinterest boards, Reddit post flairs, Hashnode or Medium publications"},{"name":"list_account_plugs","description":"Show the plugs (automatic follow-up actions — e.g. reposting or resharing a post once it passes a likes or reactions threshold, on X, Bluesky, Threads and Linke"},{"name":"configure_account_plug","description":"Turn a plug on or off for one connected account and set its configuration, replacing the plug's previous configuration. An activated plug later acts on that acc"},{"name":"list_posts","description":"List the user's scheduled and published posts, newest-scheduled first, 20 per page, with platform, status, scheduled/published time, post URL, tags and engageme"},{"name":"schedule_post","description":"Schedule a post to ONE connected account at a given time, or publish it immediately with scheduled_at=\"now\". This queues real content for a real audience — show"},{"name":"cancel_post","description":"Cancel a post that is still pending or queued, so it never publishes. Posts that are already publishing or published cannot be cancelled, and a cancelled post c"},{"name":"get_calendar","description":"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 tag"},{"name":"update_post","description":"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. Changing the time moves w"},{"name":"reply_to_post","description":"Post a public reply/comment on one of the user's ALREADY-PUBLISHED posts, on the platform it was published to. It goes live immediately and cannot be recalled f"},{"name":"revert_post","description":"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). This removes it from"},{"name":"revert_post_batch","description":"\"Delete everywhere\": delete every published post from one batch (one compose or repurpose action sent to several accounts) from all of its platforms. Each platf"},{"name":"share_post","description":"Create (or return the existing) public preview link for one of the user's posts. Anyone with the link can view the post without signing in, so get the user's ex"},{"name":"unshare_post","description":"Revoke a post's public preview link, so the old link stops working. Safe to call when no link exists."},{"name":"list_drafts","description":"List up to 50 draft post variants awaiting review (status draft or pending_review), newest first — including AI-generated drafts from generate_posts — with plat"},{"name":"review_drafts","description":"Approve or reject several drafts at once by ID. Approving does NOT schedule or publish anything — use schedule_post for that. Rejected drafts drop out of list_d"},{"name":"get_stats","description":"Get the account overview: connected accounts, posts queued, published this week and this month, drafts waiting, the last published post, the top performing post"},{"name":"get_analytics_trends","description":"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 "},{"name":"get_growth_overview","description":"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 forma"},{"name":"list_growth_opportunities","description":"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 "},{"name":"list_growth_playbooks","description":"Get per-platform growth playbooks for the user's connected platforms — cadence, format, timing and anti-spam guidance compiled from each platform's official cre"},{"name":"get_next_growth_opportunity","description":"Get the single best next content opportunity for the user's connected platforms and niches — a compact version of list_growth_opportunities. Returns `{ opportun"},{"name":"get_contentripple_usage","description":"Show how many ContentRipple repurposes the user has run this month, their monthly limit (null means unlimited), and their plan tier. Check before a large repurp"},{"name":"repurpose_content","description":"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 captio"},{"name":"update_content_variant","description":"Edit a saved ContentRipple variant's text (which marks it edited) and/or set its status. Use the variant id returned by repurpose_content. Publishes nothing."},{"name":"schedule_content_variant","description":"Schedule a saved ContentRipple variant (its text plus hashtags) to a connected account of the matching platform at a given time. Only these formats can be publi"},{"name":"fetch_content_feed","description":"Read an RSS or Atom feed and return its entries, so the user can pick one to repurpose with repurpose_content (source_type rss). Nothing is saved."},{"name":"parse_content_source","description":"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 wh"},{"name":"list_repurpose_history","description":"List past ContentRipple repurposes, newest first: each source (type, URL, title, core message) with its variants and, for variants that were scheduled, the post"},{"name":"delete_repurpose_source","description":"Delete one repurposed source and its variants from ContentRipple history. Posts already scheduled or published from it are not touched. This cannot be undone — "},{"name":"generate_posts","description":"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). Nothing is scheduled o"},{"name":"enhance_topic","description":"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. Saves no"},{"name":"generate_plan","description":"For a topic or brief, suggest hook options, the best posting time slots, and trending hashtags per platform. Saves nothing and schedules nothing; counts against"},{"name":"research_hashtags","description":"Build a tiered hashtag strategy for a keyword across platforms — broad, mid and niche tags plus each platform's algorithm signals. Saves nothing; counts against"},{"name":"get_optimization_insights","description":"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. Changes"},{"name":"generate_image","description":"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), a"},{"name":"get_trends","description":"Get the latest trending hashtags and content hooks for the user's TrendPulse niches, each with a snapshot id. Returns cached results under two hours old, or ref"},{"name":"queue_trend_drafts","description":"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)"},{"name":"schedule_trend_posts","description":"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 t"},{"name":"refresh_trends","description":"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. Ne"},{"name":"send_trend_digest","description":"Email the user their trend digest (top recent trends for their niches) now. It always goes to the account owner's own address — never anyone else. Returns `skip"},{"name":"get_trend_hooks","description":"Get the content hooks (opening lines and angles) for one trend snapshot — snapshot ids come from get_trends."},{"name":"get_trend_platform_content","description":"Get the per-platform content already generated for one trend snapshot — hashtags, plus title/description for YouTube and title/subtitle for Medium. Empty until "},{"name":"generate_trend_platform_content","description":"Generate per-platform content (hashtags, and titles where a platform needs them) for one trend snapshot, for the platforms asked (default: all seven). Regenerat"},{"name":"use_trend_platform_content","description":"Turn one platform's generated trend content into a draft post (generating it first if needed). The draft lands in the review queue (list_drafts) — nothing is pu"},{"name":"get_trend_performance","description":"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, comm"},{"name":"list_post_templates","description":"List the user's saved post templates, most recently updated first — reusable composer states with text, per-platform overrides, target accounts, platform settin"},{"name":"get_post_template","description":"Get one saved post template in full, by id — to reuse its text, accounts and settings in schedule_post."},{"name":"create_post_template","description":"Save a reusable post template: default text, optional per-platform text, target accounts, platform settings, media and first comment. Saving publishes nothing."},{"name":"update_post_template","description":"Change a saved post template. Only the fields passed are changed, and each one passed replaces the stored value entirely (e.g. account_ids replaces the whole li"},{"name":"delete_post_template","description":"Permanently delete a saved post template. Posts already scheduled from it are not affected. Confirm with the user first."},{"name":"list_post_tags","description":"List the user's post tags (id, name, colour). Tag ids filter list_posts and get_calendar and are applied with schedule_post or update_post."},{"name":"create_post_tag","description":"Create a post tag with a name and colour, for grouping posts by campaign or theme. Names must be unique per user."},{"name":"update_post_tag","description":"Rename and/or recolour a post tag. Posts keep the tag."},{"name":"delete_post_tag","description":"Permanently delete a post tag and remove it from every post that carries it. The posts themselves are not affected. Confirm with the user first."},{"name":"list_media","description":"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."},{"name":"delete_media","description":"Permanently delete a file from the media library and storage. Posts that already include its URL keep their own copy of the URL, but the file behind it is gone."},{"name":"list_video_avatars","description":"List the stock presenter avatars available for AI video generation. Pass an avatar's id to generate_video."},{"name":"list_video_voices","description":"List the stock voices available for AI video generation. Pass a voice's id to generate_video."},{"name":"create_video_script","description":"Write a short talking-presenter video script from a post's text. Saves nothing; counts against the monthly AI allowance. Show the script to the user before gene"},{"name":"generate_video","description":"Start rendering an AI presenter video from a script, avatar and voice. Returns a job id immediately; poll get_video_status until it completes. Rendering is mete"},{"name":"get_video_status","description":"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."},{"name":"list_personas","description":"List the user's PersonaForge personas — writing styles learned from a real account — plus extraction jobs still running and recent failures."},{"name":"get_persona","description":"Get one persona in full: its name, cover image, source account, and the style profile used when writing in it."},{"name":"create_persona","description":"Start learning a writing persona from recent posts — either a connected account (instagram, twitter, youtube) or a public profile (youtube, medium, mastodon, bl"},{"name":"get_persona_job_status","description":"Check a persona extraction job started by create_persona: its status, the new persona's id once done, or the error."},{"name":"rename_persona","description":"Rename a persona. Its learned voice is unchanged."},{"name":"delete_persona","description":"Permanently delete a persona and its learned voice. Recreating it means re-running create_persona. Confirm with the user first."},{"name":"generate_persona_post","description":"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. The post is saved for revi"},{"name":"list_persona_replies","description":"List AI-drafted replies to inbound comments and messages, by status (default pending — the ones waiting for review)."},{"name":"generate_persona_reply","description":"Draft a reply, in the user's trained voice, to an inbound comment or message on one of their posts. The draft is saved as pending for review (list_persona_repli"},{"name":"review_persona_reply","description":"Approve, edit or reject one pending AI-drafted reply. Approving or editing adds the final text to the draft queue (list_drafts) — it is not posted. Reject marks"},{"name":"get_voice_model","description":"Get the user's own trained voice model — tone breakdown, signature phrases, emoji patterns, average post length, preferred hooks, hashtag style and how many pos"},{"name":"train_voice_model","description":"Train (or retrain) the user's own voice model from their last 50 published posts. Replaces the existing voice model. Uses one AI text action from the plan's quo"},{"name":"generate_bio_variants","description":"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. Opt"},{"name":"list_competitor_personas","description":"List the competitor accounts the user has analysed, newest first, with posting frequency, content pillars, gaps, average engagement and best posting time."},{"name":"analyze_competitor","description":"Analyse a competitor's public X (Twitter) or LinkedIn account — posting frequency, content pillars, gaps, engagement and best posting time — and save it (re-ana"},{"name":"list_notifications","description":"List the user's MisarPost notifications (publish results, account problems and the like), newest first, with the unread count."},{"name":"mark_notification_read","description":"Mark one notification as read, e.g. after relaying it to the user. It drops out of the unread count."},{"name":"mark_all_notifications_read","description":"Mark every unread notification as read. There is no way to mark them unread again."},{"name":"list_webhooks","description":"List the user's outbound webhooks — the URLs MisarPost sends signed event payloads to — with their events and whether each is active. Signing secrets are never "},{"name":"create_webhook","description":"Register an outbound webhook: MisarPost will POST signed payloads for the chosen events to this URL from now on. The response carries the signing secret exactly"},{"name":"update_webhook","description":"Change an outbound webhook's URL or events, or pause/resume it with active. Only the fields passed change."},{"name":"delete_webhook","description":"Permanently remove an outbound webhook; events stop being delivered to its URL. Confirm with the user first."},{"name":"list_workspaces","description":"List the workspaces the user belongs to. When workspace scoping is on, posts, accounts and stats are limited to the active workspace."}],"toolCount":85,"toolsHash":"50d6bb9a4570ca9a05e27571540754585e9801ed36e31a63a248095ba8fab7ef","serverName":"misarpost","capabilities":["tools","prompts","resources"],"serverVersion":"3.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T06:27:43.764Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":644,"error":null,"detail":{"tools":[{"name":"list_connections","description":"List the user's active connected social accounts with their account ID, platform and display name. Call this before scheduling: schedule_post needs the connecte"},{"name":"list_publish_options","description":"Look up the destinations a connected account can publish into — Discord or Slack channels, Pinterest boards, Reddit post flairs, Hashnode or Medium publications"},{"name":"list_account_plugs","description":"Show the plugs (automatic follow-up actions — e.g. reposting or resharing a post once it passes a likes or reactions threshold, on X, Bluesky, Threads and Linke"},{"name":"configure_account_plug","description":"Turn a plug on or off for one connected account and set its configuration, replacing the plug's previous configuration. An activated plug later acts on that acc"},{"name":"list_posts","description":"List the user's scheduled and published posts, newest-scheduled first, 20 per page, with platform, status, scheduled/published time, post URL, tags and engageme"},{"name":"schedule_post","description":"Schedule a post to ONE connected account at a given time, or publish it immediately with scheduled_at=\"now\". This queues real content for a real audience — show"},{"name":"cancel_post","description":"Cancel a post that is still pending or queued, so it never publishes. Posts that are already publishing or published cannot be cancelled, and a cancelled post c"},{"name":"get_calendar","description":"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 tag"},{"name":"update_post","description":"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. Changing the time moves w"},{"name":"reply_to_post","description":"Post a public reply/comment on one of the user's ALREADY-PUBLISHED posts, on the platform it was published to. It goes live immediately and cannot be recalled f"},{"name":"revert_post","description":"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). This removes it from"},{"name":"revert_post_batch","description":"\"Delete everywhere\": delete every published post from one batch (one compose or repurpose action sent to several accounts) from all of its platforms. Each platf"},{"name":"share_post","description":"Create (or return the existing) public preview link for one of the user's posts. Anyone with the link can view the post without signing in, so get the user's ex"},{"name":"unshare_post","description":"Revoke a post's public preview link, so the old link stops working. Safe to call when no link exists."},{"name":"list_drafts","description":"List up to 50 draft post variants awaiting review (status draft or pending_review), newest first — including AI-generated drafts from generate_posts — with plat"},{"name":"review_drafts","description":"Approve or reject several drafts at once by ID. Approving does NOT schedule or publish anything — use schedule_post for that. Rejected drafts drop out of list_d"},{"name":"get_stats","description":"Get the account overview: connected accounts, posts queued, published this week and this month, drafts waiting, the last published post, the top performing post"},{"name":"get_analytics_trends","description":"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 "},{"name":"get_growth_overview","description":"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 forma"},{"name":"list_growth_opportunities","description":"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 "},{"name":"list_growth_playbooks","description":"Get per-platform growth playbooks for the user's connected platforms — cadence, format, timing and anti-spam guidance compiled from each platform's official cre"},{"name":"get_next_growth_opportunity","description":"Get the single best next content opportunity for the user's connected platforms and niches — a compact version of list_growth_opportunities. Returns `{ opportun"},{"name":"get_contentripple_usage","description":"Show how many ContentRipple repurposes the user has run this month, their monthly limit (null means unlimited), and their plan tier. Check before a large repurp"},{"name":"repurpose_content","description":"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 captio"},{"name":"update_content_variant","description":"Edit a saved ContentRipple variant's text (which marks it edited) and/or set its status. Use the variant id returned by repurpose_content. Publishes nothing."},{"name":"schedule_content_variant","description":"Schedule a saved ContentRipple variant (its text plus hashtags) to a connected account of the matching platform at a given time. Only these formats can be publi"},{"name":"fetch_content_feed","description":"Read an RSS or Atom feed and return its entries, so the user can pick one to repurpose with repurpose_content (source_type rss). Nothing is saved."},{"name":"parse_content_source","description":"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 wh"},{"name":"list_repurpose_history","description":"List past ContentRipple repurposes, newest first: each source (type, URL, title, core message) with its variants and, for variants that were scheduled, the post"},{"name":"delete_repurpose_source","description":"Delete one repurposed source and its variants from ContentRipple history. Posts already scheduled or published from it are not touched. This cannot be undone — "},{"name":"generate_posts","description":"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). Nothing is scheduled o"},{"name":"enhance_topic","description":"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. Saves no"},{"name":"generate_plan","description":"For a topic or brief, suggest hook options, the best posting time slots, and trending hashtags per platform. Saves nothing and schedules nothing; counts against"},{"name":"research_hashtags","description":"Build a tiered hashtag strategy for a keyword across platforms — broad, mid and niche tags plus each platform's algorithm signals. Saves nothing; counts against"},{"name":"get_optimization_insights","description":"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. Changes"},{"name":"generate_image","description":"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), a"},{"name":"get_trends","description":"Get the latest trending hashtags and content hooks for the user's TrendPulse niches, each with a snapshot id. Returns cached results under two hours old, or ref"},{"name":"queue_trend_drafts","description":"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)"},{"name":"schedule_trend_posts","description":"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 t"},{"name":"refresh_trends","description":"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. Ne"},{"name":"send_trend_digest","description":"Email the user their trend digest (top recent trends for their niches) now. It always goes to the account owner's own address — never anyone else. Returns `skip"},{"name":"get_trend_hooks","description":"Get the content hooks (opening lines and angles) for one trend snapshot — snapshot ids come from get_trends."},{"name":"get_trend_platform_content","description":"Get the per-platform content already generated for one trend snapshot — hashtags, plus title/description for YouTube and title/subtitle for Medium. Empty until "},{"name":"generate_trend_platform_content","description":"Generate per-platform content (hashtags, and titles where a platform needs them) for one trend snapshot, for the platforms asked (default: all seven). Regenerat"},{"name":"use_trend_platform_content","description":"Turn one platform's generated trend content into a draft post (generating it first if needed). The draft lands in the review queue (list_drafts) — nothing is pu"},{"name":"get_trend_performance","description":"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, comm"},{"name":"list_post_templates","description":"List the user's saved post templates, most recently updated first — reusable composer states with text, per-platform overrides, target accounts, platform settin"},{"name":"get_post_template","description":"Get one saved post template in full, by id — to reuse its text, accounts and settings in schedule_post."},{"name":"create_post_template","description":"Save a reusable post template: default text, optional per-platform text, target accounts, platform settings, media and first comment. Saving publishes nothing."},{"name":"update_post_template","description":"Change a saved post template. Only the fields passed are changed, and each one passed replaces the stored value entirely (e.g. account_ids replaces the whole li"},{"name":"delete_post_template","description":"Permanently delete a saved post template. Posts already scheduled from it are not affected. Confirm with the user first."},{"name":"list_post_tags","description":"List the user's post tags (id, name, colour). Tag ids filter list_posts and get_calendar and are applied with schedule_post or update_post."},{"name":"create_post_tag","description":"Create a post tag with a name and colour, for grouping posts by campaign or theme. Names must be unique per user."},{"name":"update_post_tag","description":"Rename and/or recolour a post tag. Posts keep the tag."},{"name":"delete_post_tag","description":"Permanently delete a post tag and remove it from every post that carries it. The posts themselves are not affected. Confirm with the user first."},{"name":"list_media","description":"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."},{"name":"delete_media","description":"Permanently delete a file from the media library and storage. Posts that already include its URL keep their own copy of the URL, but the file behind it is gone."},{"name":"list_video_avatars","description":"List the stock presenter avatars available for AI video generation. Pass an avatar's id to generate_video."},{"name":"list_video_voices","description":"List the stock voices available for AI video generation. Pass a voice's id to generate_video."},{"name":"create_video_script","description":"Write a short talking-presenter video script from a post's text. Saves nothing; counts against the monthly AI allowance. Show the script to the user before gene"},{"name":"generate_video","description":"Start rendering an AI presenter video from a script, avatar and voice. Returns a job id immediately; poll get_video_status until it completes. Rendering is mete"},{"name":"get_video_status","description":"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."},{"name":"list_personas","description":"List the user's PersonaForge personas — writing styles learned from a real account — plus extraction jobs still running and recent failures."},{"name":"get_persona","description":"Get one persona in full: its name, cover image, source account, and the style profile used when writing in it."},{"name":"create_persona","description":"Start learning a writing persona from recent posts — either a connected account (instagram, twitter, youtube) or a public profile (youtube, medium, mastodon, bl"},{"name":"get_persona_job_status","description":"Check a persona extraction job started by create_persona: its status, the new persona's id once done, or the error."},{"name":"rename_persona","description":"Rename a persona. Its learned voice is unchanged."},{"name":"delete_persona","description":"Permanently delete a persona and its learned voice. Recreating it means re-running create_persona. Confirm with the user first."},{"name":"generate_persona_post","description":"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. The post is saved for revi"},{"name":"list_persona_replies","description":"List AI-drafted replies to inbound comments and messages, by status (default pending — the ones waiting for review)."},{"name":"generate_persona_reply","description":"Draft a reply, in the user's trained voice, to an inbound comment or message on one of their posts. The draft is saved as pending for review (list_persona_repli"},{"name":"review_persona_reply","description":"Approve, edit or reject one pending AI-drafted reply. Approving or editing adds the final text to the draft queue (list_drafts) — it is not posted. Reject marks"},{"name":"get_voice_model","description":"Get the user's own trained voice model — tone breakdown, signature phrases, emoji patterns, average post length, preferred hooks, hashtag style and how many pos"},{"name":"train_voice_model","description":"Train (or retrain) the user's own voice model from their last 50 published posts. Replaces the existing voice model. Uses one AI text action from the plan's quo"},{"name":"generate_bio_variants","description":"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. Opt"},{"name":"list_competitor_personas","description":"List the competitor accounts the user has analysed, newest first, with posting frequency, content pillars, gaps, average engagement and best posting time."},{"name":"analyze_competitor","description":"Analyse a competitor's public X (Twitter) or LinkedIn account — posting frequency, content pillars, gaps, engagement and best posting time — and save it (re-ana"},{"name":"list_notifications","description":"List the user's MisarPost notifications (publish results, account problems and the like), newest first, with the unread count."},{"name":"mark_notification_read","description":"Mark one notification as read, e.g. after relaying it to the user. It drops out of the unread count."},{"name":"mark_all_notifications_read","description":"Mark every unread notification as read. There is no way to mark them unread again."},{"name":"list_webhooks","description":"List the user's outbound webhooks — the URLs MisarPost sends signed event payloads to — with their events and whether each is active. Signing secrets are never "},{"name":"create_webhook","description":"Register an outbound webhook: MisarPost will POST signed payloads for the chosen events to this URL from now on. The response carries the signing secret exactly"},{"name":"update_webhook","description":"Change an outbound webhook's URL or events, or pause/resume it with active. Only the fields passed change."},{"name":"delete_webhook","description":"Permanently remove an outbound webhook; events stop being delivered to its URL. Confirm with the user first."},{"name":"list_workspaces","description":"List the workspaces the user belongs to. When workspace scoping is on, posts, accounts and stats are limited to the active workspace."}],"toolCount":85,"toolsHash":"50d6bb9a4570ca9a05e27571540754585e9801ed36e31a63a248095ba8fab7ef","serverName":"misarpost","capabilities":["tools","prompts","resources"],"serverVersion":"3.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T00:32:37.356Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":863,"error":null,"detail":{"tools":[{"name":"list_connections","description":"List the user's active connected social accounts with their account ID, platform and display name. Call this before scheduling: schedule_post needs the connecte"},{"name":"list_publish_options","description":"Look up the destinations a connected account can publish into — Discord or Slack channels, Pinterest boards, Reddit post flairs, Hashnode or Medium publications"},{"name":"list_account_plugs","description":"Show the plugs (automatic follow-up actions — e.g. reposting or resharing a post once it passes a likes or reactions threshold, on X, Bluesky, Threads and Linke"},{"name":"configure_account_plug","description":"Turn a plug on or off for one connected account and set its configuration, replacing the plug's previous configuration. An activated plug later acts on that acc"},{"name":"list_posts","description":"List the user's scheduled and published posts, newest-scheduled first, 20 per page, with platform, status, scheduled/published time, post URL, tags and engageme"},{"name":"schedule_post","description":"Schedule a post to ONE connected account at a given time, or publish it immediately with scheduled_at=\"now\". This queues real content for a real audience — show"},{"name":"cancel_post","description":"Cancel a post that is still pending or queued, so it never publishes. Posts that are already publishing or published cannot be cancelled, and a cancelled post c"},{"name":"get_calendar","description":"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 tag"},{"name":"update_post","description":"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. Changing the time moves w"},{"name":"reply_to_post","description":"Post a public reply/comment on one of the user's ALREADY-PUBLISHED posts, on the platform it was published to. It goes live immediately and cannot be recalled f"},{"name":"revert_post","description":"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). This removes it from"},{"name":"revert_post_batch","description":"\"Delete everywhere\": delete every published post from one batch (one compose or repurpose action sent to several accounts) from all of its platforms. Each platf"},{"name":"share_post","description":"Create (or return the existing) public preview link for one of the user's posts. Anyone with the link can view the post without signing in, so get the user's ex"},{"name":"unshare_post","description":"Revoke a post's public preview link, so the old link stops working. Safe to call when no link exists."},{"name":"list_drafts","description":"List up to 50 draft post variants awaiting review (status draft or pending_review), newest first — including AI-generated drafts from generate_posts — with plat"},{"name":"review_drafts","description":"Approve or reject several drafts at once by ID. Approving does NOT schedule or publish anything — use schedule_post for that. Rejected drafts drop out of list_d"},{"name":"get_stats","description":"Get the account overview: connected accounts, posts queued, published this week and this month, drafts waiting, the last published post, the top performing post"},{"name":"get_analytics_trends","description":"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 "},{"name":"get_growth_overview","description":"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 forma"},{"name":"list_growth_opportunities","description":"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 "},{"name":"list_growth_playbooks","description":"Get per-platform growth playbooks for the user's connected platforms — cadence, format, timing and anti-spam guidance compiled from each platform's official cre"},{"name":"get_next_growth_opportunity","description":"Get the single best next content opportunity for the user's connected platforms and niches — a compact version of list_growth_opportunities. Returns `{ opportun"},{"name":"get_contentripple_usage","description":"Show how many ContentRipple repurposes the user has run this month, their monthly limit (null means unlimited), and their plan tier. Check before a large repurp"},{"name":"repurpose_content","description":"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 captio"},{"name":"update_content_variant","description":"Edit a saved ContentRipple variant's text (which marks it edited) and/or set its status. Use the variant id returned by repurpose_content. Publishes nothing."},{"name":"schedule_content_variant","description":"Schedule a saved ContentRipple variant (its text plus hashtags) to a connected account of the matching platform at a given time. Only these formats can be publi"},{"name":"fetch_content_feed","description":"Read an RSS or Atom feed and return its entries, so the user can pick one to repurpose with repurpose_content (source_type rss). Nothing is saved."},{"name":"parse_content_source","description":"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 wh"},{"name":"list_repurpose_history","description":"List past ContentRipple repurposes, newest first: each source (type, URL, title, core message) with its variants and, for variants that were scheduled, the post"},{"name":"delete_repurpose_source","description":"Delete one repurposed source and its variants from ContentRipple history. Posts already scheduled or published from it are not touched. This cannot be undone — "},{"name":"generate_posts","description":"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). Nothing is scheduled o"},{"name":"enhance_topic","description":"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. Saves no"},{"name":"generate_plan","description":"For a topic or brief, suggest hook options, the best posting time slots, and trending hashtags per platform. Saves nothing and schedules nothing; counts against"},{"name":"research_hashtags","description":"Build a tiered hashtag strategy for a keyword across platforms — broad, mid and niche tags plus each platform's algorithm signals. Saves nothing; counts against"},{"name":"get_optimization_insights","description":"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. Changes"},{"name":"generate_image","description":"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), a"},{"name":"get_trends","description":"Get the latest trending hashtags and content hooks for the user's TrendPulse niches, each with a snapshot id. Returns cached results under two hours old, or ref"},{"name":"queue_trend_drafts","description":"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)"},{"name":"schedule_trend_posts","description":"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 t"},{"name":"refresh_trends","description":"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. Ne"},{"name":"send_trend_digest","description":"Email the user their trend digest (top recent trends for their niches) now. It always goes to the account owner's own address — never anyone else. Returns `skip"},{"name":"get_trend_hooks","description":"Get the content hooks (opening lines and angles) for one trend snapshot — snapshot ids come from get_trends."},{"name":"get_trend_platform_content","description":"Get the per-platform content already generated for one trend snapshot — hashtags, plus title/description for YouTube and title/subtitle for Medium. Empty until "},{"name":"generate_trend_platform_content","description":"Generate per-platform content (hashtags, and titles where a platform needs them) for one trend snapshot, for the platforms asked (default: all seven). Regenerat"},{"name":"use_trend_platform_content","description":"Turn one platform's generated trend content into a draft post (generating it first if needed). The draft lands in the review queue (list_drafts) — nothing is pu"},{"name":"get_trend_performance","description":"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, comm"},{"name":"list_post_templates","description":"List the user's saved post templates, most recently updated first — reusable composer states with text, per-platform overrides, target accounts, platform settin"},{"name":"get_post_template","description":"Get one saved post template in full, by id — to reuse its text, accounts and settings in schedule_post."},{"name":"create_post_template","description":"Save a reusable post template: default text, optional per-platform text, target accounts, platform settings, media and first comment. Saving publishes nothing."},{"name":"update_post_template","description":"Change a saved post template. Only the fields passed are changed, and each one passed replaces the stored value entirely (e.g. account_ids replaces the whole li"},{"name":"delete_post_template","description":"Permanently delete a saved post template. Posts already scheduled from it are not affected. Confirm with the user first."},{"name":"list_post_tags","description":"List the user's post tags (id, name, colour). Tag ids filter list_posts and get_calendar and are applied with schedule_post or update_post."},{"name":"create_post_tag","description":"Create a post tag with a name and colour, for grouping posts by campaign or theme. Names must be unique per user."},{"name":"update_post_tag","description":"Rename and/or recolour a post tag. Posts keep the tag."},{"name":"delete_post_tag","description":"Permanently delete a post tag and remove it from every post that carries it. The posts themselves are not affected. Confirm with the user first."},{"name":"list_media","description":"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."},{"name":"delete_media","description":"Permanently delete a file from the media library and storage. Posts that already include its URL keep their own copy of the URL, but the file behind it is gone."},{"name":"list_video_avatars","description":"List the stock presenter avatars available for AI video generation. Pass an avatar's id to generate_video."},{"name":"list_video_voices","description":"List the stock voices available for AI video generation. Pass a voice's id to generate_video."},{"name":"create_video_script","description":"Write a short talking-presenter video script from a post's text. Saves nothing; counts against the monthly AI allowance. Show the script to the user before gene"},{"name":"generate_video","description":"Start rendering an AI presenter video from a script, avatar and voice. Returns a job id immediately; poll get_video_status until it completes. Rendering is mete"},{"name":"get_video_status","description":"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."},{"name":"list_personas","description":"List the user's PersonaForge personas — writing styles learned from a real account — plus extraction jobs still running and recent failures."},{"name":"get_persona","description":"Get one persona in full: its name, cover image, source account, and the style profile used when writing in it."},{"name":"create_persona","description":"Start learning a writing persona from recent posts — either a connected account (instagram, twitter, youtube) or a public profile (youtube, medium, mastodon, bl"},{"name":"get_persona_job_status","description":"Check a persona extraction job started by create_persona: its status, the new persona's id once done, or the error."},{"name":"rename_persona","description":"Rename a persona. Its learned voice is unchanged."},{"name":"delete_persona","description":"Permanently delete a persona and its learned voice. Recreating it means re-running create_persona. Confirm with the user first."},{"name":"generate_persona_post","description":"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. The post is saved for revi"},{"name":"list_persona_replies","description":"List AI-drafted replies to inbound comments and messages, by status (default pending — the ones waiting for review)."},{"name":"generate_persona_reply","description":"Draft a reply, in the user's trained voice, to an inbound comment or message on one of their posts. The draft is saved as pending for review (list_persona_repli"},{"name":"review_persona_reply","description":"Approve, edit or reject one pending AI-drafted reply. Approving or editing adds the final text to the draft queue (list_drafts) — it is not posted. Reject marks"},{"name":"get_voice_model","description":"Get the user's own trained voice model — tone breakdown, signature phrases, emoji patterns, average post length, preferred hooks, hashtag style and how many pos"},{"name":"train_voice_model","description":"Train (or retrain) the user's own voice model from their last 50 published posts. Replaces the existing voice model. Uses one AI text action from the plan's quo"},{"name":"generate_bio_variants","description":"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. Opt"},{"name":"list_competitor_personas","description":"List the competitor accounts the user has analysed, newest first, with posting frequency, content pillars, gaps, average engagement and best posting time."},{"name":"analyze_competitor","description":"Analyse a competitor's public X (Twitter) or LinkedIn account — posting frequency, content pillars, gaps, engagement and best posting time — and save it (re-ana"},{"name":"list_notifications","description":"List the user's MisarPost notifications (publish results, account problems and the like), newest first, with the unread count."},{"name":"mark_notification_read","description":"Mark one notification as read, e.g. after relaying it to the user. It drops out of the unread count."},{"name":"mark_all_notifications_read","description":"Mark every unread notification as read. There is no way to mark them unread again."},{"name":"list_webhooks","description":"List the user's outbound webhooks — the URLs MisarPost sends signed event payloads to — with their events and whether each is active. Signing secrets are never "},{"name":"create_webhook","description":"Register an outbound webhook: MisarPost will POST signed payloads for the chosen events to this URL from now on. The response carries the signing secret exactly"},{"name":"update_webhook","description":"Change an outbound webhook's URL or events, or pause/resume it with active. Only the fields passed change."},{"name":"delete_webhook","description":"Permanently remove an outbound webhook; events stop being delivered to its URL. Confirm with the user first."},{"name":"list_workspaces","description":"List the workspaces the user belongs to. When workspace scoping is on, posts, accounts and stats are limited to the active workspace."}],"toolCount":85,"toolsHash":"50d6bb9a4570ca9a05e27571540754585e9801ed36e31a63a248095ba8fab7ef","serverName":"misarpost","capabilities":["tools","prompts","resources"],"serverVersion":"3.0.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T17:34:16.193Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":866,"error":null,"detail":{"tools":[{"name":"list_connections","description":"List the user's active connected social accounts with their account ID, platform and display name. Call this before scheduling: schedule_post needs the connecte"},{"name":"list_publish_options","description":"Look up the destinations a connected account can publish into — Discord or Slack channels, Pinterest boards, Reddit post flairs, Hashnode or Medium publications"},{"name":"list_account_plugs","description":"Show the plugs (automatic follow-up actions — e.g. reposting or resharing a post once it passes a likes or reactions threshold, on X, Bluesky, Threads and Linke"},{"name":"configure_account_plug","description":"Turn a plug on or off for one connected account and set its configuration, replacing the plug's previous configuration. An activated plug later acts on that acc"},{"name":"list_posts","description":"List the user's scheduled and published posts, newest-scheduled first, 20 per page, with platform, status, scheduled/published time, post URL, tags and engageme"},{"name":"schedule_post","description":"Schedule a post to ONE connected account at a given time, or publish it immediately with scheduled_at=\"now\". This queues real content for a real audience — show"},{"name":"cancel_post","description":"Cancel a post that is still pending or queued, so it never publishes. Posts that are already publishing or published cannot be cancelled, and a cancelled post c"},{"name":"get_calendar","description":"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 tag"},{"name":"update_post","description":"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. Changing the time moves w"},{"name":"reply_to_post","description":"Post a public reply/comment on one of the user's ALREADY-PUBLISHED posts, on the platform it was published to. It goes live immediately and cannot be recalled f"},{"name":"revert_post","description":"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). This removes it from"},{"name":"revert_post_batch","description":"\"Delete everywhere\": delete every published post from one batch (one compose or repurpose action sent to several accounts) from all of its platforms. Each platf"},{"name":"share_post","description":"Create (or return the existing) public preview link for one of the user's posts. Anyone with the link can view the post without signing in, so get the user's ex"},{"name":"unshare_post","description":"Revoke a post's public preview link, so the old link stops working. Safe to call when no link exists."},{"name":"list_drafts","description":"List up to 50 draft post variants awaiting review (status draft or pending_review), newest first — including AI-generated drafts from generate_posts — with plat"},{"name":"review_drafts","description":"Approve or reject several drafts at once by ID. Approving does NOT schedule or publish anything — use schedule_post for that. Rejected drafts drop out of list_d"},{"name":"get_stats","description":"Get the account overview: connected accounts, posts queued, published this week and this month, drafts waiting, the last published post, the top performing post"},{"name":"get_analytics_trends","description":"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 "},{"name":"get_growth_overview","description":"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 forma"},{"name":"list_growth_opportunities","description":"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 "},{"name":"list_growth_playbooks","description":"Get per-platform growth playbooks for the user's connected platforms — cadence, format, timing and anti-spam guidance compiled from each platform's official cre"},{"name":"get_next_growth_opportunity","description":"Get the single best next content opportunity for the user's connected platforms and niches — a compact version of list_growth_opportunities. Returns `{ opportun"},{"name":"get_contentripple_usage","description":"Show how many ContentRipple repurposes the user has run this month, their monthly limit (null means unlimited), and their plan tier. Check before a large repurp"},{"name":"repurpose_content","description":"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 captio"},{"name":"update_content_variant","description":"Edit a saved ContentRipple variant's text (which marks it edited) and/or set its status. Use the variant id returned by repurpose_content. Publishes nothing."},{"name":"schedule_content_variant","description":"Schedule a saved ContentRipple variant (its text plus hashtags) to a connected account of the matching platform at a given time. Only these formats can be publi"},{"name":"fetch_content_feed","description":"Read an RSS or Atom feed and return its entries, so the user can pick one to repurpose with repurpose_content (source_type rss). Nothing is saved."},{"name":"parse_content_source","description":"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 wh"},{"name":"list_repurpose_history","description":"List past ContentRipple repurposes, newest first: each source (type, URL, title, core message) with its variants and, for variants that were scheduled, the post"},{"name":"delete_repurpose_source","description":"Delete one repurposed source and its variants from ContentRipple history. Posts already scheduled or published from it are not touched. This cannot be undone — "},{"name":"generate_posts","description":"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). Nothing is scheduled o"},{"name":"enhance_topic","description":"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. Saves no"},{"name":"generate_plan","description":"For a topic or brief, suggest hook options, the best posting time slots, and trending hashtags per platform. Saves nothing and schedules nothing; counts against"},{"name":"research_hashtags","description":"Build a tiered hashtag strategy for a keyword across platforms — broad, mid and niche tags plus each platform's algorithm signals. Saves nothing; counts against"},{"name":"get_optimization_insights","description":"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. Changes"},{"name":"generate_image","description":"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), a"},{"name":"get_trends","description":"Get the latest trending hashtags and content hooks for the user's TrendPulse niches, each with a snapshot id. Returns cached results under two hours old, or ref"},{"name":"queue_trend_drafts","description":"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)"},{"name":"schedule_trend_posts","description":"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 t"},{"name":"refresh_trends","description":"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. Ne"},{"name":"send_trend_digest","description":"Email the user their trend digest (top recent trends for their niches) now. It always goes to the account owner's own address — never anyone else. Returns `skip"},{"name":"get_trend_hooks","description":"Get the content hooks (opening lines and angles) for one trend snapshot — snapshot ids come from get_trends."},{"name":"get_trend_platform_content","description":"Get the per-platform content already generated for one trend snapshot — hashtags, plus title/description for YouTube and title/subtitle for Medium. Empty until "},{"name":"generate_trend_platform_content","description":"Generate per-platform content (hashtags, and titles where a platform needs them) for one trend snapshot, for the platforms asked (default: all seven). Regenerat"},{"name":"use_trend_platform_content","description":"Turn one platform's generated trend content into a draft post (generating it first if needed). The draft lands in the review queue (list_drafts) — nothing is pu"},{"name":"get_trend_performance","description":"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, comm"},{"name":"list_post_templates","description":"List the user's saved post templates, most recently updated first — reusable composer states with text, per-platform overrides, target accounts, platform settin"},{"name":"get_post_template","description":"Get one saved post template in full, by id — to reuse its text, accounts and settings in schedule_post."},{"name":"create_post_template","description":"Save a reusable post template: default text, optional per-platform text, target accounts, platform settings, media and first comment. Saving publishes nothing."},{"name":"update_post_template","description":"Change a saved post template. Only the fields passed are changed, and each one passed replaces the stored value entirely (e.g. account_ids replaces the whole li"},{"name":"delete_post_template","description":"Permanently delete a saved post template. Posts already scheduled from it are not affected. Confirm with the user first."},{"name":"list_post_tags","description":"List the user's post tags (id, name, colour). Tag ids filter list_posts and get_calendar and are applied with schedule_post or update_post."},{"name":"create_post_tag","description":"Create a post tag with a name and colour, for grouping posts by campaign or theme. Names must be unique per user."},{"name":"update_post_tag","description":"Rename and/or recolour a post tag. Posts keep the tag."},{"name":"delete_post_tag","description":"Permanently delete a post tag and remove it from every post that carries it. The posts themselves are not affected. Confirm with the user first."},{"name":"list_media","description":"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."},{"name":"delete_media","description":"Permanently delete a file from the media library and storage. Posts that already include its URL keep their own copy of the URL, but the file behind it is gone."},{"name":"list_video_avatars","description":"List the stock presenter avatars available for AI video generation. Pass an avatar's id to generate_video."},{"name":"list_video_voices","description":"List the stock voices available for AI video generation. Pass a voice's id to generate_video."},{"name":"create_video_script","description":"Write a short talking-presenter video script from a post's text. Saves nothing; counts against the monthly AI allowance. Show the script to the user before gene"},{"name":"generate_video","description":"Start rendering an AI presenter video from a script, avatar and voice. Returns a job id immediately; poll get_video_status until it completes. Rendering is mete"},{"name":"get_video_status","description":"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."},{"name":"list_personas","description":"List the user's PersonaForge personas — writing styles learned from a real account — plus extraction jobs still running and recent failures."},{"name":"get_persona","description":"Get one persona in full: its name, cover image, source account, and the style profile used when writing in it."},{"name":"create_persona","description":"Start learning a writing persona from recent posts — either a connected account (instagram, twitter, youtube) or a public profile (youtube, medium, mastodon, bl"},{"name":"get_persona_job_status","description":"Check a persona extraction job started by create_persona: its status, the new persona's id once done, or the error."},{"name":"rename_persona","description":"Rename a persona. Its learned voice is unchanged."},{"name":"delete_persona","description":"Permanently delete a persona and its learned voice. Recreating it means re-running create_persona. Confirm with the user first."},{"name":"generate_persona_post","description":"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. The post is saved for revi"},{"name":"list_persona_replies","description":"List AI-drafted replies to inbound comments and messages, by status (default pending — the ones waiting for review)."},{"name":"generate_persona_reply","description":"Draft a reply, in the user's trained voice, to an inbound comment or message on one of their posts. The draft is saved as pending for review (list_persona_repli"},{"name":"review_persona_reply","description":"Approve, edit or reject one pending AI-drafted reply. Approving or editing adds the final text to the draft queue (list_drafts) — it is not posted. Reject marks"},{"name":"get_voice_model","description":"Get the user's own trained voice model — tone breakdown, signature phrases, emoji patterns, average post length, preferred hooks, hashtag style and how many pos"},{"name":"train_voice_model","description":"Train (or retrain) the user's own voice model from their last 50 published posts. Replaces the existing voice model. Uses one AI text action from the plan's quo"},{"name":"generate_bio_variants","description":"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. Opt"},{"name":"list_competitor_personas","description":"List the competitor accounts the user has analysed, newest first, with posting frequency, content pillars, gaps, average engagement and best posting time."},{"name":"analyze_competitor","description":"Analyse a competitor's public X (Twitter) or LinkedIn account — posting frequency, content pillars, gaps, engagement and best posting time — and save it (re-ana"},{"name":"list_notifications","description":"List the user's MisarPost notifications (publish results, account problems and the like), newest first, with the unread count."},{"name":"mark_notification_read","description":"Mark one notification as read, e.g. after relaying it to the user. It drops out of the unread count."},{"name":"mark_all_notifications_read","description":"Mark every unread notification as read. There is no way to mark them unread again."},{"name":"list_webhooks","description":"List the user's outbound webhooks — the URLs MisarPost sends signed event payloads to — with their events and whether each is active. Signing secrets are never "},{"name":"create_webhook","description":"Register an outbound webhook: MisarPost will POST signed payloads for the chosen events to this URL from now on. The response carries the signing secret exactly"},{"name":"update_webhook","description":"Change an outbound webhook's URL or events, or pause/resume it with active. Only the fields passed change."},{"name":"delete_webhook","description":"Permanently remove an outbound webhook; events stop being delivered to its URL. Confirm with the user first."},{"name":"list_workspaces","description":"List the workspaces the user belongs to. When workspace scoping is on, posts, accounts and stats are limited to the active workspace."}],"toolCount":85,"toolsHash":"50d6bb9a4570ca9a05e27571540754585e9801ed36e31a63a248095ba8fab7ef","serverName":"misarpost","capabilities":["tools","prompts","resources"],"serverVersion":"3.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"list_connections","description":"List the user's active connected social accounts with their account ID, platform and display name. Call this before scheduling: schedule_post needs the connecte"},{"name":"list_publish_options","description":"Look up the destinations a connected account can publish into — Discord or Slack channels, Pinterest boards, Reddit post flairs, Hashnode or Medium publications"},{"name":"list_account_plugs","description":"Show the plugs (automatic follow-up actions — e.g. reposting or resharing a post once it passes a likes or reactions threshold, on X, Bluesky, Threads and Linke"},{"name":"configure_account_plug","description":"Turn a plug on or off for one connected account and set its configuration, replacing the plug's previous configuration. An activated plug later acts on that acc"},{"name":"list_posts","description":"List the user's scheduled and published posts, newest-scheduled first, 20 per page, with platform, status, scheduled/published time, post URL, tags and engageme"},{"name":"schedule_post","description":"Schedule a post to ONE connected account at a given time, or publish it immediately with scheduled_at=\"now\". This queues real content for a real audience — show"},{"name":"cancel_post","description":"Cancel a post that is still pending or queued, so it never publishes. Posts that are already publishing or published cannot be cancelled, and a cancelled post c"},{"name":"get_calendar","description":"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 tag"},{"name":"update_post","description":"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. Changing the time moves w"},{"name":"reply_to_post","description":"Post a public reply/comment on one of the user's ALREADY-PUBLISHED posts, on the platform it was published to. It goes live immediately and cannot be recalled f"},{"name":"revert_post","description":"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). This removes it from"},{"name":"revert_post_batch","description":"\"Delete everywhere\": delete every published post from one batch (one compose or repurpose action sent to several accounts) from all of its platforms. Each platf"},{"name":"share_post","description":"Create (or return the existing) public preview link for one of the user's posts. Anyone with the link can view the post without signing in, so get the user's ex"},{"name":"unshare_post","description":"Revoke a post's public preview link, so the old link stops working. Safe to call when no link exists."},{"name":"list_drafts","description":"List up to 50 draft post variants awaiting review (status draft or pending_review), newest first — including AI-generated drafts from generate_posts — with plat"},{"name":"review_drafts","description":"Approve or reject several drafts at once by ID. Approving does NOT schedule or publish anything — use schedule_post for that. Rejected drafts drop out of list_d"},{"name":"get_stats","description":"Get the account overview: connected accounts, posts queued, published this week and this month, drafts waiting, the last published post, the top performing post"},{"name":"get_analytics_trends","description":"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 "},{"name":"get_growth_overview","description":"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 forma"},{"name":"list_growth_opportunities","description":"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 "},{"name":"list_growth_playbooks","description":"Get per-platform growth playbooks for the user's connected platforms — cadence, format, timing and anti-spam guidance compiled from each platform's official cre"},{"name":"get_next_growth_opportunity","description":"Get the single best next content opportunity for the user's connected platforms and niches — a compact version of list_growth_opportunities. Returns `{ opportun"},{"name":"get_contentripple_usage","description":"Show how many ContentRipple repurposes the user has run this month, their monthly limit (null means unlimited), and their plan tier. Check before a large repurp"},{"name":"repurpose_content","description":"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 captio"},{"name":"update_content_variant","description":"Edit a saved ContentRipple variant's text (which marks it edited) and/or set its status. Use the variant id returned by repurpose_content. Publishes nothing."},{"name":"schedule_content_variant","description":"Schedule a saved ContentRipple variant (its text plus hashtags) to a connected account of the matching platform at a given time. Only these formats can be publi"},{"name":"fetch_content_feed","description":"Read an RSS or Atom feed and return its entries, so the user can pick one to repurpose with repurpose_content (source_type rss). Nothing is saved."},{"name":"parse_content_source","description":"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 wh"},{"name":"list_repurpose_history","description":"List past ContentRipple repurposes, newest first: each source (type, URL, title, core message) with its variants and, for variants that were scheduled, the post"},{"name":"delete_repurpose_source","description":"Delete one repurposed source and its variants from ContentRipple history. Posts already scheduled or published from it are not touched. This cannot be undone — "},{"name":"generate_posts","description":"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). Nothing is scheduled o"},{"name":"enhance_topic","description":"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. Saves no"},{"name":"generate_plan","description":"For a topic or brief, suggest hook options, the best posting time slots, and trending hashtags per platform. Saves nothing and schedules nothing; counts against"},{"name":"research_hashtags","description":"Build a tiered hashtag strategy for a keyword across platforms — broad, mid and niche tags plus each platform's algorithm signals. Saves nothing; counts against"},{"name":"get_optimization_insights","description":"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. Changes"},{"name":"generate_image","description":"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), a"},{"name":"get_trends","description":"Get the latest trending hashtags and content hooks for the user's TrendPulse niches, each with a snapshot id. Returns cached results under two hours old, or ref"},{"name":"queue_trend_drafts","description":"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)"},{"name":"schedule_trend_posts","description":"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 t"},{"name":"refresh_trends","description":"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. Ne"},{"name":"send_trend_digest","description":"Email the user their trend digest (top recent trends for their niches) now. It always goes to the account owner's own address — never anyone else. Returns `skip"},{"name":"get_trend_hooks","description":"Get the content hooks (opening lines and angles) for one trend snapshot — snapshot ids come from get_trends."},{"name":"get_trend_platform_content","description":"Get the per-platform content already generated for one trend snapshot — hashtags, plus title/description for YouTube and title/subtitle for Medium. Empty until "},{"name":"generate_trend_platform_content","description":"Generate per-platform content (hashtags, and titles where a platform needs them) for one trend snapshot, for the platforms asked (default: all seven). Regenerat"},{"name":"use_trend_platform_content","description":"Turn one platform's generated trend content into a draft post (generating it first if needed). The draft lands in the review queue (list_drafts) — nothing is pu"},{"name":"get_trend_performance","description":"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, comm"},{"name":"list_post_templates","description":"List the user's saved post templates, most recently updated first — reusable composer states with text, per-platform overrides, target accounts, platform settin"},{"name":"get_post_template","description":"Get one saved post template in full, by id — to reuse its text, accounts and settings in schedule_post."},{"name":"create_post_template","description":"Save a reusable post template: default text, optional per-platform text, target accounts, platform settings, media and first comment. Saving publishes nothing."},{"name":"update_post_template","description":"Change a saved post template. Only the fields passed are changed, and each one passed replaces the stored value entirely (e.g. account_ids replaces the whole li"},{"name":"delete_post_template","description":"Permanently delete a saved post template. Posts already scheduled from it are not affected. Confirm with the user first."},{"name":"list_post_tags","description":"List the user's post tags (id, name, colour). Tag ids filter list_posts and get_calendar and are applied with schedule_post or update_post."},{"name":"create_post_tag","description":"Create a post tag with a name and colour, for grouping posts by campaign or theme. Names must be unique per user."},{"name":"update_post_tag","description":"Rename and/or recolour a post tag. Posts keep the tag."},{"name":"delete_post_tag","description":"Permanently delete a post tag and remove it from every post that carries it. The posts themselves are not affected. Confirm with the user first."},{"name":"list_media","description":"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."},{"name":"delete_media","description":"Permanently delete a file from the media library and storage. Posts that already include its URL keep their own copy of the URL, but the file behind it is gone."},{"name":"list_video_avatars","description":"List the stock presenter avatars available for AI video generation. Pass an avatar's id to generate_video."},{"name":"list_video_voices","description":"List the stock voices available for AI video generation. Pass a voice's id to generate_video."},{"name":"create_video_script","description":"Write a short talking-presenter video script from a post's text. Saves nothing; counts against the monthly AI allowance. Show the script to the user before gene"},{"name":"generate_video","description":"Start rendering an AI presenter video from a script, avatar and voice. Returns a job id immediately; poll get_video_status until it completes. Rendering is mete"},{"name":"get_video_status","description":"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."},{"name":"list_personas","description":"List the user's PersonaForge personas — writing styles learned from a real account — plus extraction jobs still running and recent failures."},{"name":"get_persona","description":"Get one persona in full: its name, cover image, source account, and the style profile used when writing in it."},{"name":"create_persona","description":"Start learning a writing persona from recent posts — either a connected account (instagram, twitter, youtube) or a public profile (youtube, medium, mastodon, bl"},{"name":"get_persona_job_status","description":"Check a persona extraction job started by create_persona: its status, the new persona's id once done, or the error."},{"name":"rename_persona","description":"Rename a persona. Its learned voice is unchanged."},{"name":"delete_persona","description":"Permanently delete a persona and its learned voice. Recreating it means re-running create_persona. Confirm with the user first."},{"name":"generate_persona_post","description":"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. The post is saved for revi"},{"name":"list_persona_replies","description":"List AI-drafted replies to inbound comments and messages, by status (default pending — the ones waiting for review)."},{"name":"generate_persona_reply","description":"Draft a reply, in the user's trained voice, to an inbound comment or message on one of their posts. The draft is saved as pending for review (list_persona_repli"},{"name":"review_persona_reply","description":"Approve, edit or reject one pending AI-drafted reply. Approving or editing adds the final text to the draft queue (list_drafts) — it is not posted. Reject marks"},{"name":"get_voice_model","description":"Get the user's own trained voice model — tone breakdown, signature phrases, emoji patterns, average post length, preferred hooks, hashtag style and how many pos"},{"name":"train_voice_model","description":"Train (or retrain) the user's own voice model from their last 50 published posts. Replaces the existing voice model. Uses one AI text action from the plan's quo"},{"name":"generate_bio_variants","description":"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. Opt"},{"name":"list_competitor_personas","description":"List the competitor accounts the user has analysed, newest first, with posting frequency, content pillars, gaps, average engagement and best posting time."},{"name":"analyze_competitor","description":"Analyse a competitor's public X (Twitter) or LinkedIn account — posting frequency, content pillars, gaps, engagement and best posting time — and save it (re-ana"},{"name":"list_notifications","description":"List the user's MisarPost notifications (publish results, account problems and the like), newest first, with the unread count."},{"name":"mark_notification_read","description":"Mark one notification as read, e.g. after relaying it to the user. It drops out of the unread count."},{"name":"mark_all_notifications_read","description":"Mark every unread notification as read. There is no way to mark them unread again."},{"name":"list_webhooks","description":"List the user's outbound webhooks — the URLs MisarPost sends signed event payloads to — with their events and whether each is active. Signing secrets are never "},{"name":"create_webhook","description":"Register an outbound webhook: MisarPost will POST signed payloads for the chosen events to this URL from now on. The response carries the signing secret exactly"},{"name":"update_webhook","description":"Change an outbound webhook's URL or events, or pause/resume it with active. Only the fields passed change."},{"name":"delete_webhook","description":"Permanently remove an outbound webhook; events stop being delivered to its URL. Confirm with the user first."},{"name":"list_workspaces","description":"List the workspaces the user belongs to. When workspace scoping is on, posts, accounts and stats are limited to the active workspace."}],"package":null,"toolSurface":{"id":"ts_3z24j25bgf5f","endpointId":"ep_ze3vkbdr33mb","hash":"50d6bb9a4570ca9a05e27571540754585e9801ed36e31a63a248095ba8fab7ef","toolCount":85,"serverName":"misarpost","serverVersion":"3.0.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-19T00:35:19.604Z","lastSeenAt":"2026-10-24T06:26:46.703Z","observations":19,"toolNames":["list_connections","list_publish_options","list_account_plugs","configure_account_plug","list_posts","schedule_post","cancel_post","get_calendar","update_post","reply_to_post","revert_post","revert_post_batch","share_post","unshare_post","list_drafts","review_drafts","get_stats","get_analytics_trends","get_growth_overview","list_growth_opportunities","list_growth_playbooks","get_next_growth_opportunity","get_contentripple_usage","repurpose_content","update_content_variant","schedule_content_variant","fetch_content_feed","parse_content_source","list_repurpose_history","delete_repurpose_source","generate_posts","enhance_topic","generate_plan","research_hashtags","get_optimization_insights","generate_image","get_trends","queue_trend_drafts","schedule_trend_posts","refresh_trends","send_trend_digest","get_trend_hooks","get_trend_platform_content","generate_trend_platform_content","use_trend_platform_content","get_trend_performance","list_post_templates","get_post_template","create_post_template","update_post_template","delete_post_template","list_post_tags","create_post_tag","update_post_tag","delete_post_tag","list_media","delete_media","list_video_avatars","list_video_voices","create_video_script","generate_video","get_video_status","list_personas","get_persona","create_persona","get_persona_job_status","rename_persona","delete_persona","generate_persona_post","list_persona_replies","generate_persona_reply","review_persona_reply","get_voice_model","train_voice_model","generate_bio_variants","list_competitor_personas","analyze_competitor","list_notifications","mark_notification_read","mark_all_notifications_read","list_webhooks","create_webhook","update_webhook","delete_webhook","list_workspaces"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_ze3vkbdr33mb","url":"https://api.misar.io/post/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-22T20:26:40.824Z","auth":{"observedAt":"2026-10-22T20:26:40.927Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-22T20:26:40.951Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"misar.io","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-09-28T11:20:31.000Z","validTo":"2026-12-27T12:20:24.000Z","daysToExpiry":64,"sanCount":2,"fingerprint256":"1B:7B:7E:2B:3D:52:6F:F6:28:A6:B2:6B:BD:88:C1:A2:D1:9E:FA:EF:71:8F:A1:E0:54:CF:96:18:A0:FE:C9:B8"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.Misar-AI/misarpost-mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.Misar-AI%2Fmisarpost-mcp","firstSeenAt":"2026-10-19T00:22:47.539Z","fetchedAt":"2026-10-22T16:20:21.392Z","normalizedAt":"2026-10-22T16:20:21.392Z"}]},"firstSeenAt":"2026-10-19T00:22:47.539Z","updatedAt":"2026-10-24T06:31:31.514Z"}