postscript_fire_ triggerFire a v1 Trigger for one subscriber, which starts every Legacy Automation built on it for that person, filling the trigger's merge tags from `data`.
Add and update subscribers, send an SMS or MMS to someone already opted in, start Flows with custom events or Legacy Automations with v1 triggers, and run GDPR redactions for the store whose API key you paste.
PopMCPPostscript
Every subscriber, message, keyword, trigger, compliance and webhook operation the connection exposes, plus the store events PopMCP can watch and act on.
29 tools in the full catalog: 13 read and 16 write. 18 load by default, and the rest are found with tool search.
postscript_fire_ triggerFire a v1 Trigger for one subscriber, which starts every Legacy Automation built on it for that person, filling the trigger's merge tags from `data`.
postscript_list_ triggersList the v1 Triggers this key can fire.
postscript_lookup_ legacy_ subscriberLook up ONE subscriber through Postscript's v1 API by phone_number, email or v1 id, to get the v1 subscriber `id` that fire_trigger needs.
postscript_create_ webhookSubscribe an HTTPS endpoint to a Postscript event.
postscript_delete_ webhookDelete (unsubscribe) a webhook subscription by id.
postscript_list_ webhooksList the shop's webhook subscriptions.
postscript_create_ subscriberAdd a subscriber to the shop.
postscript_get_ subscriberGet a single subscriber by their Postscript id.
postscript_get_ subscribersList the shop's subscribers (SMS marketing contacts), newest first.
postscript_update_ subscriberUpdate a subscriber's email, tags, or custom properties by id.
postscript_get_ message_ requestLook up a message request by id to check delivery.
postscript_send_ messageSend an SMS/MMS to an existing subscriber.
postscript_get_ keywordGet a single keyword by id.
postscript_get_ keywordsList the shop's keywords (the opt-in words subscribers text to join).
postscript_redactRedact (permanently erase) a subscriber's personal data for GDPR/CCPA.
postscript_unsubscribeOpt a subscriber OUT of all Postscript messaging (compliance action).
postscript_create_ custom_ eventSend a custom event that can trigger or branch Postscript Flows (the v2 replacement for v1 Triggers).
postscript_get_ identityIdentify who this connection is authenticated as: the shop (or partner) behind the API key.
postscript_add_ shop_ to_ triggerPARTNERS ONLY: allow the connected shop (the shop token on this connection) to use one of your partner Triggers in its Legacy Automations.
postscript_create_ triggerCreate a v1 Trigger that a shop can build a Legacy Automation around, then fire it per subscriber with fire_trigger.
postscript_delete_ triggerPermanently delete a v1 Trigger you own.
postscript_get_ triggerGet one v1 Trigger by id: its name, whether it may send transactional messages, and its merge tags.
postscript_replace_ triggerReplace a v1 Trigger wholesale: `name` is required and the `tags` you send become the COMPLETE list (omitting tags removes every custom tag).
postscript_update_ triggerPartially update a v1 Trigger: send only what changes.
postscript_get_ webhookGet a single webhook subscription by id.
postscript_get_ webhook_ signing_ tokenGet this account's webhook signing token.
postscript_test_ webhookSend a mock event to the callback_url(s) subscribed to it, to test your endpoint.
postscript_update_ webhookUpdate a webhook subscription's callback_url or custom headers by id.
postscript_get_ sent_ messageGet a message that was actually SENT, by its sent-message id.
Credentials off one Postscript screen, then an endpoint your client signs into. Nothing to deploy, and nothing to install.
Paste your Private API Key from app.postscript.io → Account → API into the API key field. No OAuth app or redirect URL. Partners can also add a Shop token. The key locks the connection to the store that owns it.
••••••••••••3f7a••••••••••••3f7aAn outbound SMS, a fired trigger, an opt-out or a GDPR redact runs as soon as the AI calls it. Tick Postscript on the PopMCP consent screen only for clients that should text subscribers. Tools outside the default set stay reachable through tool search.
Drop the PopMCP URL into Claude, ChatGPT, Claude Code, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Postscript credential never leaves the server.
app.popmcp.com/mcpAsk for something harmless before the agent changes anything. Writes run as soon as it calls them, so confirm it reads the right account first.
Fire our Back in stock trigger for jane@example.com and fill in the product link
postscript_list_triggersok
Then just ask for the work
“Fire our Back in stock trigger for jane@example.com and fill in the product link”
“Tag every subscriber with the wholesale property as vip and fire a vip_upgrade event”
“Text this subscriber the launch code, then confirm it went out and what it cost”
“Look up this subscriber, opt them out and redact their data for a GDPR request”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting Postscript behind an AI client.
No. This is a credential paste: the connect form asks for an API key, and you copy it from the Postscript dashboard at app.postscript.io → Account → API. Use the Private key, not the Public one; if none is shown, click Create Security Key Pair first. There is no OAuth app to register and no redirect URL to configure. The key you paste scopes the MCP server to a single store, and get_identity confirms which shop it belongs to.
It is for Postscript technical partners. A partner puts their partner key in API key and the target shop's Private API Key in Shop token, which PopMCP sends as the X-Postscript-Shop-Token header. A shop connecting its own account leaves it blank, and the header is never sent. With a shop token set, add_shop_to_trigger lets that shop use one of the partner's v1 Triggers in its Legacy Automations. Both values are stored encrypted and used server-side only.
Not directly. send_message delivers an SMS or MMS to an existing subscriber, so a new contact has to be added first. create_subscriber needs an opt-in keyword from get_keywords, and the subscriber it adds stays pending until they confirm the opt-in reply. Opt-outs stay explicit too: unsubscribe removes a subscriber from all Postscript messaging, and redact permanently erases their personal data for GDPR or CCPA, unsubscribing them as well.
Ask the agent for get_webhook_signing_token, which returns the signing token for the account, and check incoming payloads against it on your side. Before you go live, test_webhook sends a mock event to the callback_url subscribed to a webhook so you can confirm your endpoint handles it. If the endpoint moves or needs different headers, update_webhook changes the callback_url and custom headers by id without recreating the subscription.
Both, through different tools, because Postscript keeps the two systems separate and an event sent to one never reaches the other. create_custom_event starts or branches a Flow. For a shop still running Legacy Automations, fire_trigger fires a v1 Trigger for one subscriber and fills its merge tags from the data you pass; lookup_legacy_subscriber turns a phone number or email into the v1 subscriber id it needs, and get_trigger shows the merge tags. create_trigger, update_trigger, replace_trigger and delete_trigger manage the trigger definitions.
Not always. send_message creates a message request, and get_message_request shows whether it is processing, scheduled, sent or failed. Messages default to the promotional category, and a promotional send outside the subscriber's waking hours comes back scheduled; transactional and conversational sends need Postscript's approval. Once the request carries a sent_message, get_sent_message returns the final text, including the shop name Postscript adds to the front, and credits_used, which is what the send cost.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Connect Postscript in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking Postscript on the consent screen. The Postscript tools are then available in that session, and no Postscript credential is stored on your machine.
Loading 29 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 18-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.
A tool is something your AI calls, and there are 29 here. A trigger is something PopMCP watches for you: 7 Postscript events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Postscript.
Launch a hosted MCP endpoint for Postscript, keep tool access under control, and start testing real workflow prompts right away.