Skip to main content
Glama

Server Details

Validate, schedule, publish, and analyze social content across 18 platforms with posterly. Supports OAuth 2.1 and Bearer API-key authentication. Requires a paid posterly plan with API access; Starter + API is available from $10/month.

Ownership verified
Status
Healthy
Uptime
5.4% over 55 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL

TDQS

Score is being calculated.

Available Tools

61 tools
ask_supportInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
post_idNoOptional post ID to inspect directly.
page_urlNoOptional posterly page URL for context.
questionYes
workspace_idNoWorkspace to inspect. Omit to use the API-key scoped workspace or personal workspace.
request_humanNoAsk for human review. Does not create a ticket unless this is a follow-up in a conversation that already has an assistant answer and confirm_escalation is also true.
conversation_idNoContinue a previous support conversation.
confirm_escalationNoMust be true after explicit user confirmation that the previous assistant answer did not solve the issue.
referenced_post_idsNoOptional post IDs to include in read-only diagnostics.
audit_google_business_profile
Read-onlyIdempotent
Inspect

Run a live local-profile audit for a connected Google Business Profile location. Returns the 0-100 completeness score, letter grade, a score for each section (profile basics, hours, categories, description, photos, attributes, review health), and recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoGoogle Business social account ID from list_accounts.
location_idNoGoogle Business numeric location id (the location_id/platform_user_id from list_accounts, e.g. "197940849675145390"). NOT the ChIJ... Place ID from list_google_business_reviews view=review_link. Prefer account_id.
workspace_idNo
cancel_subscription
DestructiveIdempotent
Inspect

Cancel the authenticated user's posterly subscription. DESTRUCTIVE billing action; requires the billing:write scope. ALWAYS ask the user why they are cancelling FIRST and pass their answer as reason (one of the allowed values). By default an active or trialing plan is set to cancel at the end of the current period. A past_due or unpaid plan always ends now, even when immediate is false: the unpaid renewal is dropped and payment retries stop. Pass immediate=true only when the user explicitly wants an active plan cancelled right now. Only call after the user explicitly confirms.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonYesWhy the user is cancelling. Ask the user before calling; do not guess.
confirmYesMust be true after the user explicitly confirms the cancellation.
feedbackNoOptional free-text detail the user gave about why they are cancelling.
immediateNoCancel immediately instead of at period end. Defaults to false. Ignored for past_due and unpaid plans, which always end now.
connect_account
Idempotent
Inspect

Connect a credential-based social account (telegram, bluesky, discord, wordpress, devto, hashnode, lemmy) directly, without a browser session. Call list_platforms with view=connect_link first to discover the exact credential fields the platform needs. Prefer scoped secrets: app passwords (Bluesky, WordPress), bot tokens (Telegram), webhook URLs (Discord), and API tokens (Dev.to, Hashnode) over primary passwords. Warn the user that any credential they share passes through this conversation. For OAuth platforms (Instagram, X, LinkedIn, ...) use create_connect_session instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
patNoHashnode: personal access token from Account Settings, Developer.
handleNoBluesky: handle, for example posterly.bsky.social.
api_keyNoDev.to: API key from Settings, Extensions, DEV Community API Keys.
chat_idNoTelegram: target channel or group chat ID.
instanceNoLemmy: instance domain, for example lemmy.world.
passwordNoLemmy: account password (TOTP-enabled accounts are not supported).
platformYesCredential-based connection target: telegram, bluesky, discord, wordpress, devto, hashnode, or lemmy.
site_urlNoWordPress: site URL, e.g. https://blog.example.com.
usernameNoWordPress: username the application password belongs to. Lemmy: username or email.
bot_tokenNoTelegram: bot token from BotFather.
webhook_urlNoDiscord: channel webhook URL from channel settings, Integrations, Webhooks.
app_passwordNoBluesky: app password from account settings. WordPress: application password from wp-admin Users, Profile, Application Passwords.
workspace_idNoWorkspace to connect the account into. Workspace-scoped API keys ignore this.
connect_session_idNoOptional connect session ID to mark connected or failed based on the outcome.
create_api_keyInspect

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. Team management (members:read, members:write) and client portal sign-in link permissions are never copied or granted here: a person turns them on in /dashboard/api.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoHuman-readable key name.
scopesNoScopes for the new key. Omit to copy the calling key scopes. Cannot exceed the calling key scopes. billing:read and billing:write allow managing the posterly subscription (cancel/pause/resume/downgrade).
confirmYesMust be true after the user explicitly confirms that a new secret API key should be created.
workspace_idNoOptional workspace restriction. Workspace-scoped calling keys cannot create keys outside their workspace.
expires_in_daysNoOptional expiry from now, up to 365 days. Omit for no expiry.
create_connect_sessionInspect

Create a short-lived dashboard handoff session for connecting a social account. Open connect_session.connect_url for the user, then poll list_accounts with view=connect_session so you can narrate progress.

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYesConnection target such as instagram, meta, linkedin_page, twitter, telegram, bluesky, discord, slack, mastodon, devto, hashnode, wordpress, or lemmy.
auto_startNoWhen true, the posterly dashboard starts the provider flow after the user opens the URL.
workspace_idNoWorkspace to connect the account into. Workspace-scoped API keys ignore this.
create_media_dropInspect

