auth_status
ChatGPTCheck authentication status, API configuration, and workspace information
dm_chat_archive
ChatGPTArchive (mute) a chat. Bluesky only — calls Bluesky's muteConvo. Returns the chat with archived: true.
dm_chat_create
ChatGPTFind or create a chat for a participant on a DM-capable profile (idempotent — returns the existing chat if one already exists). Use before sending a message to a participant the profile has not yet messaged. On WhatsApp, placement_id (the phone number id from profiles_placements) is required and participant_external_id is the recipient's phone number in international format (digits only, no +); a new WhatsApp conversation must open with an approved template via dm_message_send.
dm_chat_get
ChatGPTGet a single chat by Postproxy hashid or by the platform's external_conversation_id.
dm_chat_mark_read
ChatGPTMark a chat as read. On WhatsApp this sends the read receipt (blue ticks) for the newest inbound message to the participant; on other networks it only stamps metadata.read_at locally. Returns the chat.
dm_chat_unarchive
ChatGPTUnarchive (unmute) a chat. Bluesky only — calls Bluesky's unmuteConvo. Returns the chat with archived: false.
dm_chats_list
ChatGPTList direct-message chats (conversations) for a DM-capable profile, ordered by most recent activity. Supported on Facebook (Messenger), Instagram, Telegram, Bluesky, and WhatsApp. WhatsApp chats carry external_placement_id (the phone number), group (true for group chats) and within_messaging_window.
dm_message_edit
ChatGPTEdit a previously-sent outbound message on the platform. Telegram only — Facebook and Instagram do not expose outbound edits, so Meta quick_replies and buttons cannot be changed after sending. Provide body (new text/caption) and/or reply_markup (pass {} to clear the keyboard); at least one is required.
dm_message_get
ChatGPTGet a single message by Postproxy hashid or by the platform's external_id. Outbound messages echo the quick_replies / buttons / card they were sent with; an inbound message created by a tap carries tapped_action: {kind, payload, title}.
dm_message_react
ChatGPTAdd a reaction from your business account to a message. Facebook Messenger, Instagram Direct and WhatsApp (not Telegram or Bluesky). On WhatsApp pass emoji — any unicode emoji — and reaction names are ignored. A second react replaces the previous one.
dm_message_send
ChatGPTSend an outbound direct message. Provide EXACTLY ONE of body (text), media (a single attachment), or — on WhatsApp — template, interactive, location or contacts. The message is queued and delivered asynchronously (returns status: pending). Outside Meta's 24h messaging window, a human agent replying to the participant's own inquiry can pass tag: HUMAN_AGENT (Facebook/Instagram only) — never for promotional or automated content. On WhatsApp the window is re-opened only by sending an approved template (or a text with category: utility); free-form sends outside it return 422. reply_markup is Telegram-only; reply_to_external_id works on Telegram and WhatsApp; quick_replies, buttons and card are the Facebook/Instagram interactive primitives and are rejected elsewhere — WhatsApp uses interactive (Meta-shaped) instead.
dm_message_unreact
ChatGPTRemove your business account's reaction from a message. Facebook Messenger, Instagram Direct and WhatsApp only.
dm_messages_list
ChatGPTList messages in a chat, most recent first. Optionally filter by direction or status. Inbound messages created by a tap on an interactive element you sent (quick reply, button postback, Instagram ice breaker, Telegram callback query) carry tapped_action: {kind, payload, title} — read the payload from there instead of digging through platform_data.
google_business_attributes_available
ChatGPTList which attributes a location can actually set, with their value types. Valid attributes depend on the primary category and region, so ALWAYS call this before google_business_attributes_update. Two modes: by location (the default — omit region_code and language_code, Google takes them from the listing) or by category_name (then region_code is required).
google_business_attributes_get
ChatGPTRead the attributes currently set on a Google Business Profile location (payments, accessibility, service options, social links). Note Google omits the attributes key entirely when none are set rather than returning an empty array.
google_business_attributes_update
ChatGPTSet attributes on a Google Business Profile location. Value shape depends on the attribute's valueType from google_business_attributes_available: BOOL uses "values": [true], URL uses "uriValues": [{ "uri": "..." }], ENUM uses "repeatedEnumValue": { "setValues": ["TOKEN"] }. attribute_mask defaults to exactly the names you send, so untouched attributes are preserved.
google_business_categories_list
ChatGPTResolve Google business category resource names (e.g. 'categories/gcid:software_company') for a region. Category patches need these resource names, not display names, and the available set differs per country. Use filter to search by display name rather than paging thousands of results.
google_business_hours_update
ChatGPTSet opening hours on a Google Business Profile location. Times accept either "09:00"/"09:00:00" strings or Google's { hours, minutes } objects. Read current hours from google_business_location_get — each block you name in fields is replaced entirely.
google_business_location_get
ChatGPTRead a Google Business Profile location — name, description, website, phones, categories, address, hours, service area, service items, and metadata. This is the business listing itself, not posts published to it. Read this before any google_business_*_update: Google's updates are field-masked, so you patch back objects you fetched here.
google_business_location_update
ChatGPTUpdate fields on a Google Business Profile location. fields names exactly what you're replacing — anything named there but missing from the payload is CLEARED, and nested objects are replaced wholesale, not merged. Read with google_business_location_get first. Hours and the service list have their own tools.
google_business_media_create
ChatGPTAdd a photo or video to a Google Business Profile location. Google downloads the file from media_url itself — there is no upload step, so the URL must be publicly reachable https (not a short-lived signed URL, not localhost). Images need at least 250x250 and at most 5MB. Use category COVER or LOGO only when you intend to change the profile header or logo.
google_business_media_delete
ChatGPTPermanently remove a photo or video from a Google Business Profile location. media_name is the full resource name from google_business_media_list and must belong to this location.
google_business_media_list
ChatGPTList the photos and videos on a Google Business Profile location. These are profile photos, distinct from media attached to a local post.
google_business_place_action_link_create
ChatGPTAdd an action button to a Google Business Profile location. Which place_action_type values a location accepts varies by category. Google keys the link off (location, uri, placeActionType), so creating the same combination twice returns the existing link rather than a duplicate.
google_business_place_action_link_delete
ChatGPTRemove an action link from a Google Business Profile location. The button stops showing on Search and Maps.
google_business_place_action_link_update
ChatGPTUpdate an existing action link on a Google Business Profile location. name is the full resource path from google_business_place_action_links_list and must belong to this location.
google_business_place_action_links_list
ChatGPTList the action links on a Google Business Profile location — the 'Book online', 'Order online' and similar buttons. Google omits the placeActionLinks key entirely when there are none.
google_business_place_action_types_available
ChatGPTList the place_action_type values Google accepts for a Google Business Profile location. Depends on the location's categories and setup; check this first when google_business_place_action_link_create fails with 'Request contains an invalid argument'.
google_business_service_list_get
ChatGPTRead the services offered by a Google Business Profile location. Editable only when the location's metadata.canModifyServiceList is true.
google_business_service_list_update
ChatGPTReplace the service list on a Google Business Profile location. This is a full replacement, not a merge — send the complete list. Items are either { structuredServiceItem: { serviceTypeId } } using a serviceTypeId from the location's category, or { freeFormServiceItem: { category, label: { displayName, languageCode } } }. Fails with 422 when metadata.canModifyServiceList is false.
history_list
ChatGPTList recent post jobs. Each entry includes the full content, created_at, scheduled_at (null if not scheduled), draft flag, internal status, and the platforms the post targets with their status and published URLs
instagram_available_audio
ChatGPTSearch Meta's music and original-sound library for audio a reel can use as its soundtrack. Without search_query, returns trending audio. Items use Meta's field names: audio_id, audio_type, title, duration_in_ms, on_platform_audio_preview_link, download_url (temporary preview, expires in ~1.5 days); music items add display_artist and cover_artwork_thumbnail_uri, original sounds add ig_username and profile_picture_url. Pass the chosen audio_id to post_publish under platforms.instagram with format 'reel'. Only works for Instagram profiles connected through Facebook Login — Instagram Login profiles get 422 (reconnect with profile_groups_initialize_connection onboarding 'facebook'). Only audio authorized for third-party use is returned, so the catalog can differ from the Instagram app.
post_delete
ChatGPTDelete a post from the database. By default does NOT remove from social media platforms. Pass delete_on_platform=true to also remove from all published platforms before DB deletion.
post_delete_on_platform
ChatGPTDelete a published post from social media platforms WITHOUT removing it from the database. Async via background job. Optionally narrow scope by post_profile_id (covers entire thread for that profile), profile_id, or network. With no scope, deletes from all published platforms. Supported: Facebook, Threads, X (Twitter), LinkedIn, Pinterest, YouTube. NOT supported: Instagram, TikTok.
post_publish
ChatGPTPublish a post to specified social media profiles. Supports text content, media attachments, scheduling, drafts, threads (X and Threads only), and platform-specific customization via the 'platforms' parameter.
post_publish_draft
ChatGPTPublish a draft post. Only posts with draft status can be published using this endpoint
post_stats
ChatGPTGet stats snapshots for one or more posts. Returns all matching snapshots so you can see trends over time. Supports filtering by profiles/networks and timespan.
post_status
ChatGPTGet status of a post by post ID. Returns the full content, scheduled_at (null if not scheduled), created_at, draft flag, internal status, per-platform status with published URLs, and media details
post_update
ChatGPTUpdate an existing post. Only drafts or scheduled posts (more than 5 min before publish) can be updated. Only send fields you want to change — omitted fields are left unchanged.
profile_groups_initialize_connection
ChatGPTGenerate a URL to connect a new social media profile to a profile group (initiates the OAuth/connect flow). The returned URL should be opened by the user to complete the connection. For whatsapp, optionally pass onboarding ('api' or 'business_app'); when omitted the connect page asks the user where their number lives. For instagram, optionally pass onboarding 'facebook' to connect through Facebook Login (an Instagram professional account linked to a Facebook Page the user manages) instead of the default Instagram Login. Bluesky and Telegram need credentials, so they are connected in the Postproxy web app rather than here.
profile_groups_list
ChatGPTList all profile groups accessible with your API key. Profile groups are organizational containers (e.g. per brand or client) that hold related social media profiles. Use the returned group id to filter profiles_list by profile_group_id.
profiles_list
ChatGPTList all available social media profiles for posting. Optionally filter by profile_group_id.
profiles_placements
ChatGPTList available placements for a profile. For Facebook: business pages. For LinkedIn: personal profile and organizations. For Pinterest: boards. For Telegram: channels the bot can post to. For Google Business: locations (returned as full resource paths 'accounts/X/locations/Y' to pass as location_id). For WhatsApp: the phone numbers on the Business Account — the placement id is the phone_number_id every whatsapp_* tool and dm_chat_create take, and metadata carries display_phone_number, quality_rating, messaging_limit_tier, name_status, platform_type. Available for facebook, linkedin, pinterest, telegram, google_business and whatsapp profiles.
profiles_stats
ChatGPTGet the follower/engagement timeseries for a profile. Returns daily snapshots (captured every ~23h). placement_id is required for facebook, linkedin, telegram, and google_business profiles (get it from profiles_placements); omit for other networks. Fields in records[].stats are platform-native and not normalized. For google_business the series is per location: impressions, website clicks, call clicks, direction requests and conversations — there is no follower count.
queues_create
ChatGPTCreate a new posting queue with weekly timeslots. Use profiles.list to find the profile_group_id.
queues_delete
ChatGPTDelete a posting queue. Posts in the queue will have their queue reference removed but will not be deleted.
queues_get
ChatGPTGet details of a single posting queue including its timeslots and post count
queues_list
ChatGPTList all posting queues. Queues automatically schedule posts into recurring weekly timeslots with priority-based ordering.
queues_next_slot
ChatGPTGet the next available timeslot for a queue
queues_update
ChatGPTUpdate a queue's settings, timeslots, or pause/unpause it. Changes to timezone or timeslots trigger rearrangement of all queued posts.
summary_get
ChatGPTAnswer "what's the status?" in one call. Returns an activity snapshot for a time window: posts published and failed (plus what's scheduled next), engagement totals summed from each post's latest stats snapshot, comments and reviews received, and DM volume — each broken down per network. Also returns what's still waiting on you: comments and reviews with no reply from you, and DM chats whose newest message is inbound (with how many are about to run out of their 24h messaging window). Prefer this over calling history_list / comments_list / dm_chats_list separately. Two quirks worth knowing: engagement is lifetime-to-date for posts published in the window rather than engagement earned during it, and the awaiting_reply counts describe current state so they don't change with the window (they look back 30 days, returned as window.backlog_from). Post counts are posts — a post sent to three networks counts once — while by_platform counts per-network deliveries. engagement is null when insights are off for the account, dms when DMs are.
upload_create
ChatGPTCreate a temporary file upload URL for sandboxed environments. Returns a key, an upload_url, and expires_in (seconds). Flow: (1) call this tool, (2) POST the raw file bytes to the returned upload_url (valid for expires_in seconds), which responds with {"url": "https://..."}, (3) pass that returned url in the media array of post_publish (or post_update). The upload host is tmpfiles.postproxy.dev — that domain must be whitelisted/allowlisted in the sandbox's network egress rules for the upload to succeed. Only use this when running against the remote (hosted) MCP server: if you are running the local (stdio) MCP server, do NOT use this — instead pass local file paths directly in the media array, which uploads them via multipart.
whatsapp_blocked_user_status
ChatGPTCheck whether one phone number is currently blocked on a WhatsApp phone number.
whatsapp_blocked_users_list
ChatGPTList the phone numbers (wa_id) blocked on a WhatsApp phone number, paginated with limit / after (next_cursor in the response).
whatsapp_business_profile_get
ChatGPTRead the public business profile shown in WhatsApp for a phone number: about, address, description, email, websites, vertical and profile_picture_url.
whatsapp_business_profile_photo_update
ChatGPTReplace the profile photo of a phone number. Pass either url (a public https image) or data (base64, with content_type). JPEG or PNG, at most 5MB.
whatsapp_business_profile_update
ChatGPTUpdate the public business profile of a phone number. Send only the fields to change; at least one is required. about max 139 chars, description max 512, websites at most 2 entries. The profile photo has its own tool.
whatsapp_conversion_event_send
ChatGPTReport a conversion (LeadSubmitted, Purchase, AddToCart, InitiateCheckout, ViewContent) for a conversation that started from a Click-to-WhatsApp ad, so Meta can attribute it. Identify the conversation by chat_id or phone; it must carry a captured ctwa_clid (422 otherwise). event_id must be unique per event. email and external_id are SHA-256 hashed before sending. Pass test_code to route the event to Meta's test-events view.
whatsapp_dataset_create
ChatGPTCreate a Conversions API dataset on the WhatsApp Business Account so Click-to-WhatsApp ad conversions can be reported. Idempotent: returns the existing dataset with created: false.
whatsapp_dataset_get
ChatGPTRead the Conversions API dataset id attached to the WhatsApp Business Account (null when none). Needed for whatsapp_conversion_event_send.
whatsapp_display_name_get
ChatGPTRead the verified display name of a phone number and its review status (name_status), plus any pending new_name_status.
whatsapp_display_name_request_change
ChatGPTSubmit a new display name for Meta review. The current name stays until Meta approves; the outcome arrives on the placement.name_status_updated webhook.
whatsapp_group_create
ChatGPTCreate a WhatsApp group administered by the phone number. Returns the group id and invite_link. Add members with whatsapp_group_participants_add or share the invite link.
whatsapp_group_delete
ChatGPTDelete a WhatsApp group the phone number administers.
whatsapp_group_get
ChatGPTRead a WhatsApp group: subject, description, join_approval_mode, invite_link, participants, participant_count, created_at, is_suspended.
whatsapp_group_invite_link_create
ChatGPTGenerate a fresh invite link for a WhatsApp group (revokes the previous one).
whatsapp_group_join_requests_approve
ChatGPTApprove pending join requests for the given phone numbers.
whatsapp_group_join_requests_list
ChatGPTList pending join requests on a WhatsApp group with join_approval_mode approval_required.
whatsapp_group_join_requests_reject
ChatGPTReject pending join requests for the given phone numbers.
whatsapp_group_participants_add
ChatGPTAdd up to 8 phone numbers to a WhatsApp group (a group holds 8 participants).
whatsapp_group_participants_remove
ChatGPTRemove phone numbers from a WhatsApp group.
whatsapp_group_update
ChatGPTChange a WhatsApp group's subject, description and/or join_approval_mode. At least one is required.
whatsapp_groups_list
ChatGPTList the WhatsApp groups a phone number administers (Groups API — Cloud API numbers only; coexistence numbers can't use it). Paginated with limit / after.
whatsapp_number_info
ChatGPTRead the live state of a WhatsApp phone number from Meta: display_phone_number, verified_name, name_status, quality_rating, messaging_limit_tier, throughput, status, platform_type (CLOUD_API vs a coexistence number still in the WhatsApp Business app), plus the Business Account's review and verification status.
whatsapp_template_create
ChatGPTSubmit a new WhatsApp message template to Meta for review. Either pass components (custom template: HEADER / BODY / FOOTER / BUTTONS in Meta's shape, with example values for any {{n}} placeholders) or library_template_name to instantiate one of Meta's pre-approved library templates (approved instantly). name must be lowercase letters, digits and underscores; category is UTILITY, MARKETING or AUTHENTICATION. Custom templates come back PENDING — watch the message_template.status_updated webhook or re-list with refresh.
whatsapp_template_delete
ChatGPTDelete a WhatsApp template on Meta and in Postproxy. With language, only that language variant is deleted; addressing by name without language deletes every language of that name. Deleted template names can't be reused for 30 days on Meta.
whatsapp_template_get
ChatGPTGet one WhatsApp message template with its components (header, body, footer, buttons), status, category, parameter_format and variable_count.
whatsapp_template_library_get
ChatGPTLook up a pre-approved template in Meta's template library by name (e.g. order_confirmation, delivery_update) to see the inputs it needs before creating it with whatsapp_template_create + library_template_name.
whatsapp_template_update
ChatGPTUpdate a WhatsApp template's components and/or message_send_ttl_seconds. Editing components sends the template back through Meta review (status returns to PENDING). At least one of components / message_send_ttl_seconds is required.
whatsapp_templates_list
ChatGPTList the message templates on a WhatsApp Business Account (the profile) as Postproxy has them synced from Meta. Filter by name, language or status (APPROVED, PENDING, REJECTED, PAUSED, DISABLED). Pass refresh: true to pull Meta's current list first. Only APPROVED templates can be sent; each entry's variable_count is how many values dm_message_send's template.variables must carry.
whatsapp_username_delete
ChatGPTRelease the WhatsApp username set on a phone number.
whatsapp_username_get
ChatGPTRead the WhatsApp username (wa.me/username handle) set on a phone number, if any, and its status.
whatsapp_username_set
ChatGPTClaim or change the WhatsApp username of a phone number. Letters, digits, periods and underscores, must contain a letter, no leading / trailing / consecutive periods. Pass transfer_action: force_transfer to move a username already held by another number in the same business.
whatsapp_username_suggestions
ChatGPTGet Meta's available username suggestions for a phone number.
whatsapp_users_block
ChatGPTBlock up to 1000 phone numbers on a WhatsApp phone number so they can no longer message it. Returns succeeded and failed lists.
whatsapp_users_unblock
ChatGPTUnblock up to 1000 previously blocked phone numbers on a WhatsApp phone number. Returns succeeded and failed lists.
auth_status
Claudedm_chat_archive
Claudedm_chat_create
Claudedm_chat_get
Claudedm_chat_unarchive
Claudedm_chats_list
Claudedm_message_edit
Claudedm_message_get
Claudedm_message_react
Claudedm_message_send
Claudedm_message_unreact
Claudedm_messages_list
Claudehistory_list
Claudepost_delete
Claudepost_delete_on_platform
Claudepost_publish
Claudepost_publish_draft
Claudepost_stats
Claudepost_status
Claudepost_update
Claudeprofile_groups_initialize_connection
Claudeprofile_groups_list
Claudeprofiles_list
Claudeprofiles_placements
Claudeprofiles_stats
Claudequeues_create
Claudequeues_delete
Claudequeues_get
Claudequeues_list
Claudequeues_next_slot
Claudequeues_update
Claudeupload_create
Claude