MCP Server

SocialHive

pro.socialhive/platform
Marketing & Advertising Social Media Public & reachable MCP 2025-11-25

What this MCP does

Creates, adapts, schedules, and publishes social media content while managing media, connected channels, workflows, and performance analytics.

adapt_post
Adapt post
Rewrite existing copy for another platform's length, tone and conventions. Metered.
Input schema
{'type': 'object', 'required': ['text', 'platform'], 'properties': {'text': {'type': 'string', 'maxLength': 8000, 'minLength': 1}, 'platform': {'enum': ['linkedin', 'x', 'bluesky', 'mastodon', 'instagram', 'facebook', 'threads', 'tiktok', 'youtube', 'pinterest', 'gbp'], 'type': 'string'}}}
Output schema
{'type': 'object', 'required': ['adaptations'], 'properties': {'adaptations': {'type': 'object'}}, 'description': 'Adapted post copy keyed by channel platform'}
create_article
Create article
Save a long-form article or blog post (e.g. generated by ChatGPT, Claude, or an LLM) into the workspace article library. Quota: maximum 10 articles per month via MCP. Can be linked into syndication workflows or published to CMS targets.
Input schema
{'type': 'object', 'required': ['title', 'body', 'status'], 'properties': {'body': {'type': 'string', 'minLength': 1, 'description': 'Full Markdown body of the article'}, 'title': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Article headline or title'}, 'status': {'enum': ['outline', 'drafting', 'ready', 'published'], 'type': 'string', 'default': 'ready', 'description': 'Article status: ready (default), drafting, outline, or published'}, 'summary': {'type': 'string', 'maxLength': 2000, 'description': 'Brief synopsis, excerpt, or meta description for SEO and social snippets'}, 'seoTitle': {'type': 'string', 'maxLength': 150, 'description': 'Optional SEO title'}}}
Output schema
{'type': 'object', 'required': ['id', 'title', 'status', 'words'], 'properties': {'id': {'type': 'string', 'description': 'Article ID'}, 'title': {'type': 'string', 'description': 'Article title'}, 'words': {'type': 'number', 'description': 'Word count'}, 'status': {'type': 'string'}, 'reviewUrl': {'type': 'string', 'description': 'URL to view or edit the article in SocialHive'}, 'monthlyRemaining': {'type': 'number', 'description': 'Remaining articles allowed via MCP this month (out of 10)'}}, 'description': 'Created article details'}
create_post
Create post
Create a post for LinkedIn, X, Instagram, etc. Supports text copy, image attachments (single or multi-image gallery), and video. For image-only or video-only posts, body can be left empty as long as mediaIds has at least one asset. Without scheduledAt it is saved as a draft. With scheduledAt (ISO 8601) it is scheduled.
Input schema
{'type': 'object', 'required': ['channelIds'], 'properties': {'body': {'type': 'string', 'maxLength': 20000, 'description': 'Post copy text (optional if mediaIds is provided)'}, 'tags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 40}, 'maxItems': 20}, 'title': {'type': 'string', 'maxLength': 200}, 'thread': {'type': 'array', 'items': {'type': 'string', 'maxLength': 20000}, 'maxItems': 50}, 'mediaIds': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 10, 'description': 'Array of media asset UUIDs returned by import_media or list_media'}, 'overrides': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string', 'maxLength': 20000}}, 'channelIds': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 10, 'minItems': 1, 'description': "Destination channel UUIDs or platform names (e.g. ['linkedin', 'instagram'])"}, 'scheduledAt': {'type': 'string', 'description': "ISO 8601 UTC timestamp to schedule the post (e.g. '2026-09-21T11:00:00Z'). Without this, saves as a draft."}}}
Output schema
{'type': 'object', 'required': ['id', 'status'], 'properties': {'id': {'type': 'string', 'description': 'Post ID'}, 'status': {'type': 'string'}, 'channels': {'type': 'array', 'items': {'type': 'string'}}}, 'description': 'Created post draft or queue entry'}
generate_image
Generate image
Generate an image into the media library and return its asset id (attach with create_post.mediaIds). quality 'free' uses the free provider; 'hq' costs credits.
Input schema
{'type': 'object', 'required': ['prompt'], 'properties': {'alt': {'type': 'string', 'maxLength': 300}, 'prompt': {'type': 'string', 'maxLength': 2000, 'minLength': 3}, 'quality': {'enum': ['free', 'fast', 'hq'], 'type': 'string'}, 'aspectRatio': {'enum': ['1:1', '4:5', '16:9', '9:16'], 'type': 'string'}}}
Output schema
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'Public URL of generated image'}, 'mediaId': {'type': 'string'}}, 'description': 'Generated image media details'}
generate_text
Generate text
Write social copy in the workspace brand voice. Returns one or more variants. Metered (free daily allowance, then 1 credit).
Input schema
{'type': 'object', 'required': ['topic'], 'properties': {'topic': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'format': {'enum': ['single', 'thread'], 'type': 'string'}, 'language': {'type': 'string', 'maxLength': 40}, 'variants': {'type': 'integer', 'maximum': 3, 'minimum': 1}, 'platforms': {'type': 'array', 'items': {'enum': ['linkedin', 'x', 'bluesky', 'mastodon', 'instagram', 'facebook', 'threads', 'tiktok', 'youtube', 'pinterest', 'gbp'], 'type': 'string'}, 'maxItems': 6, 'minItems': 1}}}
Output schema
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'Generated copy'}, 'model': {'type': 'string'}, 'tokens': {'type': 'number'}}, 'description': 'Generated post copy and metadata'}
get_analytics
Get analytics
Workspace performance for the last N days: impressions, engagements, posts, follower change, top posts and recommended posting slots.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'days': {'type': 'integer', 'maximum': 365, 'minimum': 1}}}
Output schema
{'type': 'object', 'required': ['timezone', 'summary', 'topPosts'], 'properties': {'summary': {'type': 'object'}, 'timezone': {'type': 'string'}, 'topPosts': {'type': 'array', 'items': {'type': 'object'}}, 'recommendedSlots': {'type': 'array', 'items': {'type': 'object'}}}, 'description': 'Aggregated performance summary and recommended posting slots'}
get_article
Get article
Get full details and Markdown body of an article in the workspace library by its ID.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['articleId'], 'properties': {'articleId': {'type': 'string', 'description': 'Article UUID'}}}
Output schema
{'type': 'object', 'required': ['id', 'title', 'body', 'status', 'words'], 'properties': {'id': {'type': 'string'}, 'body': {'type': 'string'}, 'title': {'type': 'string'}, 'words': {'type': 'number'}, 'status': {'type': 'string'}, 'summary': {'type': 'string', 'nullable': True}, 'seoTitle': {'type': 'string', 'nullable': True}, 'createdAt': {'type': 'string'}, 'reviewUrl': {'type': 'string'}, 'updatedAt': {'type': 'string'}}, 'description': 'Full article details with Markdown body'}
get_connected_social_accounts
Get connected social accounts
Get all connected social media accounts (LinkedIn, X, YouTube, Instagram, Facebook, TikTok, Threads) for the workspace with account IDs, platforms, connection status, and automationEnabled status.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {}}
Output schema
{'type': 'object', 'properties': {'result': {'type': 'object', 'description': 'Structured output from tool execution'}}, 'description': 'Output payload for get_connected_social_accounts'}
get_post
Get post
Get one post with its body, per-channel variants, status and metrics.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['postId'], 'properties': {'postId': {'type': 'string'}}}
Output schema
{'type': 'object', 'required': ['id', 'body', 'status', 'variants'], 'properties': {'id': {'type': 'string'}, 'body': {'type': 'string'}, 'title': {'type': 'string'}, 'status': {'type': 'string'}, 'metrics': {'type': 'object', 'nullable': True}, 'variants': {'type': 'array', 'items': {'type': 'object'}}, 'publishedAt': {'type': 'string', 'nullable': True}, 'scheduledAt': {'type': 'string', 'nullable': True}}, 'description': 'Full post details with variants and metrics'}
import_media
Import media
Import an image or video from an external public URL into the workspace media library and return its asset id (to attach with create_post.mediaIds).
Open world
Input schema
{'type': 'object', 'required': ['url'], 'properties': {'alt': {'type': 'string', 'maxLength': 400}, 'url': {'type': 'string', 'format': 'uri'}, 'mime': {'type': 'string', 'maxLength': 50}, 'label': {'type': 'string', 'maxLength': 120}}}
Output schema
{'type': 'object', 'required': ['assetId', 'kind', 'url'], 'properties': {'url': {'type': 'string'}, 'kind': {'type': 'string'}, 'assetId': {'type': 'string'}}, 'description': 'Imported media asset details'}
list_articles
List articles
List long-form articles in the workspace library with their id, title, status, word count, summary, and last updated time.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Max number of articles to return (default 20)'}, 'status': {'enum': ['outline', 'drafting', 'ready', 'published'], 'type': 'string', 'description': 'Filter by article status'}}}
Output schema
{'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'status', 'words'], 'properties': {'id': {'type': 'string', 'description': 'Article ID'}, 'url': {'type': 'string'}, 'title': {'type': 'string', 'description': 'Article title'}, 'words': {'type': 'number', 'description': 'Word count'}, 'status': {'type': 'string', 'description': 'Status (outline, drafting, ready, published)'}, 'summary': {'type': 'string', 'nullable': True, 'description': 'Summary or brief'}, 'createdAt': {'type': 'string'}, 'updatedAt': {'type': 'string'}}}, 'description': 'List of articles in the workspace library'}
list_channels
List channels
List the social accounts connected to this workspace with their ids, platform, handle, health, and automationEnabled status. Use channel ids when creating posts.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {}}
Output schema
{'type': 'array', 'items': {'type': 'object', 'required': ['id', 'platform', 'status'], 'properties': {'id': {'type': 'string', 'description': 'Channel ID'}, 'kind': {'type': 'string', 'description': 'Channel kind'}, 'handle': {'type': 'string', 'description': 'Account handle'}, 'status': {'type': 'string', 'description': 'Status (active, disconnected, error)'}, 'platform': {'type': 'string', 'description': 'Platform name (linkedin, x, instagram, etc.)'}, 'followers': {'type': 'number', 'description': 'Follower count'}, 'displayName': {'type': 'string', 'description': 'Display name'}}}, 'description': 'Array of connected channels with status, platform, and follower counts'}
list_media
List media
List or search media assets (images, videos) in the workspace media library. Returns asset ids to attach with create_post.mediaIds.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'q': {'type': 'string', 'maxLength': 100}, 'kind': {'enum': ['image', 'video', 'document'], 'type': 'string'}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1}}}
Output schema
{'type': 'object', 'required': ['assets'], 'properties': {'assets': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'kind', 'url'], 'properties': {'id': {'type': 'string'}, 'alt': {'type': 'string'}, 'url': {'type': 'string'}, 'kind': {'type': 'string'}, 'label': {'type': 'string'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'durationSec': {'type': 'number'}}}}}, 'description': 'List of workspace media assets'}
list_node_types
List node types
Catalog of workflow node types (triggers, sources, AI, control, destinations) with their config schemas. Read before calling propose_workflow.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'group': {'enum': ['trigger', 'source', 'ai', 'control', 'dest'], 'type': 'string'}}}
Output schema
{'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'category'], 'properties': {'id': {'type': 'string'}, 'title': {'type': 'string'}, 'category': {'type': 'string'}}}, 'description': 'Available workflow node types'}
list_posts
List posts
List posts in the workspace, newest first. Filter by status (draft, pending_approval, scheduled, published, failed) or free text.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'q': {'type': 'string', 'maxLength': 120}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1}, 'status': {'enum': ['draft', 'pending_approval', 'requires_edits', 'scheduled', 'publishing', 'published', 'failed'], 'type': 'string'}}}
Output schema
{'type': 'array', 'items': {'type': 'object', 'required': ['id', 'status', 'channels'], 'properties': {'id': {'type': 'string', 'description': 'Post ID'}, 'title': {'type': 'string', 'description': 'Post title'}, 'status': {'type': 'string', 'description': 'Status'}, 'excerpt': {'type': 'string'}, 'channels': {'type': 'array', 'items': {'type': 'string'}}, 'publishedAt': {'type': 'string', 'nullable': True}, 'scheduledAt': {'type': 'string', 'nullable': True}}}, 'description': 'List of posts matching filter criteria'}
list_sources
List sources
List content data sources (RSS feeds, sitemaps, web pages, documents) with counts of unused items.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {}}
Output schema
{'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'type': {'type': 'string'}, 'unusedItems': {'type': 'number'}}}, 'description': 'Connected content ingestion sources'}
list_workflows
List workflows
List automation workflows with status and last run.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {}}
Output schema
{'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'active'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'active': {'type': 'boolean'}, 'runsCount': {'type': 'number'}}}, 'description': 'Automation workflows in the workspace'}
propose_workflow
Propose workflow
Propose an automation workflow as a graph (nodes + edges). The graph is validated and saved as a DRAFT version that a human must review and activate in Workflow Studio; it never runs on its own. Call list_node_types first for valid node types and config schemas.
Input schema
{'type': 'object', 'required': ['name', 'description', 'graph'], 'properties': {'name': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'graph': {'type': 'object', 'required': ['nodes', 'edges'], 'properties': {'edges': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'source', 'target'], 'properties': {'id': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'label': {'type': 'string', 'maxLength': 40}, 'source': {'type': 'string', 'minLength': 1}, 'target': {'type': 'string', 'minLength': 1}, 'sourceHandle': {'type': ['string', 'null']}, 'targetHandle': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'maxItems': 120}, 'nodes': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'type', 'position', 'config'], 'properties': {'id': {'type': 'string', 'maxLength': 64, 'minLength': 1}, 'type': {'type': 'string', 'minLength': 1}, 'label': {'type': 'string', 'maxLength': 80}, 'config': {'type': 'object', 'default': {}, 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'position': {'type': 'object', 'required': ['x', 'y'], 'properties': {'x': {'type': 'number'}, 'y': {'type': 'number'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'maxItems': 60}, 'config': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}}, 'additionalProperties': False}, 'description': {'type': 'string', 'default': '', 'maxLength': 500}}}
Output schema
{'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string', 'description': 'Workflow ID'}, 'url': {'type': 'string'}, 'name': {'type': 'string'}}, 'description': 'Created draft workflow'}
publish_post
Publish post
Publish an existing draft now (queues it immediately). Approval policy still applies — the post may land in pending_approval instead.
Open world
Input schema
{'type': 'object', 'required': ['postId'], 'properties': {'postId': {'type': 'string', 'description': 'Post UUID to publish'}}}
Output schema
{'type': 'object', 'required': ['id', 'status'], 'properties': {'id': {'type': 'string', 'description': 'Post ID'}, 'status': {'type': 'string'}}, 'description': 'Publication result'}
schedule_post
Schedule post
Schedule an existing draft (or move a scheduled post) to an ISO 8601 time. Approval policy still applies.
Input schema
{'type': 'object', 'required': ['postId', 'scheduledAt'], 'properties': {'postId': {'type': 'string', 'description': 'Post UUID'}, 'scheduledAt': {'type': 'string', 'description': 'ISO 8601 UTC datetime string'}}}
Output schema
{'type': 'object', 'required': ['id', 'scheduledAt', 'status'], 'properties': {'id': {'type': 'string', 'description': 'Post ID'}, 'status': {'type': 'string'}, 'scheduledAt': {'type': 'string', 'description': 'Scheduled ISO timestamp'}}, 'description': 'Confirmed schedule details'}
search_source_items
Search source items
Fetch recent items from one data source (title, url, excerpt). Use them as raw material for posts.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['sourceId'], 'properties': {'q': {'type': 'string', 'maxLength': 120}, 'limit': {'type': 'integer', 'maximum': 20, 'minimum': 1}, 'sourceId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'unusedOnly': {'type': 'boolean'}}}
Output schema
{'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'title': {'type': 'string'}, 'publishedAt': {'type': 'string', 'nullable': True}}}, 'description': 'Matching ingested source items'}
Changed
get_connected_social_accounts
Oct. 1, 2026, 2:42 a.m.
Changed
list_channels
Oct. 1, 2026, 2:42 a.m.
Added
propose_workflow
Sept. 25, 2026, 2:40 a.m.
Added
create_article
Sept. 25, 2026, 2:40 a.m.
Added
publish_post
Sept. 25, 2026, 2:40 a.m.
Added
schedule_post
Sept. 25, 2026, 2:40 a.m.
Added
create_post
Sept. 25, 2026, 2:40 a.m.
Added
import_media
Sept. 25, 2026, 2:40 a.m.
Added
list_media
Sept. 25, 2026, 2:40 a.m.
Added
generate_image
Sept. 25, 2026, 2:40 a.m.
Added
adapt_post
Sept. 25, 2026, 2:40 a.m.
Added
generate_text
Sept. 25, 2026, 2:40 a.m.
Added
list_node_types
Sept. 25, 2026, 2:40 a.m.
Added
list_workflows
Sept. 25, 2026, 2:40 a.m.
Added
search_source_items
Sept. 25, 2026, 2:40 a.m.
Added
list_sources
Sept. 25, 2026, 2:40 a.m.
Added
get_analytics
Sept. 25, 2026, 2:40 a.m.
Added
get_article
Sept. 25, 2026, 2:40 a.m.
Added
list_articles
Sept. 25, 2026, 2:40 a.m.
Added
get_post
Sept. 25, 2026, 2:40 a.m.
Added
list_posts
Sept. 25, 2026, 2:40 a.m.
Added
get_connected_social_accounts
Sept. 25, 2026, 2:40 a.m.
Added
list_channels
Sept. 25, 2026, 2:40 a.m.