Create a human drop page so ChatGPT or Claude users can upload a laptop file without dashboard login. Returns drop_url (https://www.poster.ly/drop/). Send that URL to the user, wait, then call list_media. This is not the chat paperclip and not create_signed_upload.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameNoOptional filename hint, e.g. launch-video.mp4
max_filesNo
workspace_idNoOptional. The workspace this acts in and whose plan pays (from whoami). Needed only when your connection can act in several workspaces.
create_postInspect

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. For Instagram, distinguish caption @mentions from native instagram_settings.user_tags and co-author instagram_settings.collaborators; call list_platforms with view=schema and account_id before either native feature. Native media tags work with eligible direct or Meta-linked accounts; collaborators require an eligible Meta-linked account. Instagram caption add-ons (caption_addon poll or comment prompt) need a Facebook Login account, a caption, and a feed photo, Reel, or carousel. Stories are rejected, and a poll cannot be combined with a comment prompt. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
captionNoPost caption/text. On Instagram, @username creates a caption mention only; it is not a native media tag or collaborator invitation. Ignored when thread_posts is provided.
confirmYesMust be true after the user explicitly confirms the post/account/workspace/schedule.
metadataNo
platformNoPlatform name when using username. Supported: instagram, facebook, tiktok, twitter, linkedin, youtube, pinterest, threads, google_business, telegram, bluesky, discord, slack, mastodon, devto, hashnode, wordpress, lemmy. Aliases x, gmb, and instagram-standalone are also accepted by the API.
settingsNoDeprecated alias of platform_settings (or instagram_settings for Instagram). Prefer those instead.
usernameNoAccount username; requires platform.
media_urlNoMedia URL. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into posterly storage before the post is saved. Short-lived signed URLs must still be live when this tool runs.
post_typeNoOptional post type. Omit for auto-detection from media. Supported semantic values include text, image, video, carousel, reel, story, story_series, document, x_thread, threads_thread, photo, and cover_photo.
account_idNoSocial account ID from list_accounts.
media_urlsNoMedia URLs. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into posterly storage before the post is saved.
scheduled_atNoISO 8601 UTC datetime. Omit to publish immediately.
thread_postsNoFor X or Threads: 2+ entries, one per post in the reply chain.
workspace_idNoWorkspace ID from whoami.
platform_settingsNoPlatform-specific composer controls, flattened across all platforms (unrelated fields ignored). Required: YouTube title; Pinterest board_id (cover_image_url also required for video Pins); Lemmy community. Accepted via passthrough but not listed below: Lemmy community/title, Dev.to canonical_url, Hashnode publication_id, Telegram parse_mode/disable_web_page_preview, Google Business post_type (STANDARD/EVENT/OFFER, alias topic_type), TikTok auto_add_music/photo_cover_index/media_type, Facebook post_type (incl. cover_photo), Mastodon language. Call list_platforms with view=schema and account_id for the full field list and examples.
instagram_settingsNoInstagram-specific settings. Distinguish caption @mentions (put @username in caption) from native media tags (user_tags) and co-author invitations (collaborators). Call list_platforms with view=schema and account_id first.
create_posts_batchInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
postsYes
confirmYesMust be true after the user explicitly confirms every post in the batch.
create_signed_uploadInspect

Create a signed upload URL for a larger image or video. PUT the raw bytes to the returned upload_url (object storage) with the returned headers, then pass public_url to create_post.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeYes
filenameYes
content_typeYes
workspace_idNoOptional. The workspace this acts in and whose plan pays (from whoami). Needed only when your connection can act in several workspaces.
create_webhookInspect

Create a webhook subscription for post/account/analytics events. WRITE WITH OUTBOUND SIDE EFFECTS: show the user the target URL, workspace, events, and active state, then get explicit confirmation before calling. The response includes the signing secret once.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
eventsNo
confirmYesMust be true after the user explicitly confirms webhook creation.
is_activeNo
descriptionNo
workspace_idNo
delete_api_key
DestructiveIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
key_idYesAPI key ID to revoke. This is the API key resource ID, not the secret pst_live_ value.
confirmYesMust be true after the user explicitly confirms API key revocation.
delete_post
DestructiveIdempotent
Inspect

Delete posts. DESTRUCTIVE and IRREVERSIBLE. post_id: delete one post; fetch it with get_post first, confirm what will be deleted, then pass confirm=true. A post that is currently publishing is never deleted. A published post is taken down only when the user also explicitly confirms the live removal and you pass confirm_published=true. Choose delete_mode=posterly to remove only the posterly record and leave the live post up, or delete_mode=platform with confirm_published=true to take down the live post too. Live deletion supports eligible connected platforms with saved post IDs and deletion permissions; refusals keep the record. Threads requires threads_delete. YouTube requires youtube.force-ssl or equivalent, upload alone is insufficient. A published post with no live URL and no platform id is removed from posterly only. group_id: delete every draft, scheduled, failed, or paused post matching a caller-defined group_id, post_group_id, api_group_id, or release_id. A group delete never removes published posts. Preview then confirm: call without confirm to get a preview and preview_id, show it, then call again with confirm=true and that preview_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNopost_id: true after the user explicitly confirms the deletion. group_id: Leave out to get a preview and preview_id. Set true only after the user explicitly approved the preview, together with preview_id.
post_idNoDelete this one post.
group_idNoDelete every unpublished post in this group or release instead. Never deletes published posts.
preview_idNoThe preview_id from the preview call. Required with confirm: true for actions that preview first.
delete_modeNoRemove the posterly record only, or also take down the live post.
confirm_publishedNoWith post_id only. True only after the user explicitly confirms taking a live post down. Required with delete_mode=platform. Use delete_mode=posterly to leave the live post up.
disconnect_account
DestructiveIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true after the user explicitly confirms the account disconnect.
account_idYesConnected social account ID from list_accounts.
dismiss_suggestion
DestructiveIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
suggestion_idYesSuggestion ID from list_post_suggestions.
downgrade_subscription
DestructiveIdempotent
Inspect

Downgrade the authenticated user's posterly subscription one tier (or to an explicit lower tier) at the next renewal with no proration. Billing action; requires the billing:write scope. Only call after the user explicitly confirms.

ParametersJSON Schema
NameRequiredDescriptionDefault
tierNoOptional explicit target tier. Omit to drop one tier automatically.
confirmYesMust be true after the user explicitly confirms the downgrade.
find_available_slot
Read-onlyIdempotent
Inspect

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). strategy "best_engagement" (needs account_ids) ranks the next 7 days by when these accounts get the most engagement, with a 1-5 star rating and a reason per slot.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of slots to return (max 10). Default 5 for next_free, 3 for best_engagement.
strategyNonext_free: earliest free slots. best_engagement: best times by engagement (requires account_ids).next_free
timezoneNoIANA timezone, e.g. Europe/London
account_idsNo
workspace_idNo
generate_captionsInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNogenerate
toneNo
briefNo
countNo
platformsYes
allow_emojisNo
workspace_idNo
preserve_linksNo
source_captionNo
source_platformNo
hashtag_strategyNosmart
preserve_mentionsNo
social_account_idNo
manual_brand_voiceNo
preserve_call_to_actionNo
generate_imageInspect

Queue an AI image job via posterly using Nano Banana (Gemini) or Grok Imagine Image 2.0 (xAI). Returns job_id. Poll list_jobs with type=image for urls. Thinking high does not change the credit price. COSTS CREDITS - confirm subject + style + aspect_ratio + quality + provider with the user before calling.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoGoogle-only: lite (8 credits, 1K only), flash (Nano Banana 2.1, 15 at 1K), or pro (30 at 1K). Ignored for xAI.flash
styleNophotographic
promptYes
confirmYesMust be true after the user explicitly confirms subject, style, aspect ratio, quality, and credit use.
qualityNoGoogle: high turns on Gemini thinking. low/medium leave thinking minimal unless thinking_level is set. xAI: low or medium credit tiers.
providerNogoogle for Nano Banana or xai for Grok Imagine Image 2.0.google
resolutionNoxAI supports 1K/2K only. Google flash (Nano Banana 2.1) bills 15/23/35 for 1K/2K/4K. 512 is no longer available. Pro bills 30 at 1K-2K and 55 at 4K.1K
variationsNo
aspect_ratioNo1:1
workspace_idNoOptional. The workspace this acts in and whose plan pays (from whoami). Needed only when your connection can act in several workspaces.
thinking_levelNoGoogle flash/lite. Gemini image quality control. minimal is fastest; high is for infographics and harder layouts. Overrides quality when both are set.
reference_image_urlsNoGoogle only. Up to 14 HTTPS image URLs used as references (logo, product, style lock).
generate_videoInspect

