posterly's MCP server has 71 hosted tools covering 116 actions. What moved where, when the old names stop working, and what to update.
posterly's MCP server was reorganised so your AI assistant has fewer, clearer tools to choose from. Nothing was removed: 38 tools were folded into related tools as a view (for reads) or an action (for changes). The hosted endpoint has 71 tools covering 116 actions, and the npm package has 74 tools covering 119 actions.
The REST API did not change. Only MCP tool names moved.
Do I need to do anything?
- You only chat with your assistant (ChatGPT, Claude, Cursor, Poke, and so on): no action needed. Your assistant picks up the new tools the next time it loads the tool list. In ChatGPT, if the assistant still offers old tools, refresh the posterly connector in ChatGPT's app settings (or disconnect and reconnect it).
- You use the npm package with
npx -y posterly-mcp-server@latest: restart your MCP client to load version 0.45.0. A version you pinned yourself keeps its old tool list until you upgrade.
- You have scripts, agent skills, saved prompts, or automations that call tools by name: switch them to the new names below. The old names keep working until the date below, so nothing breaks today.
- You approved tools with "always allow" (or keep an allowlist, for example Claude Code's permission settings): those approvals are tied to the old tool names and do not carry over. Your client asks once for each new tool; approve it again, or update your allowlist entries to the new names (for example
mcp__posterly__list_analytics instead of mcp__posterly__get_post_analytics).
When the old names stop working
The old names are hidden aliases. They are not listed any more, but a call to an old name still runs the new tool and returns the same result as before, plus a short note at the end naming the new call. Two small differences: empty cells in account tables now read "n/a", and on the hosted endpoint an old name now rejects fields it does not use (fields sent as empty or null are simply ignored). The old names may stop working after 12 January 2027 (2027-01-12). Move to the new names before then.
Until that date, an old name also keeps its old one-step confirm: confirm: true alone still runs it. The new names use preview then confirm for public and destructive actions (see below).
Preview then confirm
Actions that post publicly or delete things now take two calls on the new names:
- Call the tool without
confirm. Nothing changes. You get a plain summary of what will happen and a preview_id.
- Show the preview to the user. Only after they approve, call again with the same fields plus
confirm: true and that preview_id.
A preview expires after 10 minutes and only works for exactly the same fields and the same user. Public posts (a comment reply, a DM, a Google review reply, new Google profile media) can be confirmed once, so a retried call never posts twice. Other changes keep a single confirm: true after the user confirms.
For example, replying to a comment:
{ "name": "manage_comment", "arguments": { "action": "reply", "comment_id": "c_123", "content": "Thank you!" } }
returns a preview with a preview_id. After the user approves:
{ "name": "manage_comment", "arguments": { "action": "reply", "comment_id": "c_123", "content": "Thank you!", "confirm": true, "preview_id": "pv1...." } }
What moved where
Each row shows the old name, the tool it moved into, and the view, action, or parameter that picks the same behaviour. All other arguments stay the same.
Status and accounts
| Old name | New tool | How to call it | Preview first |
|---|
get_mcp_status | whoami | view: "status" | No |
get_connect_session | list_accounts | view: "connect_session" | No |
get_learned_voice | list_accounts | view: "learned_voice" | No |
get_performance_profile | list_accounts | view: "performance_profile" | No |
Platforms and connection links
| Old name | New tool | How to call it | Preview first |
|---|
get_platform_schema | list_platforms | view: "schema" | No |
get_connect_link | list_platforms | view: "connect_link" (the old platform parameter is now target) | No |
Brands
| Old name | New tool | How to call it | Preview first |
|---|
get_brand | list_brands | view: "brand" | No |
list_brand_accounts | list_brands | view: "accounts" | No |
get_brand_profile | list_brands | view: "profile" | No |
Posts
| Old name | New tool | How to call it | Preview first |
|---|
get_post_missing | get_post | view: "missing" | No |
update_post_status | update_post | pass status | No |
update_post_release_id | update_post | pass release_id | No |
delete_post_group | delete_post | pass group_id | Yes |
Media
| Old name | New tool | How to call it | Preview first |
|---|
upload_media_from_url | upload_media | pass url | No |
Analytics
| Old name | New tool | How to call it | Preview first |
|---|
get_account_analytics | list_analytics | view: "accounts" | No |
get_post_analytics | list_analytics | view: "posts" | No |
get_post_insights | list_analytics | view: "insights" | No |
AI jobs
| Old name | New tool | How to call it | Preview first |
|---|
get_image_job | list_jobs | type: "image" | No |
get_video_job | list_jobs | type: "video" | No |
Inbox comments
| Old name | New tool | How to call it | Preview first |
|---|
get_comment | list_comments | pass comment_id | No |
reply_to_comment | manage_comment | action: "reply" | Yes |
update_comment | manage_comment | action: "update" | No |
delete_comment | manage_comment | action: "delete" | Yes |
Inbox DMs
| Old name | New tool | How to call it | Preview first |
|---|
get_conversation | list_conversations | pass conversation_id | No |
send_message | manage_conversation | action: "send" | Yes |
sync_inbox | manage_conversation | action: "sync" | No |
Google Business reviews
| Old name | New tool | How to call it | Preview first |
|---|
get_google_business_review_link | list_google_business_reviews | view: "review_link" | No |
suggest_google_business_review_reply | manage_google_business_review | action: "suggest_reply" | No |
reply_google_business_review | manage_google_business_review | action: "reply" | Yes |
delete_google_business_review_reply | manage_google_business_review | action: "delete_reply" | Yes |
Google Business profile media
| Old name | New tool | How to call it | Preview first |
|---|
add_google_business_media | manage_google_business_media | action: "add" | Yes |
delete_google_business_media | manage_google_business_media | action: "delete" | Yes |
Webhooks
| Old name | New tool | How to call it | Preview first |
|---|
update_webhook | manage_webhook | action: "update" | No |
delete_webhook | manage_webhook | action: "delete" | Yes |
test_webhook | manage_webhook | action: "test" | No |
OAuth developer clients
| Old name | New tool | How to call it | Preview first |
|---|
create_oauth_client | manage_oauth_client | action: "create" | No |
update_oauth_client | manage_oauth_client | action: "update" | No |
delete_oauth_client | manage_oauth_client | action: "delete" | Yes |
Tools that kept their names
whoami, list_accounts, list_platforms, list_brands, get_post, update_post, delete_post, upload_media, list_comments, list_conversations, and list_google_business_reviews kept their names and now also cover the tools merged into them. Called the old way (without a view or the new parameters), each behaves exactly as before. Every other tool is unchanged. The full list with every view and action is on the MCP Server page.
Later additions
- 0.46.0: teammates and API access.
manage_workspace_member with action: "update", a member_id and api_access (true or false, sent on its own) turns a teammate's API and AI access on or off, preview then confirm. list_workspace_members shows API access for each member (and, for owners and admins, their key count, connected AI apps and last use). whoami shows api_access and api_access_source per workspace. generate_image, generate_video, upload_media, create_signed_upload and create_media_drop take an optional workspace_id to say which workspace pays. No tool was renamed. Details: Teammates and API access.
- 0.47.1: Instagram caption add-ons. Create or update can attach an Instagram caption add-on (a poll or a comment prompt) when that Instagram account has a Meta (Facebook Login) connection in this workspace. Accounts connected only through Instagram Login cannot use add-ons. Details: Instagram caption add-ons.
- 0.48.0: published post deletion choice.
delete_post gains an optional delete_mode: posterly keeps live content; platform also needs confirm_published: true. Live removal covers eligible connected platforms that have saved post IDs and deletion permissions. Threads needs threads_delete, which the current connection flow does not request. YouTube upload-only permission is insufficient. Instagram live deletion is disabled: Meta requires instagram_manage_contents through Facebook Login and a Facebook user token, which our current deletion integration does not provide. Publishing permissions are insufficient. A refusal keeps the posterly record. Group or bulk deletes never request live deletion. Details: MCP Server and Update or delete a post.
- 0.48.2: TikTok inbox warning on create.
create_post and create_posts_batch can return a warnings array alongside a successful create. For TikTok posts sent to the inbox (no privacy_level set), a warning fires when the account already has around 5 pending inbox shares, since TikTok only holds a handful at once. The post is still created; the warning just flags that it may fail to publish until waiting videos are finished or deleted in the TikTok app. Details: MCP Server and Create a post.
- 0.48.3: best times to post.
find_available_slot gains an optional strategy. The default, next_free, works exactly as before. best_engagement (needs account_ids) ranks the next 7 days by when those accounts get the most engagement and returns up to count times, each with a reason and a basis: your own posts (needs analytics:read and paid analytics), the platform-wide pattern, or a general default. No tool was renamed. Details: Suggested times and Suggest the best times to post.
- 0.48.4: star ratings on best-times results.
find_available_slot with strategy: "best_engagement" now shows a Rating column (1 to 5 stars) alongside the reason, confidence-capped by basis: your own posts up to 5, the platform pattern up to 4, a general default up to 3. No tool was renamed. Details: Suggested times and Suggest the best times to post.
- 0.48.5: pause and resume publishing. Two new tools in the
admin set. list_publishing_pauses shows whether the workspace or any brand you can see is paused, and what you may do. manage_publishing_pause takes action: "pause" (optional brand_id; call without confirm for a preview of how many scheduled posts it holds, then confirm: true after the user agrees; publisher or higher), action: "resume" (admin or higher; returns the posts back on the schedule and the IDs of posts that missed their time), and action: "publish_missed" (post_ids and confirm: true; admin or higher). Missed posts never publish on their own. No tool was renamed. Details: Pause all publishing for a workspace or a brand and Pause and resume publishing.
- 0.49.0: whole months and honest totals.
list_posts takes scheduled_from, scheduled_to (a plain end date includes its whole day), timezone, order, and offset, and limit now goes up to 200. With a date range it lists oldest first. Every answer says whether all matching posts are shown and, if not, which offset to call next. A new view: "counts" returns exact totals per day, status, account, and brand for a range (up to 366 days). view: "list" is the default. Answers now end with that completeness line, show each post's type, account ID, and brand ID, and show times with their time zone (UTC unless you pass timezone). Unknown arguments now return an error naming them, so assistants retry with the right parameter instead of silently getting the wrong posts. list_activity, list_media, list_post_suggestions, and get_updates also take offset and say when there is more. No tool was renamed. Details: MCP Server and List posts.
- 0.49.2: Nano Banana 2.1 and image sizes.
generate_image with the Google flash model now runs on Nano Banana 2.1. resolution is 1K, 2K, or 4K; 512 is no longer offered and is rejected by the tool schema, and a direct API call with it gets a 400 that names the supported sizes. Credit prices are unchanged (15, 23, and 35 at 1K, 2K, and 4K). No tool was renamed. Details: MCP Server and AI Images.
- 0.52.0: upload up to 20 files at once.
create_signed_upload takes an optional files list (1 to 20 entries, each with filename, content_type and size) and returns one upload slot per file, with any file that fails reported in place while the others still get slots. The single-file form works exactly as before. create_media_drop now accepts max_files up to 20 (still 10 by default), and list_media with drop_session_id returns up to 20 files per page by default so a full drop fits one page. No tool was renamed. Details: MCP Server and Upload media.
- 0.52.1: PDFs in uploads and media drops.
create_signed_upload and create_media_drop now accept PDF documents up to 50MB, for LinkedIn document posts, alongside JPEG, PNG, GIF, WebP, MP4, MOV, and WebM. Create the post with post_type document, media_url set to the PDF's public_url, and a document_title in settings (required). HEIC is still not accepted. upload_media still takes images and videos only. No tool was renamed. Details: MCP Server and Upload media.
- 0.56.2: paid plan links need manage billing. A trial confirm link still needs read billing. A confirm link that changes a plan which is no longer on a trial also needs manage billing. A read-only connection does not get that link. No tool was renamed.
- 0.56.1: TikTok posts publish directly by default.
create_post, create_posts_batch, and update_post no longer fall back to the TikTok inbox when no audience is given. With no privacy_level, the account's saved audience is used, else public. If TikTok doesn't allow that audience for the account, posterly uses the most public one it does allow when publishing. post_mode auto no longer needs privacy_level, and post_mode inbox still sends the post to the TikTok app, as does a saved account default of Finish in TikTok app. The result says which audience was used, with a tiktok_audience_defaulted notice (privacy_level and source) in place of tiktok_inbox_implicit. No tool was renamed. Details: TikTok posting modes.
- 0.56.0: start the paid plan from chat.
manage_plan with action: "list" lists plans and, while trialing, today's charge for starting the paid plan. action: "confirm_link" returns a link the human opens. Neither call charges the card. Both need billing:read. While trialing, get_subscription points at that link instead of a tier change that keeps the trial. Trial limit errors include today's price and say the trial ends today. A read-only POST such as support uses the read limit, not the write limit. No tool was renamed. Details: MCP Server and Plans and a confirm link.
- 0.55.3: TikTok audience or inbox.
create_post, create_posts_batch, and update_post say to set privacy_level or post_mode for TikTok. post_mode is auto (needs privacy_level) or inbox (finish in the TikTok app). Omitting both still creates an inbox upload and returns tiktok_inbox_implicit, even when the account default is Auto-publish. Nothing is rejected for a missing audience on the API or MCP. Also in 0.55.3: create_post, create_posts_batch (one key for the whole batch, or a key per item), and manage_workspace_member (for action: "invite") take an optional idempotency_key; reuse it when a call times out or the response is lost and the original result comes back instead of a duplicate. create_api_key takes an optional workspace_client_id to make a brand-only key that can see just that brand (a brand-only key cannot create more keys). No tool was renamed. Details: TikTok posting modes and Create a post.
Tool sets
Tools are now grouped into sets: core, creative, inbox, google_business, admin, and billing (plus signup on the npm package). Every set is on by default, so you do not need to change anything. If you want your assistant to see fewer tools, set POSTERLY_TOOLSETS=core,inbox for the npm package, or add ?toolsets=core,inbox to the endpoint URL when you connect with an API key. Any tool can still be called by name. Details: MCP Server.