MCP Tools
Complete reference for all MisarPost MCP server tools — inputs, outputs, and usage examples.
The MisarPost MCP server exposes 21 tools grouped into five areas: connections, posts, drafts, generation, and ContentRipple. Tool names below match the server implementation exactly.
Connections
list_connections
Lists all active connected social accounts for the authenticated user. Returns the account IDs needed for scheduling posts.
Input — none
Output — array of { id, platform, display_name, avatar_url, status }.
get_stats
Gets dashboard overview stats.
Input — none
Output — { connectedAccounts, queuedPosts, publishedThisWeek, publishedThisMonth, drafts, lastPost, topPerformingPost, avgEngagementRate }
Posts
list_posts
Lists the authenticated user's scheduled/published posts with optional status filter and pagination.
Input
| Field | Type | Required | Description |
|---|---|---|---|
status | string | No | Filter by status: pending, queued, publishing, published, failed, rejected |
page | number | No | Page number (default: 1, page size 20) |
Output — array of posts with id, platform, content_text, status, scheduled_at, published_at.
update_post
Edits a pending or queued post's content, scheduled time, or first comment.
Input
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | Post UUID |
contentText | string | No | New post text (max 5000 chars) |
scheduledAt | string | No | New ISO 8601 datetime with timezone offset |
firstComment | string | No | First comment text, or null to remove |
Output — the updated post object.
cancel_post
Cancels a pending or queued post.
Input
| Field | Type | Required | Description |
|---|---|---|---|
id | string | Yes | UUID of the post to cancel |
Output — { ok: true }
schedule_post
Schedules a new post to a connected social account.
Input
| Field | Type | Required | Description |
|---|---|---|---|
connectedAccountId | string | Yes | UUID of the connected account (use list_connections) |
platform | string | Yes | twitter, linkedin, instagram, threads, tiktok, bluesky |
contentText | string | Yes | Post content (max 5000 chars) |
scheduledAt | string | Yes | ISO 8601 datetime or "now" |
mediaUrls | string[] | No | Media attachment URLs (max 10) |
firstComment | string | No | First comment text (LinkedIn/Instagram, max 2200 chars) |
Output — created post object with id, status, and queue_job_id.
Drafts
list_drafts
Lists draft and pending-review post variants (generated from GitHub webhooks or AI). Returns up to 50.
Input — none
Output — array of { id, platform, caption, hashtags, tone, status, source }.
bulk_action_drafts
Approves or rejects multiple draft variants by their IDs.
Input
| Field | Type | Required | Description |
|---|---|---|---|
action | string | Yes | "approve" or "reject" |
ids | string[] | Yes | Array of draft variant UUIDs (at least 1) |
Output — { updated: number }
Generation
generate_posts
Generates AI post variants for one or more platforms. Returns up to 5 variants per platform, saved as drafts.
Input
| Field | Type | Required | Description |
|---|---|---|---|
topic | string | Yes | Topic or brief for the post (3–500 chars) |
platforms | string[] | Yes | Target platforms: twitter, linkedin, instagram, threads, tiktok, bluesky, youtube |
tone | string | No | professional, casual, technical, inspirational (default: professional) |
count | number | No | Variants per platform (1–5, default 3) |
Output — { variants: [{ platform, variants: [{ caption, hashtags }] }] }
enhance_topic
Rewrites a raw topic into a structured content brief: enhanced topic, suggested tone, content angles, and key messages.
Input
| Field | Type | Required | Description |
|---|---|---|---|
rawTopic | string | Yes | Raw topic or idea (3–500 chars) |
platforms | string[] | Yes | Target platforms (at least one) |
goal | string | No | awareness, engagement, conversion, viral (default: engagement) |
audience | string | No | Target audience description |
Output — { enhancedTopic, suggestedTone, contentAngles, keyMessages }
generate_plan
Generates hook options, best time slots, and trending hashtags for a topic across platforms.
Input
| Field | Type | Required | Description |
|---|---|---|---|
enhancedTopic | string | Yes | Enhanced topic or content brief (3–1000 chars) |
platforms | string[] | Yes | Target platforms (at least one) |
Output — { hooks, bestTimeSlots, trendingHashtags, suggestedImageStyle }
get_optimization_insights
Gets AI-powered optimization insights based on post performance from the last 30 days. Returns best time of day, best tone, top hashtags, and platform-specific insights.
Input
| Field | Type | Required | Description |
|---|---|---|---|
platform | string | No | Filter to a specific platform. Omit for all platforms. |
Output — { bestTimeOfDay, bestTone, topHashtags, promptSuggestions, platformInsights }
research_hashtags
Generates a tiered hashtag strategy for a keyword across platforms, including per-platform algorithm signals.
Input
| Field | Type | Required | Description |
|---|---|---|---|
keyword | string | Yes | Primary keyword or topic (2–200 chars) |
platforms | string[] | Yes | Target platforms (at least one) |
niche | string | No | Content niche (max 100 chars) |
goal | string | No | awareness, engagement, conversion, viral (default: awareness) |
Output — tiered hashtag strategy keyed by platform.
ContentRipple
get_contentripple_usage
Gets the current month's ContentRipple repurpose usage and limit for the authenticated user.
Input — none
Output — { count, limit, tier }
repurpose_content
Repurposes a URL or raw text into multiple platform-native content variants. Requires a ContentRipple plan allowance.
Input
| Field | Type | Required | Description |
|---|---|---|---|
sourceType | string | Yes | url, text, docforge, or github_release |
sourceUrl | string | Conditional | Required when sourceType is url |
rawContent | string | Conditional | Required when sourceType is text (max 20000 chars) |
platforms | string[] | No | Target platforms (omit for all supported platforms) |
tone | string | No | Writing tone (default: professional) |
Output — { source: { id, title, core_message }, variants: [{ platform, content, hashtags }] }
update_content_variant
Edits a generated ContentRipple content variant — updates its text or sets its status.
Input
| Field | Type | Required | Description |
|---|---|---|---|
variantId | string | Yes | Content variant UUID |
content | string | No | New variant text (max 20000 chars) |
status | string | No | generated, edited, queued, posted |
Output — { variant }
schedule_content_variant
Schedules a ContentRipple variant to a connected social account via the EchoForge queue.
Input
| Field | Type | Required | Description |
|---|---|---|---|
variantId | string | Yes | Content variant UUID to schedule |
connectedAccountId | string | Yes | UUID of the connected social account |
scheduledAt | string | Yes | ISO 8601 datetime for when to publish |
Output — { post }
get_trends
Fetches the latest trending hashtags and content hooks for the user's configured niches. Returns cached results (< 2 hours old) or triggers a live refresh.
Input — none
Output — { trends: [{ hashtag, niche, score, growth_pct, volume, lifecycle }], source }
queue_trend_drafts
Triggers the TrendPulse pipeline: takes trend snapshots and creates draft post variants in the EchoForge queue for each connected platform.
Input
| Field | Type | Required | Description |
|---|---|---|---|
snapshotIds | string[] | Yes | Array of trend snapshot UUIDs (1–3) |
Output — { queued: string[] }
get_calendar
Gets scheduled posts in a date range for the content calendar view.
Input
| Field | Type | Required | Description |
|---|---|---|---|
from | string | No | Start date YYYY-MM-DD (default: 7 days ago) |
to | string | No | End date YYYY-MM-DD (default: 30 days from now) |
Output — { posts }