Queue an AI video job with Google Veo 3.1 or xAI Grok Imagine Video 1.5. COSTS CREDITS - confirm provider, prompt, duration, resolution, aspect ratio, audio choice, and credit cost with the user before calling. Poll list_jobs with type=video for status and final video_url.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNofast
promptYes
confirmYesMust be true after the user explicitly confirms prompt, model, duration, resolution, and credit cost.
providerNogoogle
image_urlNo
resolutionNo720p
aspect_ratioNo16:9
workspace_idNoOptional. The workspace this acts in and whose plan pays (from whoami). Needed only when your connection can act in several workspaces.
end_image_urlNo
generate_audioNoGoogle can disable generated audio. xAI Grok includes audio and requires this to remain true.
negative_promptNo
duration_secondsNo
reference_imagesNo
source_video_urlNo
get_credits
Read-onlyIdempotent
Inspect

Get the authenticated user's posterly AI credit balance: what is available to spend now, how much of the monthly included allowance is left, purchased pack balance, plan tier, and when the included pool next resets. Credits are a shared WORKSPACE wallet, so this reports the balance the caller can actually spend, not a personal figure. Read-only, spends nothing. Requires the billing:read scope.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

get_post
Read-onlyIdempotent
Inspect

One post by ID. view=post (default): caption, status, scheduled time, media, and platform info. view=missing: whether the post is missing required content, media, account, platform settings, or metadata before it can publish; use it to repair failed or imported posts.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNopost (default) or missing.post
post_idYesThe post ID to look up
get_subscription
Read-onlyIdempotent
Inspect

Get the authenticated user's posterly subscription: status, tier, cancel-at-period-end, current period end, trial end, and pause state. Read-only. Requires the billing:read scope.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

get_updates
Read-onlyIdempotent
Inspect

Get the latest posterly product updates and news from the updates feed: new features, improvements, and fixes, newest first. The output says whether more updates exist; page with offset or narrow with since. Requires an active posterly subscription.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of updates to return. Default 10, max 50.
sinceNoISO date. Return updates published on or after this date.
offsetNoHow many updates to skip. Use the offset the previous page gives to get the next page.
include_contentNoInclude the full markdown body of each update. Defaults to false.
get_video_options
Read-onlyIdempotent
Inspect

List read-only Google Veo and xAI Grok video generation options, input modes, durations, resolutions, aspect ratios, and credit-cost estimates. Does not generate video or spend credits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

get_x_posting_quota
Read-onlyIdempotent
Inspect

Get managed X posting quota, usage, remaining posts, URL-blocking status, and add-on plan info for a workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_idNo
list_accounts
Read-onlyIdempotent
Inspect

Connected social accounts and what posterly has learned about them. view=accounts (default): connected accounts, optionally one workspace_id or one account_id; Instagram rows show direct-login vs Meta-linked and whether native media tags/collaborators are available, so check this before Instagram user_tags or collaborators. view=learned_voice (account_id): the voice learned from the account's real published captions (summary, traits, style guidelines, habits); read-only, never overwrites the brand profile. view=performance_profile (account_id): 90-day coaching stats, engagement-rate trend, and summary, or null with a reason (Pro plan or higher). view=connect_session (session_id): poll a session from create_connect_session and narrate status_message; stop at connected, failed, cancelled, or expired.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoaccounts (default), learned_voice, performance_profile, or connect_session.accounts
account_idNoSocial account ID from list_accounts. Required for learned_voice and performance_profile; with view=accounts it returns just that account.
session_idNoview=connect_session: the connect session ID returned by create_connect_session.
workspace_idNoview=accounts: filter to a specific workspace; omit for all the caller can access.
list_activity
Read-onlyIdempotent
Inspect

List recent activity and publish events for posts, including status changes, publish attempts, failures, and retries, newest first. Use this as the agent notifications feed. The output says whether more events exist; page with offset (offset + limit up to 1000) or narrow with since or post_id before concluding nothing else happened.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoall
limitNo
sinceNoISO datetime. Return events created at or after this time.
offsetNoHow many events to skip. Use the offset the previous page gives to get the next page.
post_idNo
workspace_idNo
list_analytics
Read-onlyIdempotent
Inspect

Analytics for connected accounts (Instagram, X, Facebook Pages, LinkedIn, Google Business Profile, Pinterest, YouTube, and Threads). view=accounts (account_id): daily snapshots and a period summary with platform-native display_metrics labels. Google Business Profile account analytics includes Calls, Website clicks, and Directions along with Profile Views, Search Views, Maps Views, Customer Actions, and Posts. view=posts (account_id): per-post likes, comments/replies, reach, impressions/views, saves, shares, reposts, quotes, and plays, most recent first, with limit/offset. view=insights: per-post feedback insights with a performance tier, diagnosis, next action, and baseline, filtered by account_id, post_id, or checkpoint (1h, 6h, 24h, 72h, 7d); Pro plan or higher. presentation (accounts and posts): compact for Telegram/mobile, table for Markdown clients, json for custom chart/card renderers.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoaccounts and posts: ISO date, default today
fromNoaccounts and posts: ISO date, default 30 days ago
viewYesaccounts, posts, or insights.
limitNoposts: default 50, max 200. insights: default 20, max 100.
offsetNoposts only.
post_idNoinsights: filter to one post ID.
account_idNoSocial account ID (from list_accounts). Required for accounts and posts.
checkpointNoinsights: filter to one checkpoint after publish.
presentationNoaccounts and posts: compact bullets, Markdown table, or raw JSON for client-side chart/card rendering.compact
list_brands
Read-onlyIdempotent
Inspect

Brands (clients) and their saved context. view=brands (default): brands the caller can access with brand ID, name, workspace ID, source, and account count (optional workspace_id). view=brand (brand_id): one brand with its workspace, source, and linked legacy brand group. view=accounts (brand_id): the social accounts assigned to the brand; use it when the user names a brand rather than an account handle. view=profile (brand_id): voice and tone, audience, keywords, dos and don’ts, visual notes, and other saved brand context.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNobrands (default), brand, accounts, or profile.brands
brand_idNoThe brand ID (from view=brands). Required for brand, accounts, and profile.
workspace_idNoview=brands: filter to a specific workspace; omit to list brands across every accessible workspace.
list_comments
Read-onlyIdempotent
Inspect

