BulkPublish MCP Server
Social media automation for AI agents.
Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeCan modify data
What it can do
- List Channels: List all connected social media channels (X/Twitter, Instagram, LinkedIn, Facebook, TikTok, etc.). Returns channel ID, platform, account name, and token status.
- Create Post: Create a new social media post. Can be saved as a draft or scheduled for a specific time. Supports platform-specific content overrides, media attachments, labels, and thread format. IMPOR
- List Posts: List posts with optional filters for status, search text, date range, channel, and label. Returns paginated results with platform statuses and metrics.
What data it sees
Do you need an account
No: the server works without sign-in
Social media automation for AI agents. Schedule posts, upload media, manage channels, and track analytics across 11 platforms — all from your AI assistant.
29 Tools
| Category | Tools |
|---|---|
| Posts | create_post, update_post, delete_post, list_posts, get_post, publish_post, retry_post, get_post_metrics, publish_story, bulk_posts |
| Channels | list_channels, get_channel_health, get_channel_options, search_mentions |
| Media | upload_media (URL or local file), list_media, get_media, delete_media |
| Labels | list_labels, create_label, update_label, delete_label |
| Schedules | list_schedules, create_schedule, update_schedule, delete_schedule |
| Analytics | get_analytics |
| Quota | get_quota_usage |
| Queue | get_queue_slot |
Supported Platforms
Facebook, Instagram, X/Twitter, TikTok, YouTube, Threads, Bluesky, Pinterest, Google Business Profile, LinkedIn, Mastodon
Setup
npx -y @bulkpublish/mcp-server
Requires BULKPUBLISH_API_KEY environment variable. Get your key at app.bulkpublish.com/developer.
Links
- npm
- API Docs
- GitHub
- AI Toolkit — Claude Code plugin + skills for 41+ agents
Server tool list (35)
Raw names from tools/list. Only developers need these.
| list_channels | List all connected social media channels (X/Twitter, Instagram, LinkedIn, Facebook, TikTok, etc.). Returns channel ID, platform, account name, and token status. |
| create_post | Create a new social media post. Can be saved as a draft or scheduled for a specific time. Supports platform-specific content overrides, media attachments, labels, and thread format. IMPORTANT: YouTube and TikTok REQUIRE video — do not include them when posting images only. Instagram defaults to feed_photo — set postTypeOverrides for video content (reel, feed_video). |
| list_posts | List posts with optional filters for status, search text, date range, channel, and label. Returns paginated results with platform statuses and metrics. |
| get_post | Get a single post by ID with full details including platform statuses, labels, media files, recurring schedule info, and metrics. |
| publish_post | Publish a draft or scheduled post immediately. The post will be queued for publishing to all its target channels. |
| retry_post | Retry publishing a failed or partially failed post. Only retries the platforms that failed, not the ones that already succeeded. |
| upload_media | Upload a media file (image or video) from a URL or local file path. The file is stored in BulkPublish for use in posts. Supported formats: JPEG, PNG, WebP, GIF, MP4, MOV, WebM. Max 100MB. Provide either url OR filePath, not both. |
| list_media | List uploaded media files with optional search and pagination. Returns file metadata including URLs, dimensions, and labels. |
| get_analytics | Get an analytics summary for a date range. Returns total posts, status breakdown (published, failed, scheduled), per-platform stats, and daily post counts. |
| list_labels | List all labels available for tagging posts and media. |
| create_label | Create a new label for organizing posts or media files. |
| get_quota_usage | Check current quota usage for your BulkPublish plan. Returns daily/monthly post limits, scheduled post limits, channel limits, media storage usage, and more. |
| update_post | Update an existing post. Can change content, status, schedule, media, labels, and platform-specific settings. |
| delete_post | Delete a post by ID. Only draft and failed posts can be deleted. |
| get_post_metrics | Get engagement metrics for a published post. Returns likes, comments, shares, impressions, and other platform-specific metrics. |
| publish_story | Publish a post as a story on Facebook or Instagram. |
| bulk_posts | Perform a bulk action on multiple posts. Supports deleting or retrying multiple posts at once. |
| get_queue_slot | Get the next available queue slot for a channel. Useful for finding optimal scheduling times based on the channel's posting schedule. |
| get_channel_health | Check the health status of a connected channel. Returns token validity, connection status, and any issues. |
| get_channel_options | Get platform-specific options for a channel (e.g. available post types, character limits, media requirements). |
| search_mentions | Search for @mention suggestions on a channel. Useful for finding users/pages to mention in posts. |
| get_media | Get details of a single media file by ID. Returns metadata, URL, dimensions, and labels. |
| delete_media | Delete a media file by ID. Removes the file from storage and detaches it from any posts. |
| update_label | Update an existing label's name or color. |
| delete_label | Delete a label by ID. Removes the label from all associated posts or media. |
| list_schedules | List all recurring post schedules. Returns schedule name, cron expression, target channels, and active status. |
| create_schedule | Create a new recurring post schedule. Posts will be automatically created and published based on the cron expression. |
| update_schedule | Update an existing recurring schedule. Can change name, content, cron expression, timezone, or active status. |
| delete_schedule | Delete a recurring schedule by ID. Stops all future posts from this schedule. |
| compose_post | Open an interactive composer to draft or schedule a social media post. Shows the user's connected channels to pick from and pre-fills any provided text. The user finishes in the UI; on submit it creates the post via create_post. |
| view_analytics | Open an interactive analytics dashboard for a date range — totals, status breakdown, per-platform stats, and daily post counts. |
| view_posts | Open an interactive list of posts with their status, schedule, and channels. Optionally filter by status. |
| view_channels | Open an interactive view of connected social channels with platform, account, and connection/token status. |
| view_media | Open an interactive gallery of uploaded media files with thumbnails and metadata. |
| view_quota | Open an interactive view of current plan quota usage — daily/monthly post limits, channel limits, and media storage. |