posterly
Schedule and publish social media posts across 18 platforms from AI agents through 72 hosted MCP tools.
Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeCan modify data
What it can do
- Get Mcp Status: Report the hosted posterly MCP server version, latest npm version for local app clients, MCP endpoint health, API auth health, and update guidance.
- Whoami: Return the authenticated user, API key scopes, and accessible workspaces. Call this first to confirm auth before any other tool.
- Create Api Key: Create a new posterly API key for the authenticated user. SECRET-CREATING WRITE: only use after explicit user confirmation. The new key can only request scopes already present on the c
What data it sees
Do you need an account
No: the server works without sign-in
Schedule and publish social media posts across 18 platforms from AI agents through 72 hosted MCP tools. Includes dry-run validation, OAuth 2.1, and Bearer API-key authentication.
Server tool list (60)
Raw names from tools/list. Only developers need these.
| get_mcp_status | Report the hosted posterly MCP server version, latest npm version for local app clients, MCP endpoint health, API auth health, and update guidance. |
| whoami | Return the authenticated user, API key scopes, and accessible workspaces. Call this first to confirm auth before any other tool. |
| create_api_key | Create a new posterly API key for the authenticated user. SECRET-CREATING WRITE: only use after explicit user confirmation. The new key can only request scopes already present on the calling dashboard-created API key; OAuth and managed assistant tokens cannot mint keys. |
| delete_api_key | Revoke a posterly API key owned by the authenticated user. DESTRUCTIVE: show the user the exact key ID/prefix/name if available and get explicit confirmation before calling. Cannot revoke the key currently authenticating this request, OAuth-issued keys, or managed assistant keys. |
| list_accounts | List connected social media accounts. Returns platform, username, account ID, and workspace ID for each. |
| disconnect_account | Disconnect a connected social account from posterly. DESTRUCTIVE and IRREVERSIBLE: this removes the account connection, emits account.disconnected webhooks, and may transfer Instagram scheduled posts to a replacement account. Always call list_accounts first, show the user the exact account/platform/workspace, and get explicit confirmation before calling. |
| get_connect_link | List dashboard handoff links/readiness for connecting accounts, or get one platform connection URL. For a guided user flow with pollable status, call create_connect_session next. |
| create_connect_session | Create a short-lived dashboard handoff session for connecting a social account. Open connect_session.connect_url for the user, then poll get_connect_session so you can narrate progress. |
| get_connect_session | Poll a connect session created by create_connect_session. Read status_message to tell the user what is happening; stop when status is connected, failed, cancelled, or expired. |
| list_oauth_clients | List self-serve OAuth developer clients owned by the user. These are public PKCE clients for third-party app integrations. |
| create_oauth_client | Create a public OAuth 2.1 + PKCE developer client. WRITE: confirm app name, redirect URIs, and scopes with the user before calling. |
| update_oauth_client | Update a self-serve OAuth developer client. WRITE: confirm changed redirect URIs, scopes, and active state before calling. |
| delete_oauth_client | Delete a self-serve OAuth developer client. DESTRUCTIVE: prevents new authorizations for that client_id; existing access tokens remain revocable as API keys. |
| list_platforms | List posterly platform integrations and their posting capabilities, content limits, media limits, settings schemas, helper tools, and analytics support. |
| get_platform_schema | Get the platform schema for a platform or a specific connected account. Use this before creating posts with platform-specific settings. |
| trigger_platform_helper | Run a platform helper for account-specific discovery, such as pinterest.boards, tiktok.creator_info, linkedin.recent_mentions, or x.quota. |
| list_brands | List brands/clients the caller can access. Returns each brand ID, name, workspace ID, source, and how many social accounts are assigned to it. |
| get_brand | Get one brand/client by ID. Returns its workspace, source, linked legacy brand group if present, and the number of social accounts assigned to it. |
| list_brand_accounts | List the connected social accounts assigned to a brand/client. Use this when the user refers to a brand rather than a raw account handle. |
| get_brand_profile | Get the extended brand profile for a brand/client. Returns voice/tone guidance, audience, keywords, dos and don’ts, visual notes, and other saved brand context. |
| get_learned_voice | Get the voice posterly has learned from a connected account’s real published captions (the "learned captions" shown on the dashboard). Returns a narrative summary, voice traits, style guidelines, and observed posting habits. Keyed by social account ID (from list_accounts or list_brand_accounts). Returns nothing until the account has enough published posts. Read-only; never overwrites the saved brand profile. |
| get_performance_profile | Get the performance profile posterly has derived for a connected account from the last 90 days of per-post analytics. Returns coaching stats (format, timing, caption-length patterns), an engagement-rate trend, and a narrative summary. Keyed by social account ID (from list_accounts). Returns performance_profile: null with a reason (insufficient_data, platform_not_measurable) when there is no profile yet. Read-only; requires a Pro plan or higher. |
| get_post_insights | List per-post feedback insights from the posterly performance feedback loop: for recently published posts, the performance tier (great/good/mixed/poor), a diagnosis, a suggested next action, metrics, and the baseline it was compared against. Filter by account_id, post_id, and checkpoint (1h, 6h, 24h, 72h, 7d). Read-only; requires a Pro plan or higher. |
| list_post_suggestions | List proactive post suggestions: evidence-based weekly drafts posterly writes in each account's learned voice, each with a rationale tying it back to what has performed well. Filter by account_id and status (pending, scheduled, dismissed; default pending). Read-only; requires a Pro plan or higher. Use dismiss_suggestion to hide one. |
| dismiss_suggestion | Dismiss a proactive post suggestion so it stops appearing. WRITE: confirm the exact suggestion with the user first. Never dismisses a suggestion that was already turned into a scheduled post. |
| list_posts | List upcoming or recent posts. Filter by status (scheduled, published, failed, draft), platform, account_id, or workspace_id. |
| get_post | Get details of a specific post by ID. Returns caption, status, scheduled time, media, and platform info. |
| get_post_missing | Inspect whether a post is missing required content, media, account, platform settings, or metadata before it can publish. Use this to repair failed or imported posts. |
| ask_support | Ask posterly Support AI an authenticated question using posterly docs plus read-only account/post diagnostics for the caller workspace. Requires API auth and accounts:read + posts:read scopes. Human tickets are never opened on the first answer; ticket creation requires a follow-up in a continued conversation with an assistant answer plus request_human=true and confirm_escalation=true after explicit user confirmation. |
| find_available_slot | Find available time slots for posting. Respects a 1-hour gap between posts and preferred hours. Always pass timezone explicitly (default is America/New_York). |
| submit_agent_feedback | Submit bounded private operational telemetry after a concrete posterly workflow outcome. This is non-destructive to product content but writes a private feedback event. Never include API keys, prompts, captions, media URLs, personal data, or fabricated outcomes. Requires an authenticated bearer API key and paid API add-on. |
| validate_post | Validate and normalize one post without creating it. This is non-destructive: it does not create records, copy remote media, consume post-item/storage quota, reserve X quota, emit webhooks, or enqueue publication. Third-party media may return remote_media_not_materialized because live create performs storage copy and final byte validation. Use this before showing the final preview and asking for confirmation to call create_post. |
| create_post | Schedule or immediately publish one social media post. DESTRUCTIVE WRITE that creates content on the user's connected social account. Always confirm caption + scheduled_at + account_id/workspace with the user before calling. Third-party media URLs are copied into Posterly storage before the post is saved; short-lived signed URLs must still be live when this tool runs. For multiple posts, prefer create_posts_batch after confirming every item. |
| create_posts_batch | Create 1-25 scheduled or immediate social posts in one API request. DESTRUCTIVE WRITE: show the user every post's account/platform, caption or thread text, scheduled time, media, settings, and workspace, then get explicit confirmation for the whole batch before calling. Third-party media URLs are copied into Posterly storage before each post is saved. Partial success is possible; failed items return their array index. |
| update_post | Update a scheduled or draft post. DESTRUCTIVE WRITE - overwrites the existing post's caption/media/schedule. Cannot edit published posts. Show the user a side-by-side of CURRENT vs PROPOSED before calling. |
| update_post_status | Pause, resume/schedule, or move a post back to draft. DESTRUCTIVE WRITE: changes whether content will publish. Always fetch with get_post first, show the current status and proposed status/scheduled_at, and get explicit confirmation before calling. |
| update_post_release_id | Set or repair an external release_id and optional group_id on a post. WRITE: call get_post first, show the target post and release/group IDs, then pass confirm=true only after explicit confirmation. |
| delete_post | Delete a scheduled or draft post. DESTRUCTIVE and IRREVERSIBLE. Cannot delete published posts. Always fetch with get_post first and confirm what will be deleted before calling. |
| delete_post_group | Delete every draft/scheduled/failed/paused post matching a caller-defined group_id, post_group_id, api_group_id, or release_id. DESTRUCTIVE: inspect the group first, list affected posts, and pass confirm=true only after explicit confirmation. |
| get_x_posting_quota | Get managed X posting quota, usage, remaining posts, URL-blocking status, and add-on plan info for a workspace. |
| upload_media | Upload a small image or video to posterly storage via base64. Returns a URL usable with create_post. Supports JPEG, PNG, GIF, WebP, MP4, MOV, WebM. Keep decoded files <=5MB on this relay path; for larger files, use create_signed_upload and PUT the raw bytes to the returned upload_url. Counts against the user's storage quota but does not publish anywhere - that's create_post's job. |
| upload_media_from_url | Fetch an image or video from a public HTTPS URL into posterly storage. Returns a URL usable with create_post. SSRF protections block localhost/private IP targets. |
| create_signed_upload | Create a signed upload URL for a larger image or video. Upload the binary to upload_url; the API validates actual bytes before storage, then public_url can be used with create_post. |
| get_video_options | List read-only Veo video generation options, input modes, durations, resolutions, aspect ratios, and credit-cost estimates. Does not generate video or spend credits. |
| run_video_function | Run a read-only Veo video helper function before generation, such as list_input_modes, estimate_cost, or validate_request. Does not generate video or spend credits. |
| generate_video | Queue a Veo AI video generation job. COSTS VEO CREDITS - confirm prompt, model, duration, resolution, aspect ratio, audio choice, and credit cost with the user before calling. Poll get_video_job for status and final video_url. |
| get_video_job | Get one Veo video job by ID, or list recent video jobs when job_id is omitted. Use after generate_video to poll for completed video_url. |
| generate_captions | Generate or adapt AI caption suggestions for one or more social platforms. Uses AI Caption Assist quota and returns options only; it does not create, draft, schedule, or publish posts. |
| generate_image | Generate an AI image via posterly's Nano Banana (Gemini) integration. Returns a URL usable with create_post. COSTS CREDITS - confirm subject + style + aspect_ratio with the user before calling. |
| get_account_analytics | Get daily analytics snapshots and a period summary for a connected social account. Supports Instagram, Facebook Pages, LinkedIn, Google Business Profile, Pinterest, YouTube, and Threads. Uses API-provided display_metrics for platform-native dashboard labels. presentation controls output: compact for Telegram/mobile, table for Markdown clients, json for custom chart/card renderers. |
| get_post_analytics | Get per-post engagement metrics (likes, comments, reach, impressions, saves, shares, plays) for a connected account. Supports Instagram, Facebook Pages, LinkedIn, Google Business Profile, Pinterest, YouTube, and Threads. Most recent posts first. presentation controls output: compact for Telegram/mobile, table for Markdown clients, json for custom chart/card renderers. |
| list_google_business_reviews | List Google Business Profile reviews for one location/account or every accessible GBP location. Supports rating and unanswered-only filters. |
| get_google_business_review_link | Get the direct public Google review link for a connected Google Business Profile location. Requires account_id or location_id. Returns reviewLink plus the Google Place ID (ChIJ...); that Place ID is output only and must NOT be passed back as location_id to other tools. |
| audit_google_business_profile | Run a live local-profile audit for a connected Google Business Profile location, including completeness, categories, media, attributes, reviews, and recommendations. |
| suggest_google_business_review_reply | Generate short, brand-aware AI reply suggestions for a Google review. Uses the AI Caption Assist allowance; does not post the reply. |
| reply_google_business_review | Post or update the owner reply on a Google Business Profile review. WRITE: show the review, location, and exact reply text to the user, then pass confirm=true only after explicit confirmation. |
| delete_google_business_review_reply | Delete the owner reply from a Google Business Profile review. DESTRUCTIVE: confirm the review and location with the user, then pass confirm=true only after explicit confirmation. |
| list_google_business_media | List the photos and videos on a Google Business Profile gallery (the media shown on Maps and Search) for one location/account or every accessible GBP location. This is separate from media attached to a post. Returns each item's resource name, category, format, and attribution. |
| add_google_business_media | Add a photo or video to a Google Business Profile gallery (the media shown on Maps and Search). Provide a public https source_url first by uploading via upload_media_from_url or upload_media. COVER and PROFILE are single-slot and replace the existing one. WRITE: show the location, category, and media URL to the user, then pass confirm=true only after explicit confirmation. |
| delete_google_business_media | Remove a photo or video from a Google Business Profile gallery. Get media_name from list_google_business_media. This permanently deletes the item from the public profile. DESTRUCTIVE: show the exact media item and location to the user, then pass confirm=true only after explicit confirmation. |