Social inbox comments and replies for Instagram, Facebook Pages, Threads, and LinkedIn Pages (Pro plan or higher plus posts:read). Without comment_id: list comments filtered by account, platform, unread/flagged, or search, with limit/offset paging. With comment_id: one comment and its replies; only workspace_id may be added.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of comments to return. Default 50, max 100.
filterNoComment filter. Defaults to all.
offsetNoSkip this many comments before returning results.
searchNoSearch comment content or author username.
platformNoinstagram, facebook, threads, or linkedin.
account_idNoSocial account ID from list_accounts.
comment_idNoOne comment (from a list call) with its replies.
workspace_idNoOptional. Omit to search every workspace you belong to; pass a workspace ID from whoami to limit to one.
list_conversations
Read-onlyIdempotent
Inspect

Social inbox DM conversations for Instagram and Facebook Page inboxes (Threads has no DMs; Pro plan or higher plus posts:read). Without conversation_id: list conversations filtered by account, platform, unread/starred/archived, or search, with limit/offset paging. With conversation_id: one conversation and its messages; there limit is the number of messages (default 50, max 100) and only workspace_id may be added.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoConversations to return, or messages with conversation_id. Default 50, max 100.
filterNoConversation filter. Defaults to all (excludes archived).
offsetNoSkip this many conversations before returning results.
searchNoSearch participant username or last message preview.
platformNoinstagram or facebook. Threads has no DMs.
account_idNoSocial account ID from list_accounts.
workspace_idNoOptional. Omit to search every workspace you belong to; pass a workspace ID from whoami to limit to one.
conversation_idNoOne conversation (from a list call) with its messages.
list_google_business_media
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoGoogle Business social account ID from list_accounts.
location_idNoGoogle Business numeric location id (the location_id/platform_user_id from list_accounts, e.g. "197940849675145390"). NOT the ChIJ... Place ID from list_google_business_reviews view=review_link. Prefer account_id.
workspace_idNoFilter to a workspace ID from whoami.
list_google_business_reviews
Read-onlyIdempotent
Inspect

Google Business Profile reviews. view=reviews (default): reviews for one location/account or every accessible location, paging through everything Google has (not just the first 50) with the full untruncated review text, its date, and each location's total review count; filter by rating or unanswered, page with limit/offset. view=review_link (account_id or location_id): the direct public Google review link plus the Google Place ID (ChIJ...); that Place ID is output only and must NOT be passed back as location_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoreviews (default) or review_link.reviews
limitNoreviews: maximum reviews to return in this call. Every returned review is listed in full.
offsetNoreviews: skip this many reviews before returning results. Use with limit to page through a location with more reviews than one call returns.
ratingNoreviews only.
account_idNoGoogle Business social account ID from list_accounts.
unansweredNoreviews only.
location_idNoGoogle Business numeric location id (the location_id/platform_user_id from list_accounts, e.g. "197940849675145390"). NOT the ChIJ... Place ID from list_google_business_reviews view=review_link. Prefer account_id.
workspace_idNo
list_jobs
Read-onlyIdempotent
Inspect

AI generation jobs. type=image: one image job by job_id, or recent image jobs when job_id is omitted (filter by status, limit); poll it after generate_image for the finished urls. type=video: one video job by job_id, or recent video jobs (status includes dismissed, limit); poll it after generate_video for the finished video_url.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesimage or video.
limitNo
job_idNoOne job. Leave out to list recent jobs.
statusNoFilter a job list. dismissed is video only.
list_media
Read-onlyIdempotent
Inspect

List the newest media assets for the authenticated user. After create_media_drop, pass drop_session_id to see files uploaded on /drop/. Use public_url with validate_post / create_post. The output says whether every matching file is shown; page with offset (offset + limit up to 1000) when it is not.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNoHow many assets to skip. Use the offset the previous page gives to get the next page.
drop_session_idNo
list_oauth_clients
Read-onlyIdempotent
Inspect

List self-serve OAuth developer clients owned by the user. These are public PKCE clients for third-party app integrations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

list_platforms
Read-onlyIdempotent
Inspect

Platforms, settings schemas, and connection links. view=platforms (default): every posterly integration with posting capabilities, content and media limits, settings schemas, helper tools, and analytics support. view=schema: the settings schema for one connected account_id (preferred: returns account context and connection-specific capabilities, needed before Instagram native tags/collaborators) or one platform; account_id wins if both are given. view=connect_link: dashboard connection links and readiness for every target, or one target (instagram, meta, linkedin_page, twitter, telegram, reddit, wordpress, ...); credential platforms show the credential_fields that connect_account needs. For a guided flow with pollable status, use create_connect_session.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoplatforms (default), schema, or connect_link.platforms
targetNoview=connect_link: optional connection target such as instagram, meta, linkedin_page, twitter, telegram, reddit, or wordpress.
platformNoview=schema: platform ID. Aliases x, gmb, and instagram-standalone are also accepted by the API.
account_idNoview=schema: connected social account ID from list_accounts. Preferred because it returns account context.
workspace_idNoview=connect_link: filter connected account counts to a workspace.
include_plannedNoInclude planned integration possibilities such as reddit, medium, skool, whop.
list_posts
Read-onlyIdempotent
Inspect

Posts in your workspaces, teammates' too, per your role there (brand-locked seats only see their assigned brands). If workspace_id is omitted, this searches every workspace you belong to. view=list (default): posts filtered by status (scheduled, published, failed, draft), platform, account_id, workspace_id, brand_id, approval_status, approval_waiting_on, and a scheduled date range: scheduled_from (inclusive) and scheduled_to (a plain date includes that whole day), read in timezone (IANA, default UTC; also the zone times are shown in). Returns limit posts (default 20, max 200) starting at offset; with a date range the order defaults to oldest first (order=asc|desc). The output always says whether every matching post was shown. If it says more are available, call again with the offset it gives and keep paging until all are shown before drawing any conclusion about totals, gaps, or how busy a client is. view=counts (scheduled_from and scheduled_to required, up to 366 days): exact totals per day, status, account, and brand for the same filters (limit, offset, and order are ignored); use it for "how many" or "is this month full" questions. approval_waiting_on=client is the same queue as approval_status=pending_client. Each post includes approval.pending_client_approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNolist (default): the posts themselves, one page at a time. counts: exact totals per day, status, account, and brand (needs scheduled_from and scheduled_to).list
limitNoPosts per page (default 20, max 200). Ignored by view=counts.
orderNoasc (oldest first) or desc (newest first). Default asc with a date range, otherwise desc. Ignored by view=counts.
offsetNoHow many matching posts to skip. Use the offset the previous page gives to get the next page. Ignored by view=counts.
statusNo
brand_idNoFilter to posts assigned to a specific brand/client (the id from list_brands).
platformNo
timezoneNoIANA time zone such as Europe/London for reading plain dates and showing times. Default UTC.
account_idNo
scheduled_toNoEnd of the scheduled range: a plain date (2026-10-31) includes that whole day; an ISO date-time is exclusive.
workspace_idNo
scheduled_fromNoStart of the scheduled range, inclusive: a date (2026-10-01) or an ISO date-time. Plain dates and times without an offset are read in timezone.
approval_statusNoFilter by client review approval status. pending_client means the post is waiting on the client.
approval_waiting_onNoclient: approval_status pending_client. team: changes_requested or rejected. Conflicts with a non-overlapping approval_status.
list_post_suggestions
Read-onlyIdempotent
Inspect

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). The output says whether every matching suggestion is shown; page with offset until it does. Read-only; requires a Pro plan or higher. Use dismiss_suggestion to hide one.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNoHow many suggestions to skip. Use the offset the previous page gives to get the next page.
statusNopending
account_idNoFilter to one social account ID (from list_accounts).
list_publishing_pauses
Read-onlyIdempotent
Inspect

