Koskamo

SocialHive MCP

An official MCP server for SocialHive that enables agents to schedule and automate social media posts across multiple platforms including LinkedIn, X, and Instagram. It supports AI-generated copy and images, workflow automation via a node-based studio, and provides analytics with learned best times. The server operates within the user's workspace using a specific API key for authentication.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

SocialHive MCP logo, by SocialHiveVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by SocialHive
You need:workspace API key
MCP endpoint (Streamable HTTP)
https://platform.socialhive.pro/api/mcp
Vendor documentation

What its tools do

24 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

24 of 24 have a description · 24 of 24 declare behavior hints · 8 of 19 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to socialhive.pro ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Publish posts to LinkedIn, X, and Instagram from one workspace
  • Generate AI copy and images using brand voice
  • Create workflow drafts using the node-based Workflow Studio
  • Analyze performance with learned best posting times

Source and maintenance

Vendor evidenceRegistry 1.0.0
Maintenance checked

Protocol and capabilities

Server
socialhive-posting 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
24 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

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.

Tools

24 advertised

list_channels — List channels
Advertised by the server during the last successful anonymous check.
Advertised read-only

List the social accounts connected to this workspace with their ids, platform, handle, health, and automationEnabled status. Use channel ids when creating posts.

list_channels input schema
{
  "type": "object",
  "properties": {}
}
list_channels 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_channels annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_connected_social_accounts — Get connected social accounts
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

get_connected_social_accounts input schema
{
  "type": "object",
  "properties": {}
}
get_connected_social_accounts output schema
{
  "type": "object",
  "properties": {
    "result": {
      "type": "object",
      "description": "Structured output from tool execution"
    }
  },
  "description": "Output payload for get_connected_social_accounts"
}
get_connected_social_accounts annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_posts — List posts
Advertised by the server during the last successful anonymous check.
Advertised read-only

List posts in the workspace, newest first. Filter by status (draft, pending_approval, scheduled, published, failed) or free text.

list_posts 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"
    }
  }
}
list_posts 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_posts annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_post — Get post
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get one post with its body, per-channel variants, status and metrics.

get_post input schema
{
  "type": "object",
  "required": [
    "postId"
  ],
  "properties": {
    "postId": {
      "type": "string"
    }
  }
}
get_post 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"
}
get_post annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_articles — List articles
Advertised by the server during the last successful anonymous check.
Advertised read-only

List long-form articles in the workspace library with their id, title, status, word count, summary, and last updated time.

list_articles 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"
    }
  }
}
list_articles 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_articles annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_article — Get article
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get full details and Markdown body of an article in the workspace library by its ID.

get_article input schema
{
  "type": "object",
  "required": [
    "articleId"
  ],
  "properties": {
    "articleId": {
      "type": "string",
      "description": "Article UUID"
    }
  }
}
get_article 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_article annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_analytics — Get analytics
Advertised by the server during the last successful anonymous check.
Advertised read-only

Workspace performance for the last N days: impressions, engagements, posts, follower change, top posts and recommended posting slots.

get_analytics input schema
{
  "type": "object",
  "properties": {
    "days": {
      "type": "integer",
      "maximum": 365,
      "minimum": 1
    }
  }
}
get_analytics 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_analytics annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_sources — List sources
Advertised by the server during the last successful anonymous check.
Advertised read-only

List content data sources (RSS feeds, sitemaps, web pages, documents) with counts of unused items.

list_sources input schema
{
  "type": "object",
  "properties": {}
}
list_sources 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_sources annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_source_items — Search source items
Advertised by the server during the last successful anonymous check.
Advertised read-only

Fetch recent items from one data source (title, url, excerpt). Use them as raw material for posts.

search_source_items 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"
    }
  }
}
search_source_items 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"
}
search_source_items annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_workflows — List workflows
Advertised by the server during the last successful anonymous check.
Advertised read-only

List automation workflows with status and last run.

list_workflows input schema
{
  "type": "object",
  "properties": {}
}
list_workflows 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"
}
list_workflows annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_node_types — List node types
Advertised by the server during the last successful anonymous check.
Advertised read-only

Catalog of workflow node types (triggers, sources, AI, control, destinations) with their config schemas. Read before calling propose_workflow.

list_node_types input schema
{
  "type": "object",
  "properties": {
    "group": {
      "enum": [
        "trigger",
        "source",
        "ai",
        "control",
        "dest"
      ],
      "type": "string"
    }
  }
}
list_node_types 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_node_types annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
generate_text — Generate text
Advertised by the server during the last successful anonymous check.

