PostFast
Schedule and publish social media posts to 11 platforms (X, Instagram, Facebook, TikTok, LinkedIn, YouTube, Threads, Pinterest, Bluesky, Telegram, Google…
Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inRU / CISFreeCan modify data
What it can do
- List Workspaces: List the workspaces this connection can act in. Use a workspace id as the optional workspaceId argument on other tools to operate across multiple workspaces (the default workspace is
- List Accounts: List all social media accounts connected to the workspace. Each includes connectionStatus (CONNECTED or DISABLED) and disabledReason (null unless DISABLED), plus followerCount (latest s
- Get Follower History: Daily follower-count snapshots for one connected account (pass its socialMediaId from list_accounts). Returns currentFollowerCount, delta (current − first snapshot in range), tra
What data it sees
Do you need an account
No: the server works without sign-in
Schedule and publish social media posts to 11 platforms (X, Instagram, Facebook, TikTok, LinkedIn, YouTube, Threads, Pinterest, Bluesky, Telegram, Google Business Profile, and more), straight from Claude, ChatGPT, or Cursor
Hosted MCP server with OAuth, so there is no API key and nothing to self-host. Draft, schedule, approve, publish, and pull post analytics in natural language. 15 tools
Server tool list (15)
Raw names from tools/list. Only developers need these.
| list_workspaces | List the workspaces this connection can act in. Use a workspace id as the optional workspaceId argument on other tools to operate across multiple workspaces (the default workspace is used when omitted). |
| list_accounts | List all social media accounts connected to the workspace. Each includes connectionStatus (CONNECTED or DISABLED) and disabledReason (null unless DISABLED), plus followerCount (latest stored snapshot, a string; absent for platforms without follower data) and followerCountUpdatedAt. A DISABLED account will not publish until the user reconnects it — pre-check before scheduling. For a follower trend over time, use get_follower_history. |
| get_follower_history | Daily follower-count snapshots for one connected account (pass its socialMediaId from list_accounts). Returns currentFollowerCount, delta (current − first snapshot in range), trackingStartedAt (when tracking began), and a series of { capturedAt, followerCount } points. Counts are strings. Optional from/to bound the range (ISO 8601; default last 90 days, capped at 365). Snapshots are forward-only — no data before trackingStartedAt. Coverage: Facebook Pages, Instagram, YouTube, Pinterest, Threads, Bluesky, Telegram, LinkedIn (company pages). Not available: X, TikTok, personal Facebook. |
| list_pinterest_boards | List Pinterest boards for a connected Pinterest account (pass its socialMediaId). Use a returned board’s boardId field as controls.pinterestBoardId in create_posts. |
| list_youtube_playlists | List YouTube playlists for a connected YouTube account (pass its socialMediaId). Use a returned playlist’s playlistId field as controls.youtubePlaylistId in create_posts. |
| list_gbp_locations | List Google Business Profile locations for a connected GBP account (pass its socialMediaId). Use a returned location’s locationId field as controls.gbpLocationId in create_posts. |
| search_places | Search for a place to geotag a post. Pass free text (min 2 chars, e.g. a venue name or address); returns matching places, each with an id that works as BOTH controls.facebookPlaceId (Facebook feed posts) and controls.instagramLocationId (Instagram single-media posts). Only Facebook Pages that carry location data are returned. |
| generate_connect_link | Generate a shareable link for external clients to connect their social accounts to the workspace. |
| list_posts | List social media posts with optional filters for platform, status, date range, and specific post ids. Failed/missed posts carry lastError { message, code }; codes include MISSED_DISCONNECTED (the account was disconnected when due — reconnect, then retry) and MISSED_NOT_PUBLISHED (passed its scheduled time plus a 2h grace window). |
| create_posts | Create and schedule social media posts (batch up to 15). Each post targets one social account (socialMediaId from list_accounts). SCHEDULED requires scheduledAt on every post; DRAFT must omit scheduledAt. Scheduling to a DISABLED account is rejected — pre-check connectionStatus (saving as DRAFT is allowed). TikTok, Instagram, YouTube, Pinterest, and Google Business Profile require at least one media item EVEN FOR DRAFTS — attach media first (ask the user for an image/video, or generate+upload one, if none was provided). Attach media via the key returned by upload_from_url / upload_media. |
| approve_posts | Set the approval status of one or more posts (approval workflow). Typically used to move posts to APPROVED so they can publish, or to PENDING_APPROVAL / REJECTED / NEEDS_WORK. |
| delete_post | Delete a social media post by id. |
| get_post_analytics | Fetch published posts with their latest metrics (impressions, reach, likes, comments, shares). Only published posts with a platform post id are returned; LinkedIn personal accounts are excluded. Supported: Instagram, Facebook, TikTok, Threads, YouTube, LinkedIn (company pages), Pinterest (Business). Metric counts are returned as strings; Pinterest/video pins include extra fields in metric.extras. Video posts also include normalized watch-time on latestMetric: avgWatchTimeSeconds, totalWatchTimeSeconds, videoViews (Facebook, Instagram Reels, YouTube, Pinterest, LinkedIn company pages). |
| upload_from_url | Fetch media from a public https URL and store it for use in create_posts. Returns { media_id, type }; pass media_id as a mediaItems[].key. Ideal for ChatGPT/Claude-generated image URLs and remote CDN media. Redirects are followed (each hop is SSRF-validated); the URL must be public https and within the size limit. Supported types: image/jpeg, image/png, image/gif, image/webp, video/mp4, video/webm, video/quicktime. |
| upload_media | Upload an image/video that is present in this conversation, for use in create_posts. Pass EITHER a ChatGPT-attached or model-generated file (the `file` argument — ChatGPT fills this automatically) OR base64 bytes (`data` + `contentType`). Returns { media_id, type }; use media_id as a mediaItems[].key. For large or remote media, prefer upload_from_url. Supported types: image/jpeg, image/png, image/gif, image/webp, video/mp4, video/webm, video/quicktime. |