Is publishing paused? Shows whether the workspace is paused, which brands are paused (only brands you can see), and whether you may pause, resume, or publish missed posts. Read-only. Change it with manage_publishing_pause.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_idNoWorkspace ID from whoami. Defaults to your default workspace.
list_webhooks
Read-onlyIdempotent
Inspect

List API webhook subscriptions, their event filters, active state, and most recent delivery status.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_idNo
list_workspace_members
Read-onlyIdempotent
Inspect

List the people in a workspace: members (with role, status, brand access and API access) and pending invites, plus seats in use. API access says whether a teammate can use this workspace's API plan from their own keys and AI apps; owners and admins also see each member's key count, connected AI apps and last use. Works with an API key that has the Manage team permission (any workspace member can list; brand-limited teammates only see brand ids they can access), or from ChatGPT, Claude and other OAuth connections when the user is an owner or admin of the workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
workspace_idYesWorkspace ID (from whoami).
manage_comment
Destructive
Inspect

Act on an inbox comment (Pro plan or higher plus posts:write). action=reply (comment_id, content): reply to an Instagram, Facebook Page, Threads, or LinkedIn Page comment; type private is Instagram only, the others are public replies only. action=update (comment_id, is_hidden and/or is_read): hide or unhide it on the platform, or mark it read or unread; reversible, no confirm needed. action=delete (comment_id): delete an Instagram or Facebook Page comment, irreversible and admin only; Threads replies cannot be deleted, hide them instead. reply and delete use preview then confirm: call without confirm to get a preview and preview_id, show it, then call again with confirm=true and that preview_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoreply: public (default) or private. Private is Instagram only.
actionYesreply, update, or delete.
confirmNoreply and delete: Leave out to get a preview and preview_id. Set true only after the user explicitly approved the preview, together with preview_id.
contentNoreply: reply text to post.
is_readNoupdate: mark the comment read or unread in posterly.
is_hiddenNoupdate: hide or unhide the comment on Instagram, Facebook, or Threads.
comment_idYesComment ID from list_comments.
preview_idNoThe preview_id from the preview call. Required with confirm: true for actions that preview first.
workspace_idNoOptional. Omit to search every workspace you belong to; pass a workspace ID from whoami to limit to one.
manage_conversationInspect

Act on the social inbox (Pro plan or higher plus posts:write). action=send (conversation_id, content): send a DM reply in an Instagram or Facebook Page conversation, honoring the 24-hour messaging window (Threads has no DMs); preview then confirm: call without confirm to get a preview and preview_id, show it, then call again with confirm=true and that preview_id. action=sync (account_id): pull the latest Instagram, Facebook Page, Threads, or LinkedIn inbox data for one account; 30-second cooldown (60 for LinkedIn); Threads and LinkedIn sync comments only.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYessend or sync.
confirmNosend: Leave out to get a preview and preview_id. Set true only after the user explicitly approved the preview, together with preview_id.
contentNosend: message text to send.
sync_typeNosync: what to sync. Defaults to all. Threads and LinkedIn are comments-only.
account_idNosync: social account ID from list_accounts.
preview_idNoThe preview_id from the preview call. Required with confirm: true for actions that preview first.
workspace_idNoOptional. Omit to search every workspace you belong to; pass a workspace ID from whoami to limit to one.
conversation_idNosend: conversation ID from list_conversations.
manage_google_business_media
Destructive
Inspect

Change a Google Business Profile gallery (the photos and videos shown on Maps and Search). action=add (source_url, category): add a photo or video from a public https URL (upload it with upload_media first); COVER and PROFILE are single-slot and replace the existing one. action=delete (media_name from list_google_business_media): permanently remove an item from the public profile. Both use preview then confirm: call without confirm to get a preview and preview_id, show it, then call again with confirm=true and that preview_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesadd or delete.
confirmNoLeave out to get a preview and preview_id. Set true only after the user explicitly approved the preview, together with preview_id.
categoryNoadd: which gallery category to add the media to.
account_idNoGoogle Business social account ID from list_accounts.
media_nameNodelete: full media resource name from list_google_business_media (accounts/.../locations/.../media/...).
preview_idNoThe preview_id from the preview call. Required with confirm: true for actions that preview first.
source_urlNoadd: public https URL of the photo or video (from upload_media). Photos must be JPG or PNG, 10 KB to 5 MB.
location_idNoGoogle Business numeric location id (the location_id/platform_user_id from list_accounts, e.g. "197940849675145390"). NOT the ChIJ... Place ID from list_google_business_reviews view=review_link. Prefer account_id.
media_formatNoadd: defaults to PHOTO. Use VIDEO for videos (Google caps profile videos at 30s / 75MB).
workspace_idNoFilter to a workspace ID from whoami.
manage_google_business_review
Destructive
Inspect

Act on Google Business Profile reviews. action=suggest_reply (star_rating, optional review_text): short, brand-aware AI reply suggestions; uses the AI Caption Assist allowance and never posts. action=reply (review_name, comment): post or update the owner reply. action=delete_reply (review_name): delete the owner reply. reply and delete_reply use preview then confirm: call without confirm to get a preview and preview_id (it repeats the review name, location, and exact reply text; show the reviewer, rating, and review text from list_google_business_reviews alongside it), then call again with confirm=true and that preview_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
toneNoprofessional
countNo
actionYessuggest_reply, reply, or delete_reply.
commentNoreply: the exact owner reply text.
confirmNoreply and delete_reply: Leave out to get a preview and preview_id. Set true only after the user explicitly approved the preview, together with preview_id.
account_idNoGoogle Business social account ID from list_accounts (optional brand voice context for suggest_reply).
preview_idNoThe preview_id from the preview call. Required with confirm: true for actions that preview first.
location_idNoGoogle Business numeric location id (the location_id/platform_user_id from list_accounts, e.g. "197940849675145390"). NOT the ChIJ... Place ID from list_google_business_reviews view=review_link. Prefer account_id.
review_nameNoreply and delete_reply: full Google review resource name.
review_textNosuggest_reply: the review text. Leave empty for rating-only reviews.
star_ratingNosuggest_reply: review rating from 1 to 5.
workspace_idNo
business_nameNo
reviewer_nameNo
manage_oauth_client
Destructive
Inspect