Write social copy in the workspace brand voice. Returns one or more variants. Metered (free daily allowance, then 1 credit).

generate_text 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
    }
  }
}
generate_text 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"
}
generate_text annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
adapt_post — Adapt post
Advertised by the server during the last successful anonymous check.

Rewrite existing copy for another platform's length, tone and conventions. Supports adapting to LinkedIn, X, and other networks. Metered.

adapt_post input schema
{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "maxLength": 8000,
      "minLength": 1,
      "description": "Source post copy to adapt"
    },
    "platform": {
      "enum": [
        "linkedin",
        "x",
        "bluesky",
        "mastodon",
        "instagram",
        "facebook",
        "threads",
        "tiktok",
        "youtube",
        "pinterest",
        "gbp"
      ],
      "type": "string",
      "description": "Target platform (e.g. linkedin, x)"
    },
    "platforms": {
      "type": "array",
      "items": {
        "enum": [
          "linkedin",
          "x",
          "bluesky",
          "mastodon",
          "instagram",
          "facebook",
          "threads",
          "tiktok",
          "youtube",
          "pinterest",
          "gbp"
        ],
        "type": "string"
      },
      "maxItems": 6,
      "minItems": 1,
      "description": "Target platforms (e.g. ['linkedin', 'x'])"
    }
  }
}
adapt_post output schema
{
  "type": "object",
  "required": [
    "adaptations"
  ],
  "properties": {
    "adaptations": {
      "type": "object"
    }
  },
  "description": "Adapted post copy keyed by channel platform"
}
adapt_post annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
generate_image — Generate image
Advertised by the server during the last successful anonymous check.

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.

generate_image 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"
    }
  }
}
generate_image 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_image annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
list_media — List media
Advertised by the server during the last successful anonymous check.
Advertised read-only

List or search media assets (images, videos) in the workspace media library. Returns asset ids to attach with create_post.mediaIds.

list_media input schema
{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 100
    },
    "kind": {
      "enum": [
        "image",
        "video",
        "document"
      ],
      "type": "string"
    },
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1
    }
  }
}
list_media 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_media annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
import_media — Import media
Advertised by the server during the last successful anonymous check.
Open-world

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).

import_media 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
    }
  }
}
import_media output schema
{
  "type": "object",
  "required": [
    "assetId",
    "kind",
    "url"
  ],
  "properties": {
    "url": {
      "type": "string"
    },
    "kind": {
      "type": "string"
    },
    "assetId": {
      "type": "string"
    }
  },
  "description": "Imported media asset details"
}
import_media annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
upload_media — Upload media
Advertised by the server during the last successful anonymous check.

Upload an image, video, or PDF directly using base64 data (or data URI) into the workspace media library and return its asset id (to attach with create_post.mediaIds).

upload_media input schema
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "alt": {
      "type": "string",
      "maxLength": 400,
      "description": "Accessibility alt text for the media asset"
    },
    "data": {
      "type": "string",
      "minLength": 1,
      "description": "Base64 encoded file content or data URI (e.g. 'data:image/png;base64,...')"
    },
    "mime": {
      "type": "string",
      "maxLength": 50,
      "description": "MIME type (e.g. 'image/png', 'image/jpeg', 'video/mp4')"
    },
    "filename": {
      "type": "string",
      "maxLength": 120,
      "description": "Filename with extension (e.g. 'infographic.png')"
    }
  }
}
upload_media output schema
{
  "type": "object",
  "required": [
    "assetId",
    "kind",
    "url"
  ],
  "properties": {
    "url": {
      "type": "string"
    },
    "kind": {
      "type": "string"
    },
    "assetId": {
      "type": "string"
    }
  },
  "description": "Uploaded media asset details"
}
upload_media annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
create_post — Create post
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Create and optionally publish a post for LinkedIn, X, Instagram, Facebook, YouTube, TikTok, etc. Supports post copy text, image attachments (Base64 data or URLs), and video. When publishNow is true, the post is published immediately to the social accounts (available to admin-approved users). Without publishNow or scheduledAt, it is saved as a draft.

create_post input schema
{
  "type": "object",
  "required": [
    "channelIds"
  ],
  "properties": {
    "body": {
      "type": "string",
      "maxLength": 20000,
      "description": "Post copy text (optional if media attachments are 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 upload_media, import_media, or list_media"
    },
    "mediaData": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 10,
      "description": "Array of Base64 image/video data strings or data URIs to directly upload to storage and attach to this post"
    },
    "mediaUrls": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri"
      },
      "maxItems": 10,
      "description": "Array of image or video URLs to automatically import to storage and attach to this post"
    },
    "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', 'facebook'])"
    },
    "publishNow": {
      "type": "boolean",
      "description": "If true, queues the post for immediate publication to destination channels now instead of saving as draft (requires admin-approved MCP publishing access)"
    },
    "scheduledAt": {
      "type": "string",
      "description": "ISO 8601 UTC timestamp to schedule the post (e.g. '2026-09-21T11:00:00Z'). Without this or publishNow, saves as a draft."
    }
  }
}
create_post 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"
}
create_post annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": true
}
schedule_post — Schedule post
Advertised by the server during the last successful anonymous check.
Open-world

