MCP
Hosted Model Context Protocol server. Give your agent one tool interface for every connected platform instead of seven separate APIs.
At a glance
| Question | Answer |
|---|---|
| Who is it for | Agents and LLM workflows that need to post, analyze, and manage social accounts |
| How it runs | Hosted by UniPost — no server to deploy |
| Auth | Bearer API key in the Authorization header |
| Transport | Streamable HTTP — falls back to SSE for legacy clients |
| Setup time | ~2 minutes per client |
MCP vs SDK vs raw API
The first question worth answering: should your integration even use MCP?
| Use case | Best interface | Why |
|---|---|---|
| LLM-driven operator or agent workflow | MCP | Native tool surface for accounts, posts, and analytics |
| Typed application integration | SDK | Better ergonomics and language-native patterns |
| Low-level debugging or custom client | Raw API | Direct control over raw requests and responses |
| Large local video upload before publish | Media API + MCP | Upload to UniPost storage first, then publish with media_ids |
Transport and endpoint
| Property | Value |
|---|---|
| Endpoint | https://mcp.unipost.dev/mcp |
| Transport | Streamable HTTP |
| Auth | Bearer YOUR_API_KEY |
| Legacy fallback | https://mcp.unipost.dev/sse |
Available tools
| Tool | What it does |
|---|---|
| unipost_list_accounts | List connected social media accounts |
| unipost_upload_media | Upload media into UniPost's media library and return a media_id |
| unipost_get_media | Check whether a media upload is hydrated and ready to publish |
| unipost_create_post | Create and publish a post to one or more accounts |
| unipost_create_youtube_video_post | Upload + publish in one YouTube-oriented video workflow |
| unipost_get_post | Get the status and details of a post |
| unipost_get_analytics | Read engagement metrics for a post |
| unipost_list_posts | List recent posts filtered by status |
The MCP surface is strongest for account lookup, text publishing, analytics, and media that is already reachable by URL or already uploaded into UniPost. Large local video files are not the ideal path today.
Recommended flow
“Generate text, then publish immediately” is not the safest pattern. Prefer generate → validate → preview → publish.
YouTube video workflow
For YouTube, the most reliable flow today is: upload the video into UniPost’s media library first, then create the post with a media_id. That matches the dashboard flow and avoids pushing a large local file through the MCP request path.
| Step | What to do | Why |
|---|---|---|
| 1 | Create a media upload in UniPost | Reserve a media row and get a presigned upload URL |
| 2 | Upload the local video directly to storage | Keep large file transfer out of the MCP request path |
| 3 | Confirm the media row is uploaded | Make sure UniPost can resolve the object before publish |
| 4 | Call unipost_create_post with media_ids | Publish to YouTube using the same workflow as the dashboard |
UniPost exposes unipost_create_youtube_video_post as a higher-level wrapper, but for very large local files the most reliable path is still a hosted video_url or a reusable media_id.
Client configuration
Each client expects this config in a different place. Drop the matching snippet in the file below, then restart the client.
| Client | Config location | Notes |
|---|---|---|
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows) | Merge the unipost entry into the existing mcpServers block |
| Cursor | .cursor/mcp.json (project) or ~/.cursor/mcp.json (global) | Project config is easiest when you want the same MCPs checked into a repo |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | Or open MCP settings and edit the raw config there |
| Claude Code | No file needed — run the claude mcp add command | For a checked-in config, use .mcp.json at the project root with claude mcp add --scope project |
Test the server directly
If you want to confirm auth and transport outside an MCP client, initialize the server directly with cURL.
Limitations
| Limitation | Reason |
|---|---|
| Large local video uploads are awkward | MCP request path is not built for big binary transfer — use the Media API first, then publish with media_ids |
| Hosted only, no self-host today | The MCP surface runs on UniPost infrastructure — agents authenticate with their API key |
| Tool inventory is curated | UniPost intentionally exposes a small, stable tool set — new tools ship under the same naming convention |
| Rate limits follow your UniPost plan | The same per-key limits as the REST API apply |