Manage self-serve OAuth 2.1 + PKCE developer clients (public clients with no client secret; list them with list_oauth_clients). action=create: client_name, allowed_redirect_uris, and default_scopes; confirm=true only after the user confirms the name, redirect URIs, and scopes. action=update: client_id plus the changed fields; confirm=true after the user confirms the changes. action=delete: client_id; prevents new authorizations (existing access tokens stay revocable as API keys); preview then confirm: call without confirm to get a preview and preview_id, show it, then call again with confirm=true and that preview_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYescreate, update, or delete.
confirmNocreate and update: true after explicit user confirmation. delete: Leave out to get a preview and preview_id. Set true only after the user explicitly approved the preview, together with preview_id.
homepageNo
client_idNoupdate and delete: the client_id from list_oauth_clients.
is_activeNo
preview_idNoThe preview_id from the preview call. Required with confirm: true for actions that preview first.
client_nameNocreate (required) or update.
descriptionNo
default_scopesNocreate (required) or update.
allowed_redirect_urisNocreate (required) or update.
manage_publishing_pause
Destructive
Inspect

Pause or resume publishing for a whole workspace or one brand (check it first with list_publishing_pauses). Only act when the user asks; never pause on your own initiative. action=pause (optional brand_id; leave it out for the whole workspace): holds every scheduled post in that scope and blocks Post now until an admin resumes. Call it first without confirm to get a preview (scope and how many scheduled posts it holds), show it to the user, and only after they agree call again with confirm=true. Publisher or higher; a seat limited to some brands can only pause those brands. action=resume (optional brand_id; admin or higher): future posts are scheduled again; posts whose time passed while paused stay paused and are listed as missed. Missed posts never publish on their own. action=publish_missed (post_ids from the resume, confirm=true after the user agrees; admin or higher): publishes those missed posts now.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYespause, resume, or publish_missed.
confirmNopause: leave out to get a preview; true only after the user agreed. publish_missed: true after the user agreed. resume: not needed.
brand_idNopause and resume: a brand ID from list_brands. Leave it out (never empty) for the whole workspace.
post_idsNopublish_missed: the missed post IDs a resume returned.
workspace_idNoWorkspace ID from whoami. Defaults to your default workspace.
manage_webhook
Destructive
Inspect

Change a webhook subscription (list them first with list_webhooks). action=update (webhook_id): change URL, events, workspace, description, or active state; outbound side effects, so pass confirm=true only after explicit confirmation. action=delete (webhook_id): remove the subscription; preview then confirm: call without confirm to get a preview and preview_id, show the URL, events, and workspace, then call again with confirm=true and that preview_id. action=test (webhook_id): send a signed webhook.test delivery; confirm=true after explicit confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoupdate only.
actionYesupdate, delete, or test.
eventsNoupdate only.
confirmNoupdate and test: true after the user explicitly confirms. delete: Leave out to get a preview and preview_id. Set true only after the user explicitly approved the preview, together with preview_id.
is_activeNoupdate only.
preview_idNoThe preview_id from the preview call. Required with confirm: true for actions that preview first.
webhook_idYesWebhook ID from list_webhooks.
descriptionNoupdate only.
workspace_idNoupdate only. null clears the workspace.
manage_workspace_member
Destructive
Inspect

Invite, update, or remove a workspace colleague. This SENDS EMAILS and CHANGES WHO CAN ACCESS the workspace. Works with an API key that has the Manage team permission, or from ChatGPT, Claude and other OAuth connections; either way the user must be a workspace owner or admin. ALWAYS preview first: call without confirm, show the returned preview summary to the user, and only call again with confirm: true plus the returned preview_id after the user explicitly approves. action=invite: email and role required (publisher, editor or viewer), optional brand_ids and resend; always sends a pending invite email, never adds anyone instantly. action=update: member_id or invite_id (from list_workspace_members) plus role and/or brand_ids; or member_id plus api_access (true or false, on its own) to turn API and AI app access on or off for that teammate, which lets them use the workspace API plan from their own keys and AI apps (off by default; you cannot change your own; only the owner can change it for an admin; turning it off stops their keys, AI app connections and webhooks for this workspace). action=remove: member_id (removes the teammate and revokes their API keys for this workspace) or invite_id (cancels a pending invite). Admin seats can only be granted in the posterly dashboard. The workspace owner is emailed about every change.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoaction=invite (required) or action=update: publisher, editor, or viewer. Admin is dashboard-only.
emailNoaction=invite only: the colleague email address.
actionYesinvite, update, or remove.
resendNoaction=invite only: email an unchanged pending invite again.
confirmNoLeave out to get a preview. Set true only after the user explicitly approved the preview, together with preview_id.
brand_idsNoaction=invite or action=update: limit the seat to these brand IDs (from list_brands). Empty array means every brand. Omit on update to keep the current brands.
invite_idNoaction=update or action=remove: a pending invite ID from list_workspace_members.
member_idNoaction=update or action=remove: a member ID from list_workspace_members.
api_accessNoaction=update with member_id only, on its own: true lets the teammate use this workspace's API plan from their own keys and AI apps; false turns it off.
preview_idNoThe preview_id returned by the preview call. Required with confirm: true.
workspace_idYesWorkspace ID (from whoami).
pause_subscription
DestructiveIdempotent
Inspect

Pause the authenticated user's posterly subscription for 30 days (one pause allowed per 90-day cooldown). Billing action; requires the billing:write scope. Only call after the user explicitly confirms.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true after the user explicitly confirms pausing the subscription.
resume_subscription
Idempotent
Inspect

Resume the authenticated user's paused posterly subscription, restoring active billing. Requires the billing:write scope.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

run_video_function
Read-onlyIdempotent
Inspect

Run a read-only Google Veo or xAI Grok video helper function before generation. Does not generate video or spend credits.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoFunction parameters. estimate_cost accepts model, duration_seconds, resolution, output, and xAI input_image_count. validate_request accepts a generate_video-style payload.
identifierYesVideo generator identifier from get_video_options.
functionNameYesHelper function name from get_video_options.tools.
submit_agent_feedbackInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolYes
clientNo
sourceYes
commentNo
contextNo
outcomeYes
error_codeNo
submit_product_feedbackInspect

File a product bug, idea, or general feedback on the public posterly feedback board (same board users see in the dashboard). Only call this when the human explicitly asks to report a bug, suggest a feature, or send feedback to posterly. Require confirm=true after they approve the title and category. Never use this for tool failures or retries - use submit_agent_feedback for private operational telemetry. Never include API keys, secrets, captions, media URLs, or personal data about third parties. Requires an authenticated bearer API key and paid API add-on.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
clientNo
sourceNo
confirmYes
contextNo
categoryYes
descriptionNo
trigger_platform_helper
Read-onlyIdempotent
Inspect