Schedule an existing draft (or move a scheduled post) to an ISO 8601 time. Approval policy still applies.

schedule_post input schema
{
  "type": "object",
  "required": [
    "postId",
    "scheduledAt"
  ],
  "properties": {
    "postId": {
      "type": "string",
      "description": "Post UUID or ID"
    },
    "scheduledAt": {
      "type": "string",
      "description": "ISO 8601 UTC datetime string"
    }
  }
}
schedule_post 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"
}
schedule_post annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
publish_post — Publish post
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Publish an existing draft now (queues it immediately). Approval policy still applies — the post may land in pending_approval instead.

publish_post input schema
{
  "type": "object",
  "required": [
    "postId"
  ],
  "properties": {
    "postId": {
      "type": "string",
      "description": "Post UUID to publish"
    }
  }
}
publish_post output schema
{
  "type": "object",
  "required": [
    "id",
    "status"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Post ID"
    },
    "status": {
      "type": "string"
    }
  },
  "description": "Publication result"
}
publish_post annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": true
}
create_article — Create article
Advertised by the server during the last successful anonymous check.

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.

create_article 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"
    }
  }
}
create_article 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_article annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
list_connected_sites — List connected sites
Advertised by the server during the last successful anonymous check.
Advertised read-only

List the websites connected to this workspace for article publishing (SocialHive blog, WordPress, Ghost, Dev.to, ...). Use an id from here as destinationIds in publish_article.

list_connected_sites input schema
{
  "type": "object",
  "properties": {}
}
list_connected_sites output schema
{
  "type": "object",
  "properties": {
    "result": {
      "type": "object",
      "description": "Structured output from tool execution"
    }
  },
  "description": "Output payload for list_connected_sites"
}
list_connected_sites annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
publish_article — Publish article
Advertised by the server during the last successful anonymous check.
Advertised destructiveOpen-world

Publish (or send as a draft) an article from the workspace library to one or more connected sites. Get site ids from list_connected_sites and article ids from list_articles or create_article. The article must have a body. Publishing again updates the existing post on that site.

publish_article input schema
{
  "type": "object",
  "required": [
    "articleId",
    "destinationIds",
    "status"
  ],
  "properties": {
    "status": {
      "enum": [
        "publish",
        "draft"
      ],
      "type": "string",
      "default": "publish",
      "description": "publish (live, default) or draft on the site"
    },
    "articleId": {
      "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)$",
      "description": "Article UUID"
    },
    "destinationIds": {
      "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)$"
      },
      "maxItems": 20,
      "minItems": 1,
      "description": "Connected site ids from list_connected_sites"
    }
  }
}
publish_article output schema
{
  "type": "object",
  "properties": {
    "result": {
      "type": "object",
      "description": "Structured output from tool execution"
    }
  },
  "description": "Output payload for publish_article"
}
publish_article annotations
{
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": true
}
propose_workflow — Propose workflow
Advertised by the server during the last successful anonymous check.

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.

propose_workflow 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
    }
  }
}
propose_workflow output schema
{
  "type": "object",
  "required": [
    "id",
    "name"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Workflow ID"
    },
    "url": {
      "type": "string"
    },
    "name": {
      "type": "string"
    }
  },
  "description": "Created draft workflow"
}
propose_workflow annotations
{
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-07: 2 of 2 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1057 ms
95th percentile latency
1057 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1057 ms · metadata changed · 24 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http socialhive-mcp https://platform.socialhive.pro/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add socialhive-mcp --url https://platform.socialhive.pro/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable socialhive-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "socialhive-mcp": {
      "url": "https://platform.socialhive.pro/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "socialhive-mcp": {
      "type": "streamableHttp",
      "url": "https://platform.socialhive.pro/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start socialhive-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "socialhive-mcp": {
      "type": "http",
      "url": "https://platform.socialhive.pro/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http socialhive-mcp https://platform.socialhive.pro/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://platform.socialhive.pro/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "socialhive-mcp": {
      "serverUrl": "https://platform.socialhive.pro/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like SocialHive MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run SocialHive MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing