{"$schema":"https://modelcontextprotocol.io/schemas/server-card/v1","name":"socialhive-posting","title":"SocialHive Posting","version":"1.0.0","description":"SocialHive Posting: draft, schedule and publish social posts across connected channels, generate brand-voice copy and images, read analytics, and propose automation workflows. Always call list_channels first and use real channel ids. Scheduling times are ISO 8601. Posts may land in pending_approval when the workspace requires approval. propose_workflow saves a DRAFT that a human must activate in Workflow Studio; it never runs on its own. AI tools are metered in workspace credits.","homepage":"https://platform.socialhive.pro","documentation":"https://platform.socialhive.pro/docs/agents","endpoint":"https://platform.socialhive.pro/api/mcp","transport":"streamable-http","protocolVersions":["2026-07-28","2025-11-25","2025-06-18","2025-03-26","2024-11-05","2024-10-07"],"authentication":{"type":"bearer","scheme":"api_key","header":"Authorization","prefix":"Bearer shp_","obtain":"https://platform.socialhive.pro/app/settings/developer"},"capabilities":{"tools":true,"resources":false,"prompts":false},"tools":[{"name":"list_channels","description":"List the social accounts connected to this workspace with their ids, platform, handle and health. Use channel ids when creating posts.","readOnly":true,"metered":false,"minRole":"viewer","inputSchema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"list_posts","description":"List posts in the workspace, newest first. Filter by status (draft, pending_approval, scheduled, published, failed) or free text.","readOnly":true,"metered":false,"minRole":"viewer","inputSchema":{"type":"object","properties":{"status":{"type":"string","enum":["draft","pending_approval","requires_edits","scheduled","publishing","published","failed"]},"q":{"type":"string","maxLength":120},"limit":{"default":20,"type":"integer","minimum":1,"maximum":50}},"required":["limit"],"additionalProperties":false}},{"name":"get_post","description":"Get one post with its body, per-channel variants, status and metrics.","readOnly":true,"metered":false,"minRole":"viewer","inputSchema":{"type":"object","properties":{"postId":{"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)$"}},"required":["postId"],"additionalProperties":false}},{"name":"get_analytics","description":"Workspace performance for the last N days: impressions, engagements, posts, follower change, top posts and recommended posting slots.","readOnly":true,"metered":false,"minRole":"viewer","inputSchema":{"type":"object","properties":{"days":{"default":30,"type":"integer","minimum":1,"maximum":365}},"required":["days"],"additionalProperties":false}},{"name":"list_sources","description":"List content data sources (RSS feeds, sitemaps, web pages, documents) with counts of unused items.","readOnly":true,"metered":false,"minRole":"viewer","inputSchema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"search_source_items","description":"Fetch recent items from one data source (title, url, excerpt). Use them as raw material for posts.","readOnly":true,"metered":false,"minRole":"viewer","inputSchema":{"type":"object","properties":{"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)$"},"q":{"type":"string","maxLength":120},"unusedOnly":{"default":true,"type":"boolean"},"limit":{"default":10,"type":"integer","minimum":1,"maximum":20}},"required":["sourceId","unusedOnly","limit"],"additionalProperties":false}},{"name":"list_workflows","description":"List automation workflows with status and last run.","readOnly":true,"metered":false,"minRole":"viewer","inputSchema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"list_node_types","description":"Catalog of workflow node types (triggers, sources, AI, control, destinations) with their config schemas. Read before calling propose_workflow.","readOnly":true,"metered":false,"minRole":"viewer","inputSchema":{"type":"object","properties":{"group":{"type":"string","enum":["trigger","source","ai","control","dest"]}},"additionalProperties":false}},{"name":"generate_text","description":"Write social copy in the workspace brand voice. Returns one or more variants. Metered (free daily allowance, then 1 credit).","readOnly":true,"metered":true,"minRole":"member","inputSchema":{"type":"object","properties":{"topic":{"type":"string","minLength":3,"maxLength":2000},"platforms":{"default":["linkedin"],"minItems":1,"maxItems":6,"type":"array","items":{"type":"string","enum":["linkedin","x","bluesky","mastodon","instagram","facebook","threads","tiktok","youtube","pinterest","gbp"]}},"variants":{"default":1,"type":"integer","minimum":1,"maximum":3},"format":{"default":"single","type":"string","enum":["single","thread"]},"language":{"type":"string","maxLength":40}},"required":["topic","platforms","variants","format"],"additionalProperties":false}},{"name":"adapt_post","description":"Rewrite existing copy for another platform's length, tone and conventions. Metered.","readOnly":true,"metered":true,"minRole":"member","inputSchema":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":8000},"platform":{"type":"string","enum":["linkedin","x","bluesky","mastodon","instagram","facebook","threads","tiktok","youtube","pinterest","gbp"]}},"required":["text","platform"],"additionalProperties":false}},{"name":"generate_image","description":"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.","readOnly":false,"metered":true,"minRole":"member","inputSchema":{"type":"object","properties":{"prompt":{"type":"string","minLength":3,"maxLength":2000},"aspectRatio":{"default":"1:1","type":"string","enum":["1:1","4:5","16:9","9:16"]},"quality":{"default":"free","type":"string","enum":["free","fast","hq"]},"alt":{"type":"string","maxLength":300}},"required":["prompt","aspectRatio","quality"],"additionalProperties":false}},{"name":"create_post","description":"Create a post. Without scheduledAt it is saved as a draft. With scheduledAt (ISO 8601) it is scheduled — or queued for approval when the workspace requires it. Each channelId gets the body unless a per-channel override is given.","readOnly":false,"metered":false,"minRole":"member","inputSchema":{"type":"object","properties":{"title":{"default":"","type":"string","maxLength":200},"body":{"type":"string","minLength":1,"maxLength":20000},"thread":{"default":[],"maxItems":50,"type":"array","items":{"type":"string","maxLength":20000}},"channelIds":{"minItems":1,"maxItems":10,"type":"array","items":{"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)$"}},"overrides":{"default":{},"type":"object","propertyNames":{"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)$"},"additionalProperties":{"type":"string","maxLength":20000}},"mediaIds":{"default":[],"maxItems":10,"type":"array","items":{"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)$"}},"tags":{"default":[],"maxItems":20,"type":"array","items":{"type":"string","maxLength":40}},"scheduledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["title","body","thread","channelIds","overrides","mediaIds","tags"],"additionalProperties":false}},{"name":"schedule_post","description":"Schedule an existing draft (or move a scheduled post) to an ISO 8601 time. Approval policy still applies.","readOnly":false,"metered":false,"minRole":"member","inputSchema":{"type":"object","properties":{"postId":{"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)$"},"scheduledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"}},"required":["postId","scheduledAt"],"additionalProperties":false}},{"name":"publish_post","description":"Publish an existing draft now (queues it immediately). Approval policy still applies — the post may land in pending_approval instead.","readOnly":false,"metered":false,"minRole":"member","inputSchema":{"type":"object","properties":{"postId":{"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)$"}},"required":["postId"],"additionalProperties":false}},{"name":"propose_workflow","description":"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.","readOnly":false,"metered":false,"minRole":"member","inputSchema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":120},"description":{"default":"","type":"string","maxLength":500},"graph":{"type":"object","properties":{"nodes":{"maxItems":60,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":64},"type":{"type":"string","minLength":1},"label":{"type":"string","maxLength":80},"position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"additionalProperties":false},"config":{"default":{},"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["id","type","position","config"],"additionalProperties":false}},"edges":{"maxItems":120,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":80},"source":{"type":"string","minLength":1},"target":{"type":"string","minLength":1},"sourceHandle":{"type":["string","null"]},"targetHandle":{"type":["string","null"]},"label":{"type":"string","maxLength":40}},"required":["id","source","target"],"additionalProperties":false}},"config":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["nodes","edges"],"additionalProperties":false}},"required":["name","description","graph"],"additionalProperties":false}},{"name":"admin_get_realtime_visitors","description":"Get realtime active visitors, active pages, and country distribution for socialhive.pro from Google Analytics 4.","readOnly":true,"metered":false,"minRole":"admin","inputSchema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"admin_get_gsc_search_performance","description":"Get Google Search Console organic search queries, impressions, clicks, CTR, and top performing pages for socialhive.pro.","readOnly":true,"metered":false,"minRole":"admin","inputSchema":{"type":"object","properties":{"days":{"default":28,"type":"integer","minimum":1,"maximum":90}},"additionalProperties":false}}],"related":{"openapi":"https://platform.socialhive.pro/api/openapi.json","skill":"https://platform.socialhive.pro/.well-known/agent-skill.md","llms":"https://platform.socialhive.pro/llms.txt"},"policies":{"dataHandling":"Tools act only inside the API key's workspace. Provider keys (NVIDIA, Fal) and social tokens never leave the server.","humanInTheLoop":"propose_workflow creates drafts that require human activation. Posts respect the workspace approval policy."}}