Run a platform helper for account-specific discovery, such as pinterest.boards, tiktok.creator_info, linkedin.recent_mentions, or x.quota.

ParametersJSON Schema
NameRequiredDescriptionDefault
helperYes
paramsNo
platformNoPlatform hint when no account_id is supplied.
account_idNoConnected social account ID when the helper needs account context.
update_post
DestructiveIdempotent
Inspect

Change a scheduled or draft post. DESTRUCTIVE WRITE: show the user a side-by-side of CURRENT vs PROPOSED and pass confirm=true only after explicit confirmation. Edit (default): caption, media, schedule, post_type, or settings; cannot edit published posts; if a client already approved the post, a caption edit reopens caption approval, a media or thumbnail edit reopens asset approval, and a reschedule, account change or settings change reopens both. status (scheduled, paused, or draft, with scheduled_at when scheduling a draft): pause, resume, or move back to draft; send it on its own. release_id (with optional group_id): set or repair external release/group IDs; send it on its own. approval_action (request, approve, request_changes, or reject): change client approval. Only a workspace owner or admin may do this. The actor is the API key user, never a brand guest. request emails the brand reviewers. approve, request_changes, and reject are team-side decisions. request_changes needs approval_note. Optional approval_axis is asset or caption; omit it for both. Send approval_action on its own, and pass confirm=true only after the user explicitly confirms.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoChange the post status instead of editing it. Send with post_id (and scheduled_at when scheduling a draft) only.
captionNo
confirmYesMust be true after the user explicitly confirms the proposed change.
post_idYes
group_idNoWith release_id only: an external group/campaign ID.
metadataNo
settingsNoPost settings (same fields as platform_settings). For Instagram put first_comment, user_tags, collaborators, is_trial_reel, or caption_addon (poll or comment prompt, Facebook Login only, not Stories) here or in platform_settings. For an X Article put article ({ title, cover }) here or in platform_settings. Call list_platforms with view=schema and account_id for the field list.
media_urlNoMedia URL. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into posterly storage before the post is saved.
post_typeNoOptional post type. Omit for auto-detection from media.
media_urlsNoMedia URLs. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into posterly storage before the post is saved.
release_idNoSet an external release ID instead of editing the post. Send with post_id and optional group_id only.
scheduled_atNoISO 8601 UTC. With status, required when scheduling a draft.
approval_axisNoWith approval_action approve, request_changes, or reject: which axis to decide. Omit for both. Not allowed with request.
approval_noteNoNote stored with the approval change. Required for request_changes.
reel_cover_urlNo
approval_actionNoChange client approval instead of editing the post. Owner or admin only. The actor is the API key user, never a brand guest. Send on its own.
platform_settingsNoPlatform-specific composer controls, flattened across all platforms (unrelated fields ignored). Required: YouTube title; Pinterest board_id (cover_image_url also required for video Pins); Lemmy community. Accepted via passthrough but not listed below: Lemmy community/title, Dev.to canonical_url, Hashnode publication_id, Telegram parse_mode/disable_web_page_preview, Google Business post_type (STANDARD/EVENT/OFFER, alias topic_type), TikTok auto_add_music/photo_cover_index/media_type, Facebook post_type (incl. cover_photo), Mastodon language. Call list_platforms with view=schema and account_id for the full field list and examples.
reel_cover_methodNo
reel_thumb_offsetNo
upload_mediaInspect

Upload an image or video to posterly storage and get a URL for create_post; nothing is published. base64_data with filename: a small file, keep decoded files <=5MB on this relay path. url: fetch a public HTTPS image or video (localhost and private network targets are blocked). For larger files, use create_signed_upload and PUT the raw bytes to its upload_url. Supports JPEG, PNG, GIF, WebP, MP4, MOV, WebM, and counts against the user's storage quota.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoPublic HTTPS URL of an image or video to copy into posterly storage instead of base64_data.
filenameNoFilename with extension, e.g. photo.jpg. Required with base64_data.
base64_dataNoBase64-encoded file data. The HTTP MCP transport requires base64 (no filesystem access).
content_typeNoMIME type (auto-detected from filename if omitted)
workspace_idNoOptional. The workspace this acts in and whose plan pays (from whoami). Needed only when your connection can act in several workspaces.
validate_post
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
captionNoPost caption/text. On Instagram, @username creates a caption mention only; it is not a native media tag or collaborator invitation. Ignored when thread_posts is provided.
metadataNo
platformNoPlatform name when using username. Supported: instagram, facebook, tiktok, twitter, linkedin, youtube, pinterest, threads, google_business, telegram, bluesky, discord, slack, mastodon, devto, hashnode, wordpress, lemmy. Aliases x, gmb, and instagram-standalone are also accepted by the API.
settingsNoDeprecated alias of platform_settings (or instagram_settings for Instagram). Prefer those instead.
usernameNoAccount username; requires platform.
media_urlNoMedia URL. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into posterly storage before the post is saved. Short-lived signed URLs must still be live when this tool runs.
post_typeNoOptional post type. Omit for auto-detection from media. Supported semantic values include text, image, video, carousel, reel, story, story_series, document, x_thread, threads_thread, photo, and cover_photo.
account_idNoSocial account ID from list_accounts.
media_urlsNoMedia URLs. Posterly storage URLs are used as-is; third-party HTTP(S) URLs are copied into posterly storage before the post is saved.
scheduled_atNoISO 8601 UTC datetime. Omit to publish immediately.
thread_postsNoFor X or Threads: 2+ entries, one per post in the reply chain.
workspace_idNoWorkspace ID from whoami.
platform_settingsNoPlatform-specific composer controls, flattened across all platforms (unrelated fields ignored). Required: YouTube title; Pinterest board_id (cover_image_url also required for video Pins); Lemmy community. Accepted via passthrough but not listed below: Lemmy community/title, Dev.to canonical_url, Hashnode publication_id, Telegram parse_mode/disable_web_page_preview, Google Business post_type (STANDARD/EVENT/OFFER, alias topic_type), TikTok auto_add_music/photo_cover_index/media_type, Facebook post_type (incl. cover_photo), Mastodon language. Call list_platforms with view=schema and account_id for the full field list and examples.
instagram_settingsNoInstagram-specific settings. Distinguish caption @mentions (put @username in caption) from native media tags (user_tags) and co-author invitations (collaborators). Call list_platforms with view=schema and account_id first.
whoami
Read-onlyIdempotent
Inspect

