posterly
Posterly планирует и публикует посты в 18 соцсетях из ассистента
Что умеет
- Планировать и публиковать посты сразу на нескольких платформах
- Подключать и отключать аккаунты соцсетей
- Проверять публикацию в тестовом режиме перед реальной отправкой
- Смотреть эффективность постов и получать подсказки по контенту
- Управлять брендами и голосом бренда
Какие данные видит
Ассистент действует от имени подключённых аккаунтов соцсетей в пределах прав API-ключа или OAuth-токена.
Нужен ли аккаунт
Не нужен: сервер работает без входа
Posterly — MCP-сервер для планирования и публикации постов в социальных сетях через ИИ-ассистента, работает с 18 платформами через 72 инструмента. Поддерживает тестовую публикацию без реальной отправки, аутентификацию через OAuth 2.1 и API-ключи.
Как подключить
Как подключить posterly к Claude
Адрес сервера, который нужно вставить в настройках Claude:
https://posterly--awpthorp.run.tools
- Откройте Claude (сайт claude.ai или приложение для компьютера).
- Перейдите в Настройки → Коннекторы (в английском интерфейсе: Settings → Connectors).
- Нажмите Добавить пользовательский коннектор (Add custom connector).
- Вставьте адрес сервера, скопированный ниже, в поле URL удалённого MCP-сервера и нажмите Добавить.
- В чате нажмите + → Коннекторы и включите новый коннектор.
Пользовательские коннекторы доступны на тарифах Free, Pro, Max, Team и Enterprise. На Free можно добавить только один. В Team и Enterprise коннектор сначала добавляет владелец организации в Настройки организации → Коннекторы.
Авторизация
После нажатия Добавить откроется окно входа в сервис. Войдите под своим аккаунтом и подтвердите доступ. Пароль Claude не видит.
Как подключить posterly к ChatGPT
Адрес сервера, который нужно вставить в настройках ChatGPT:
https://posterly--awpthorp.run.tools
- Откройте ChatGPT в браузере (chatgpt.com). Нужен тариф Plus, Pro, Business, Enterprise или Edu.
- Один раз включите режим разработчика: Настройки → Приложения → Дополнительные настройки → Режим разработчика (Settings → Apps → Advanced settings → Developer mode).
- Откройте Настройки → Коннекторы и нажмите Создать (Create).
- Заполните форму: Название (любое), Описание (одна фраза, что делает сервис), URL MCP-сервера (скопируйте ниже).
- В поле Аутентификация выберите OAuth, если сервис требует вход, иначе Нет. Нажмите Создать.
- В новом чате откройте + → Приложения/Коннекторы и включите коннектор.
Название раздела у OpenAI менялось (Connectors → Apps/Plugins). Если пункт называется иначе, ищите «режим разработчика» в настройках. В рабочих пространствах Business/Enterprise администратор должен разрешить пользовательские коннекторы.
Авторизация
При первом использовании ChatGPT откроет окно входа в сервис. Войдите и подтвердите доступ.
Как подключить posterly к Cursor
Адрес сервера, который нужно вставить в настройках Cursor:
https://posterly--awpthorp.run.tools
Быстрый способ: нажмите кнопку Открыть в Cursor ниже, Cursor сам предложит добавить сервер.
Вручную:
- В Cursor откройте Settings → Cursor Settings → MCP и нажмите Add new global MCP server.
- Вставьте JSON, скопированный ниже, в открывшийся файл
~/.cursor/mcp.json(для одного проекта:.cursor/mcp.jsonв корне проекта). - Сохраните файл. Сервер появится в списке MCP; при необходимости пройдите авторизацию по кнопке рядом с ним.
Авторизация
Если сервис требует вход, рядом с сервером в списке MCP появится кнопка авторизации.
Список инструментов сервера (60)
Технические названия из tools/list. Нужны только разработчикам.
| 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. |