Postproxy
Publish, schedule, and manage social media posts across major platforms via the Postproxy API.
Connector by postproxy.devOfficial · Domain verified by the MCP Registry
Chalk Labs
Need help deploying Postproxy?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, VS Code, Cursor, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install connector/postproxy-dev-postproxy
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Remote endpoint
https://mcp.postproxy.dev/mcpRemote (HTTP)
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 44 read · 19 write · 42 delete
- Secrets
- 1 (API keys, tokens or passwords)
- Install scripts
- Nothing to install (hosted)
- Runs as
- Hosted (remote endpoint)
Tools by what they do 105
Read from the source code; the running server may list different tools.
Read 44 · Look things up without changing anything.
auth_statuscomments_getcomments_listdm_chat_getdm_chats_listdm_message_getdm_messages_listgoogle_business_attributes_availablegoogle_business_attributes_getgoogle_business_categories_listgoogle_business_food_menus_getgoogle_business_location_get
Show 32 more tools
google_business_media_listgoogle_business_place_action_links_listgoogle_business_place_action_types_availablegoogle_business_service_list_gethistory_listinstagram_available_audiopost_statspost_statusprofile_comments_getprofile_comments_listprofile_groups_listprofiles_listprofiles_placementsprofiles_statsqueues_getqueues_listqueues_next_slotsummary_getwhatsapp_blocked_user_statuswhatsapp_blocked_users_listwhatsapp_business_profile_getwhatsapp_dataset_getwhatsapp_display_name_getwhatsapp_group_getwhatsapp_group_join_requests_listwhatsapp_groups_listwhatsapp_number_infowhatsapp_template_getwhatsapp_template_library_getwhatsapp_templates_listwhatsapp_username_getwhatsapp_username_suggestions
Write 19 · Create, change, send or run things.
comments_unhidedm_chat_archivedm_chat_createdm_chat_mark_readdm_chat_unarchivegoogle_business_place_action_link_createprofile_groups_initialize_connectionqueues_createupload_createwhatsapp_conversion_event_sendwhatsapp_dataset_createwhatsapp_group_create
Show 7 more tools
whatsapp_group_join_requests_approvewhatsapp_group_participants_addwhatsapp_number_registerwhatsapp_number_request_verification_codewhatsapp_number_verifywhatsapp_template_createwhatsapp_users_unblock
Delete 42 · Delete, drop, revoke or wipe things.
comments_createcomments_deletecomments_editcomments_hidecomments_likecomments_unlikedm_comment_private_replydm_message_editdm_message_reactdm_message_senddm_message_unreactgoogle_business_attributes_update
Show 30 more tools
google_business_food_menus_updategoogle_business_hours_updategoogle_business_location_updategoogle_business_media_creategoogle_business_media_deletegoogle_business_place_action_link_deletegoogle_business_place_action_link_updategoogle_business_service_list_updatepost_deletepost_delete_on_platformpost_publishpost_publish_draftpost_updateprofile_comments_createprofile_comments_deletequeues_deletequeues_updatewhatsapp_business_profile_photo_updatewhatsapp_business_profile_updatewhatsapp_display_name_request_changewhatsapp_group_deletewhatsapp_group_invite_link_createwhatsapp_group_join_requests_rejectwhatsapp_group_participants_removewhatsapp_group_updatewhatsapp_template_deletewhatsapp_template_updatewhatsapp_username_deletewhatsapp_username_setwhatsapp_users_block
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
X-PostProxy-API-Key
Network hosts it talks to 1
mcp.postproxy.dev· found in remote endpoint, install command
Files it touches
- Any path the agent passes to its tools
Tools (105)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
auth_statusCheck Auth Statusread-onlyCheck authentication status, API configuration, and workspace information
comments_createCreate Commentcan change or delete dataCreate a comment or reply on a published post. The comment is published to the platform asynchronously. Supported on Instagram, Facebook, Threads, YouTube, and LinkedIn.
comments_deleteDelete Commentcan change or delete dataDelete a comment from the platform asynchronously. Supported on Instagram, Facebook, YouTube, and LinkedIn. Not supported on Threads.
comments_editEdit Commentcan change or delete dataEdit the text of a comment you published, asynchronously. Supported on Facebook and YouTube only. Returns { accepted: true }; the result arrives via comment.edited / comment.edit_failed webhooks.
comments_getGet Commentread-onlyGet a single comment with its replies
comments_hideHide Commentcan change or delete dataHide a comment on the platform asynchronously. Supported on Instagram, Facebook, and Threads.
comments_likeLike Commentcan change or delete dataLike a comment on the platform asynchronously. Currently only supported on Facebook.
comments_listList Commentsread-onlyList comments on a published post. Returns paginated top-level comments with nested replies. Optionally filter by when PostProxy received the comment with from/to. Not all platforms support comments.
comments_unhideUnhide CommentUnhide a previously hidden comment on the platform asynchronously. Supported on Instagram, Facebook, and Threads.
comments_unlikeUnlike CommentRemove a like from a comment on the platform asynchronously. Currently only supported on Facebook.
dm_chat_archiveArchive ChatArchive (mute) a chat. Bluesky only — calls Bluesky's muteConvo. Returns the chat with archived: true.
dm_chat_createCreate or Find ChatFind 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_getGet Chatread-onlyGet a single chat by Postproxy hashid or by the platform's external_conversation_id.
dm_chat_mark_readMark Chat ReadMark 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_unarchiveUnarchive ChatUnarchive (unmute) a chat. Bluesky only — calls Bluesky's unmuteConvo. Returns the chat with archived: false.
Show 90 more tools
dm_chats_listList Chatsread-onlyList 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_comment_private_replyPrivate Reply to Commentcan change or delete dataSend a DM to the author of a comment, in reply to that comment (Meta 'Private Replies'). Bypasses the 24h window (comments up to 7 days old) and creates/reuses a chat automatically. One private reply per comment, ever. Instagram and Facebook (Page comments) only. Supports the same quick_replies / buttons / card interactive elements as dm_message_send; media attachments are not available on private replies.
dm_message_editEdit Messagecan change or delete dataEdit 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_getGet Messageread-onlyGet 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_reactReact to Messagecan change or delete dataAdd 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_sendSend Messagecan change or delete dataSend 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 Teleg…
dm_message_unreactRemove ReactionRemove your business account's reaction from a message. Facebook Messenger, Instagram Direct and WhatsApp only.
dm_messages_listList Messagesread-onlyList 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_availableList Available Google Business Attributesread-onlyList 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_getGet Google Business Attributesread-onlyRead 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_updateUpdate Google Business Attributescan change or delete dataSet 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_listList Google Business Categoriesread-onlyResolve 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_food_menus_getGet Google Business Food Menusread-onlyRead food menus for a Google Business Profile location. Restaurant-like categories only — other locations return 422 with FAILED_PRECONDITION, which is expected rather than an error to retry.
google_business_food_menus_updateUpdate Google Business Food Menuscan change or delete dataReplace the food menus on a Google Business Profile location. Full replacement, not a merge. Structure is menu -> sections -> items; every label carries a languageCode and prices need currencyCode and units. Requires metadata.canHaveFoodMenus on the location, otherwise 422.
google_business_hours_updateUpdate Google Business Hourscan change or delete dataSet 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_getGet Google Business Locationread-onlyRead 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_updateUpdate Google Business Locationcan change or delete dataUpdate 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_createAdd Google Business Mediacan change or delete dataAdd 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_deleteDelete Google Business Mediacan change or delete dataPermanently 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_listList Google Business Mediaread-onlyList 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_createCreate Google Business Place Action LinkAdd 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_deleteDelete Google Business Place Action Linkcan change or delete dataRemove an action link from a Google Business Profile location. The button stops showing on Search and Maps.
google_business_place_action_link_updateUpdate Google Business Place Action Linkcan change or delete dataUpdate 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_listList Google Business Place Action Linksread-onlyList 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_availableList Available Google Business Place Action Typesread-onlyList 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_getGet Google Business Service Listread-onlyRead the services offered by a Google Business Profile location. Editable only when the location's metadata.canModifyServiceList is true.
google_business_service_list_updateUpdate Google Business Service Listcan change or delete dataReplace 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_listList Post Historyread-onlyList 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_audioSearch Instagram Reel Audioread-onlySearch 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 profile…
post_deleteDelete Postcan change or delete dataDelete 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_platformDelete Post on Platformcan change or delete dataDelete 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_publishPublish Postcan change or delete dataPublish 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_draftPublish Draftcan change or delete dataPublish a draft post. Only posts with draft status can be published using this endpoint
post_statsGet Post Statsread-onlyGet 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_statusGet Post Statusread-onlyGet 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_updateUpdate Postcan change or delete dataUpdate 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_comments_createReply to Profile Commentcan change or delete dataReply to an existing profile comment (Google Business review). Top-level comments are NOT allowed — you can only reply to a review that already exists. parent_id is required. Response is returned immediately with status 'pending'; a background job then publishes to Google and updates status to 'published' or 'failed'.
profile_comments_deleteDelete Profile Comment Replycan change or delete dataDelete your reply to a profile comment. Only your own reply is removed — the underlying review is NOT deleted (Google does not allow businesses to delete reviews). Returns {accepted: true} while the delete is dispatched asynchronously.
profile_comments_getGet Profile Commentread-onlyGet a single profile comment (review or your reply) by Postproxy hashid or the platform's external_id (e.g. 'accounts/.../locations/.../reviews/...').
profile_comments_listList Profile Commentsread-onlyList profile-scoped comments. Currently surfaces Google Business reviews (reviews live on a location, not a post, so they cannot be reached via comments_list). Each item may include nested replies. Reviews sync from Google twice daily (06:00 and 18:00 UTC).
profile_groups_initialize_connectionInitialize Profile ConnectionGenerate a URL to connect a new social media profile to a profile group (initiates the OAuth/connect flow). For bluesky, pass identifier + app_password. For telegram, pass bot_token. 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. The returned URL should be opened by the user to complete the connection.
profile_groups_listList Profile Groupsread-onlyList 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_listList Profilesread-onlyList all available social media profiles for posting. Optionally filter by profile_group_id.
profiles_placementsList Profile Placementsread-onlyList 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,…
profiles_statsGet Profile Statsread-onlyGet 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_createCreate QueueCreate a new posting queue with weekly timeslots. Use profiles.list to find the profile_group_id.
queues_deleteDelete Queuecan change or delete dataDelete a posting queue. Posts in the queue will have their queue reference removed but will not be deleted.
queues_getGet Queue Detailsread-onlyGet details of a single posting queue including its timeslots and post count
queues_listList Queuesread-onlyList all posting queues. Queues automatically schedule posts into recurring weekly timeslots with priority-based ordering.
queues_next_slotGet Next Queue Slotread-onlyGet the next available timeslot for a queue
queues_updateUpdate Queuecan change or delete dataUpdate a queue's settings, timeslots, or pause/unpause it. Changes to timezone or timeslots trigger rearrangement of all queued posts.
summary_getGet Activity Summaryread-onlyAnswer "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: enga…
upload_createCreate Upload URLCreate 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…
whatsapp_blocked_user_statusCheck WhatsApp Blocked Statusread-onlyCheck whether one phone number is currently blocked on a WhatsApp phone number.
whatsapp_blocked_users_listList WhatsApp Blocked Usersread-onlyList the phone numbers (wa_id) blocked on a WhatsApp phone number, paginated with limit / after (next_cursor in the response).
whatsapp_business_profile_getGet WhatsApp Business Profileread-onlyRead 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_updateUpdate WhatsApp Business Profile Photocan change or delete dataReplace 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_updateUpdate WhatsApp Business Profilecan change or delete dataUpdate 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_sendSend WhatsApp Conversion EventReport 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_createCreate WhatsApp Conversions DatasetCreate 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_getGet WhatsApp Conversions Datasetread-onlyRead the Conversions API dataset id attached to the WhatsApp Business Account (null when none). Needed for whatsapp_conversion_event_send.
whatsapp_display_name_getGet WhatsApp Display Nameread-onlyRead the verified display name of a phone number and its review status (name_status), plus any pending new_name_status.
whatsapp_display_name_request_changeRequest WhatsApp Display Name Changecan change or delete dataSubmit 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_createCreate WhatsApp GroupCreate 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_deleteDelete WhatsApp Groupcan change or delete dataDelete a WhatsApp group the phone number administers.
whatsapp_group_getGet WhatsApp Groupread-onlyRead a WhatsApp group: subject, description, join_approval_mode, invite_link, participants, participant_count, created_at, is_suspended.
whatsapp_group_invite_link_createCreate WhatsApp Group Invite Linkcan change or delete dataGenerate a fresh invite link for a WhatsApp group (revokes the previous one).
whatsapp_group_join_requests_approveApprove WhatsApp Group Join RequestsApprove pending join requests for the given phone numbers.
whatsapp_group_join_requests_listList WhatsApp Group Join Requestsread-onlyList pending join requests on a WhatsApp group with join_approval_mode approval_required.
whatsapp_group_join_requests_rejectReject WhatsApp Group Join Requestscan change or delete dataReject pending join requests for the given phone numbers.
whatsapp_group_participants_addAdd WhatsApp Group ParticipantsAdd up to 8 phone numbers to a WhatsApp group (a group holds 8 participants).
whatsapp_group_participants_removeRemove WhatsApp Group Participantscan change or delete dataRemove phone numbers from a WhatsApp group.
whatsapp_group_updateUpdate WhatsApp Groupcan change or delete dataChange a WhatsApp group's subject, description and/or join_approval_mode. At least one is required.
whatsapp_groups_listList WhatsApp Groupsread-onlyList 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_infoGet WhatsApp Number Inforead-onlyRead 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_number_registerRegister WhatsApp NumberRegister a phone number with the Cloud API using its 6-digit two-step verification PIN. Postproxy does this automatically on connect with a default PIN; call it when number_info reports a registration_warning or after the PIN changed on the number. Already-registered numbers return already_registered: true.
whatsapp_number_request_verification_codeRequest WhatsApp Verification CodeAsk Meta to send a one-time verification code to a not-yet-verified phone number by SMS or voice call. Follow with whatsapp_number_verify.
whatsapp_number_verifyVerify WhatsApp NumberSubmit the one-time code received after whatsapp_number_request_verification_code to verify ownership of the phone number.
whatsapp_template_createCreate WhatsApp TemplateSubmit 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_deleteDelete WhatsApp Templatecan change or delete dataDelete 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_getGet WhatsApp Templateread-onlyGet one WhatsApp message template with its components (header, body, footer, buttons), status, category, parameter_format and variable_count.
whatsapp_template_library_getGet WhatsApp Template Library Entryread-onlyLook 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_updateUpdate WhatsApp Templatecan change or delete dataUpdate 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_listList WhatsApp Templatesread-onlyList 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_deleteDelete WhatsApp Usernamecan change or delete dataRelease the WhatsApp username set on a phone number.
whatsapp_username_getGet WhatsApp Usernameread-onlyRead the WhatsApp username (wa.me/username handle) set on a phone number, if any, and its status.
whatsapp_username_setSet WhatsApp Usernamecan change or delete dataClaim 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_suggestionsSuggest WhatsApp Usernamesread-onlyGet Meta's available username suggestions for a phone number.
whatsapp_users_blockBlock WhatsApp Userscan change or delete dataBlock up to 1000 phone numbers on a WhatsApp phone number so they can no longer message it. Returns succeeded and failed lists.
whatsapp_users_unblockUnblock WhatsApp UsersUnblock up to 1000 previously blocked phone numbers on a WhatsApp phone number. Returns succeeded and failed lists.
Signals
- Stars
- 3
- Forks
- 0
- Open issues
- 0
- Last commit
- Oct 19, 2026 (11 days ago)
- Last release
- Jun 24, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
dev.postproxy/postproxy- Version
- 1.10.0
- Auth
- API key
- License
- MIT
- Repository
- github.com/postproxy/postproxy-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get Postproxy running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
Postproxy MCP server. Agent Mart. https://agentmart.dev/connectors/postproxy-dev-postproxy (last updated 2026-10-24)