Who you are and how posterly is connected. view=identity (default): the authenticated user, API key scopes, workspaces, and onboarding next step. Call this first; if onboarding.completed is false, walk About you, Connect, Brand voice, and First post IN THIS conversation and do not send the user to /onboarding-v2. view=status: hosted MCP server version, latest npm version for local app clients, endpoint and API auth health, and update guidance.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoidentity (default): user, scopes, workspaces, onboarding. status: MCP server and connection health.identity

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 4 tool updates
    • Changedcreate_post1 field changed
      • addedInput schema / properties / platform_settings / properties / article
        Added value: +{
        +  "description": "X Article (needs an X Premium account): publish the caption as an Article. Pass null to turn Article mode off. The caption is the Markdown body (headings, bold, italic, lists, quotes, code blocks, tables, dividers); reference attached images with ![caption](media:1). Cannot be combined with poll, thread_posts, paid_partnership, video, or GIF.",
        +  "properties": {
        +    "cover": {
        +      "description": "Use the first attached image as the Article cover (default) or none.",
        +      "enum": [
        +        "first_image",
        +        "none"
        +      ],
        +      "type": "string"
        +    },
        +    "title": {
        +      "description": "Article title (required).",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "title"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
    • Changedcreate_posts_batch1 field changed
      • addedInput schema / properties / posts / items / properties / platform_settings / properties / article
        Added value: +{
        +  "description": "X Article (needs an X Premium account): publish the caption as an Article. Pass null to turn Article mode off. The caption is the Markdown body (headings, bold, italic, lists, quotes, code blocks, tables, dividers); reference attached images with ![caption](media:1). Cannot be combined with poll, thread_posts, paid_partnership, video, or GIF.",
        +  "properties": {
        +    "cover": {
        +      "description": "Use the first attached image as the Article cover (default) or none.",
        +      "enum": [
        +        "first_image",
        +        "none"
        +      ],
        +      "type": "string"
        +    },
        +    "title": {
        +      "description": "Article title (required).",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "title"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
    • Changedupdate_post2 fields changed
      • addedInput schema / properties / platform_settings / properties / article
        Added value: +{
        +  "description": "X Article (needs an X Premium account): publish the caption as an Article. Pass null to turn Article mode off. The caption is the Markdown body (headings, bold, italic, lists, quotes, code blocks, tables, dividers); reference attached images with ![caption](media:1). Cannot be combined with poll, thread_posts, paid_partnership, video, or GIF.",
        +  "properties": {
        +    "cover": {
        +      "description": "Use the first attached image as the Article cover (default) or none.",
        +      "enum": [
        +        "first_image",
        +        "none"
        +      ],
        +      "type": "string"
        +    },
        +    "title": {
        +      "description": "Article title (required).",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "title"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
      • changedInput schema / properties / settings / description
        Previous value: -"Post settings (same fields as platform_settings). For Instagram put first_comment, user_tags, collaborators, is_trial_reel, or caption_addon (poll or comment prompt, Facebook Login only, not Stories) here or in platform_settings; call list_platforms with view=schema and account_id for the field list."New value: +"Post settings (same fields as platform_settings). For Instagram put first_comment, user_tags, collaborators, is_trial_reel, or caption_addon (poll or comment prompt, Facebook Login only, not Stories) here or in platform_settings. For an X Article put article ({ title, cover }) here or in platform_settings. Call list_platforms with view=schema and account_id for the field list."
    • Changedvalidate_post1 field changed
      • addedInput schema / properties / platform_settings / properties / article
        Added value: +{
        +  "description": "X Article (needs an X Premium account): publish the caption as an Article. Pass null to turn Article mode off. The caption is the Markdown body (headings, bold, italic, lists, quotes, code blocks, tables, dividers); reference attached images with ![caption](media:1). Cannot be combined with poll, thread_posts, paid_partnership, video, or GIF.",
        +  "properties": {
        +    "cover": {
        +      "description": "Use the first attached image as the Article cover (default) or none.",
        +      "enum": [
        +        "first_image",
        +        "none"
        +      ],
        +      "type": "string"
        +    },
        +    "title": {
        +      "description": "Article title (required).",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "title"
        +  ],
        +  "type": [
        +    "object",
        +    "null"
        +  ]
        +}
  2. 1 tool update
    • Changedmanage_google_business_media1 field changed
      • changedInput schema / properties / source_url / description
        Previous value: -"add: public https URL of the photo or video (from upload_media)."New value: +"add: public https URL of the photo or video (from upload_media). Photos must be JPG or PNG, 10 KB to 5 MB."
  3. 61 tool updates
    • First observedask_support
    • First observedaudit_google_business_profile
    • First observedcancel_subscription
    • First observedconnect_account
    • First observedcreate_api_key
    • First observedcreate_connect_session
    • First observedcreate_media_drop
    • First observedcreate_post
    • First observedcreate_posts_batch
    • First observedcreate_signed_upload
    • First observedcreate_webhook
    • First observeddelete_api_key
    • First observeddelete_post
    • First observeddisconnect_account
    • First observeddismiss_suggestion
    • First observeddowngrade_subscription
    • First observedfind_available_slot
    • First observedgenerate_captions
    • First observedgenerate_image
    • First observedgenerate_video
    • First observedget_credits
    • First observedget_post
    • First observedget_subscription
    • First observedget_updates
    • First observedget_video_options
    • First observedget_x_posting_quota
    • First observedlist_accounts
    • First observedlist_activity
    • First observedlist_analytics
    • First observedlist_brands
    • First observedlist_comments
    • First observedlist_conversations
    • First observedlist_google_business_media
    • First observedlist_google_business_reviews
    • First observedlist_jobs
    • First observedlist_media
    • First observedlist_oauth_clients
    • First observedlist_platforms
    • First observedlist_post_suggestions
    • First observedlist_posts
    • First observedlist_publishing_pauses
    • First observedlist_webhooks
    • First observedlist_workspace_members
    • First observedmanage_comment
    • First observedmanage_conversation
    • First observedmanage_google_business_media
    • First observedmanage_google_business_review
    • First observedmanage_oauth_client
    • First observedmanage_publishing_pause
    • First observedmanage_webhook
    • First observedmanage_workspace_member
    • First observedpause_subscription
    • First observedresume_subscription
    • First observedrun_video_function
    • First observedsubmit_agent_feedback
    • First observedsubmit_product_feedback
    • First observedtrigger_platform_helper
    • First observedupdate_post
    • First observedupload_media
    • First observedvalidate_post
    • First observedwhoami

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Schedule and manage social media posts across 13 platforms (Bluesky, Threads, Instagram, LinkedIn, Mastodon, YouTube, Facebook, Pinterest, Telegram, Nostr, X/Twitter, Discord, Tumblr and more). OAuth 2.0 + PKCE, 10 tools, draft-first workflow for AI agents.
    10
    17
    AGPL 3.0
  • A
    license
    A
    quality
    A
    maintenance
    The best free social media publishing and scheduling API. Publish to 11 platforms from a single API call. Schedule posts, upload media, track analytics, and automate your social media workflow.
    51
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to write, schedule, publish, and measure social media posts across LinkedIn, Bluesky, Mastodon, and YouTube, plus manage media and queue slots, through one OAuth URL with no install or API key. It also covers retrying, cancelling, restoring posts and reading analytics, with reversibility safeguards around irreversible publishing.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources