Postkey MCP server
Instagram DM automation and post scheduling for AI agents. Sends wait for your approval.
Postkey's MCP server lets your AI assistant run your Instagram DM automations, your social posts, your Inbox and your contacts in plain words. Anything that reaches real people waits for your approval in Postkey first.
What it does
Instagram DM automations
See your DM automations and how each one is doing, build a new comment-to-DM automation from a template, change its trigger words, link and messages, and pause one that is not working. New automations are drafts: nobody gets a message until a person approves turning it on.
Inbox and contacts
Read conversations, find the ones nobody has answered, draft a reply for you to approve, assign, label and add internal notes. Search contacts, tag them and see who is in a DM sequence.
Scheduling and posting
Draft posts, attach files from your Library and schedule them to the social accounts connected in Postkey. A post an assistant schedules waits in Posts, then Approvals, until a person approves it.
X, with approvals
Posts you schedule in Postkey to a connected X account are published by Postkey at the time you choose. For an assistant that works on X with your own X access, the X tools are a safety layer: before every reply or post on X it asks Postkey, which checks your STOP list, quiet hours and limits and can ask you to approve first. The assistant then reports what happened. There is no MCP tool that sends on X.
Server address
One remote MCP server over Streamable HTTP. Give your assistant this address:
https://postkey.pro/mcp- Transport: Streamable HTTP, stateless, JSON answers (no server-sent events).
- Protocol revisions: 2026-07-28, 2025-11-25, 2025-06-18 and 2025-03-26.
- Capabilities: tools, Postkey's guide as read-only resources (the same text as postkey_guide, nothing of any account), and 2 prompts.
Sign-in (OAuth 2.1)
Assistants sign in with OAuth 2.1. You never paste a password or a key into the assistant.
- Authorization code flow with PKCE (S256 only) and refresh tokens. Public clients only: there is no client secret.
- Dynamic client registration (RFC 7591) and client ID metadata documents: the assistant registers itself.
- Discovery: /mcp answers 401 with a WWW-Authenticate header; the metadata is at /.well-known/oauth-protected-resource/mcp (RFC 9728) and /.well-known/oauth-authorization-server (RFC 8414).
- When you connect, Postkey's own consent screen opens. You sign in, pick the Postkey account, and choose what the assistant may do.
- An access token lasts 1 hour and is renewed with a refresh token that lasts 30 days.
- Tools that only take a header (Cursor, scripts) can use an agent key instead: make one in Postkey under Agent & API and send it as Authorization: Bearer <key>. A key lasts 90 days unless you choose otherwise.
- End a connection at any time in Postkey under Agent & API. Its tokens are deleted and the next request is refused.
Connect your assistant
Each assistant's own steps, as we last read them. Menus in other products change; if a step looks different, look for the place to add a custom connector or MCP server.
Claude
Works todayAdd Postkey as a custom connector, then sign in.
- In Claude, open Customize, then Connectors.
- Choose "Add custom connector".
- Paste your Postkey address.
Postkey MCP address https://postkey.pro/mcp - Claude sends you to Postkey. Sign in, pick the account, and choose what Claude may do.
- Add it once and it is there on the web, the desktop app, the phone app, Cowork and Claude Code.
Works on Claude's Free plan (one custom connector) and on paid plans.
ChatGPT
Works todayAdd Postkey as a custom MCP server, then sign in.
- Open ChatGPT's plugins page. chatgpt.com/plugins
- Press the plus button and choose "Add custom MCP server".
- Paste your Postkey address.
Postkey MCP address https://postkey.pro/mcp - ChatGPT sends you to Postkey. Sign in, pick the account, and choose what ChatGPT may do.
- Codex uses the same connection.
ChatGPT lists custom servers for Plus and above. Postkey is not in ChatGPT's directory yet; once it is, connecting will be one click on every plan.
Cursor
Works todayAdd Postkey to Cursor's MCP settings with an agent key.
- Make an agent key: sign in to Postkey, open Agent & API and choose New agent key. It is shown once.
- In Cursor, open Settings, then MCP, and add a new server (or open the file ~/.cursor/mcp.json).
- Paste this, with your key in place of YOUR_AGENT_KEY:
Add Postkey to Cursor { "mcpServers": { "postkey": { "url": "https://postkey.pro/mcp", "headers": { "Authorization": "Bearer YOUR_AGENT_KEY" } } } }
- Keep the key out of files you share or commit.
Uses Cursor's own MCP settings file. Cursor signs in with a key you make here.
VS Code
Not confirmed yetAdd Postkey as a remote MCP server, then sign in.
- Open the Command Palette and run MCP: Add Server, or create the file .vscode/mcp.json in your project.
- Add Postkey as an HTTP server:
Add Postkey to VS Code { "servers": { "postkey": { "type": "http", "url": "https://postkey.pro/mcp" } } } - Start the server. VS Code sends you to Postkey. Sign in, pick the account, and choose what VS Code may do.
VS Code documents remote MCP servers over HTTP with OAuth sign-in. We have not tried VS Code's sign-in with Postkey yet.
Scopes
You choose these when you connect. A connection never gets more than its person may do in Postkey, and scopes only take rights away.
| Scope | Name | What it allows |
|---|---|---|
| read | Look around | See your posts, library, automations, conversations, contacts and results. It cannot change anything. |
| content | Posts and library | Create and change drafts and posts, attach library files, and schedule posts. |
| automations | DM automations | Create and change DM automations, and turn them on or off. |
| inbox | Inbox | Read conversations and reply to people, assign, label and add notes. |
| contacts | Contacts | Find contacts and add or remove their tags. |
| x | X: ask Postkey before my agent replies | Lets your agent ask Postkey before it replies or posts on X, tell Postkey what happened, and keep your STOP list and saved replies. These tools send nothing to X: your agent replies with your own X access. Postkey itself only publishes posts you schedule in Postkey. |
No assistant can ever reach the team, billing, connecting or removing social accounts, the Postkey account itself, deleting contacts, bulk Inbox changes, or Inbox settings and labels. Those stay with people.
Tools (45)
Every tool name starts with postkey_. Read tools only look. Write tools change something in Postkey. Sensitive writes reach real people or publish, so by default they wait for approval.
DM automations and sequences
| Tool | What it does | Kind | Scopes |
|---|---|---|---|
| postkey_list_automations | List DM automations | read | read, automations |
| postkey_get_automation | Get one DM automation | read | read, automations |
| postkey_list_automation_templates | List DM automation templates | read | read, automations |
| postkey_create_automation | Create a DM automation from a template | write | automations |
| postkey_update_automation | Change a DM automation | write | automations |
| postkey_publish_automation | Turn a DM automation onWaits in Approvals | sensitive write | automations |
| postkey_pause_automation | Pause a DM automation | write | automations |
| postkey_list_sequences | List DM sequences | read | read, automations |
| postkey_list_sequence_subscribers | List a sequence's subscribers | read | read, automations |
| postkey_get_automation_stats | DM automation results | read | read, automations |
Inbox
| Tool | What it does | Kind | Scopes |
|---|---|---|---|
| postkey_list_conversations | List Inbox conversations | read | read, inbox |
| postkey_get_conversation | Read one conversation | read | read, inbox |
| postkey_send_reply | Reply in a conversationWaits in Approvals | sensitive write | inbox |
| postkey_assign_conversation | Assign a conversation | write | inbox |
| postkey_label_conversation | Label a conversation | write | inbox |
| postkey_add_conversation_note | Add an internal note | write | inbox |
Contacts
| Tool | What it does | Kind | Scopes |
|---|---|---|---|
| postkey_search_contacts | Search contacts | read | read, contacts |
| postkey_get_contact | Get one contact | read | read, contacts |
| postkey_tag_contact | Tag a contact | write | contacts |
Posts, scheduling and Library
| Tool | What it does | Kind | Scopes |
|---|---|---|---|
| postkey_list_social_accounts | List connected social accounts | read | read, content |
| postkey_list_posts | List posts | read | read, content |
| postkey_get_post | Get one post | read | read, content |
| postkey_create_post | Create a draft post | write | content |
| postkey_update_post | Change a draft post | write | content |
| postkey_attach_library_item | Attach a library file to a post | write | content |
| postkey_schedule_post | Schedule or publish a postThe post waits in Approvals | sensitive write | content |
| postkey_unschedule_post | Unschedule a post | write | content |
| postkey_delete_post | Delete a draft post | write | content |
| postkey_list_library | List the Library | read | read, content |
| postkey_begin_upload | Start a file upload | write | content |
| postkey_finish_upload | Finish a file upload | write | content |
| postkey_list_video_templates | List video templates | read | read, content |
| postkey_get_post_stats | Post results | read | read, content |
X safety checks
| Tool | What it does | Kind | Scopes |
|---|---|---|---|
| postkey_x_check_before_send | Ask before replying or posting on X | write | x |
| postkey_x_record_action | Report what happened on X | write | x |
| postkey_x_add_stop | Add a person to the X STOP list | write | x |
| postkey_x_remove_stop | Take a person off the X STOP list | write | x |
| postkey_x_list_stop | List the X STOP list | read | read, x |
| postkey_x_status | X toolkit status | read | read, x |
| postkey_x_save_templates | Save reply wording for X | write | x |
| postkey_x_list_templates | List saved reply wording for X | read | read, x |
Getting started and the account
| Tool | What it does | Kind | Scopes |
|---|---|---|---|
| postkey_get_started | Postkey: start here | read | read, content, automations, inbox, contacts, x |
| postkey_guide | Postkey guide | read | read, content, automations, inbox, contacts, x |
| postkey_preview_action | Preview a send | read | content, automations, inbox |
| postkey_list_waiting_for_approval | What is waiting for approval | read | read, content, automations, inbox, contacts |
Safety
Ask first, on by default
Every connection starts with "ask a person first" switched on, and only an owner or admin can switch it off. Turning an automation on, sending a reply and scheduling a post then wait in Postkey under Posts, then Approvals, until a person presses Approve. Nothing waits forever: after 7 days it lapses.
Links held for review
Before an automation can be turned on, its approval line lists every link and file in it, each with its whole host, and every address it sends contact details to. If there are too many to show, it is not sent for approval at all and a person has to switch it on in Postkey. If the automation is changed while it waits, approving does nothing. Assistants are told never to invent, shorten or rewrite a link.
The 24-hour window
Instagram lets a business reply for 24 hours after the person's last message (7 days for a reply a person types). Postkey tells the assistant whether each conversation can be answered right now, and refuses a reply once the window has closed.
Outside text is marked
DMs, comments and names written by people outside your account come back marked as untrusted, with a note telling the assistant never to follow instructions found in them.
Channels an assistant never replies on
Replies on WhatsApp, Telegram, SMS and TikTok are refused, even with approval.
You can see and stop it
Every change an assistant makes, and every request it leaves for approval, is a line in Postkey's Activity log. The account's switch under Agent & API stops every connection at once.
Limits
Fixed limits keep one busy assistant from crowding out everyone else. Over a limit, the assistant is told to wait and when to try again.
- Each connection: 60 requests a minute and 200 changes a day. An owner or admin can change both.
- All of an account's connections together: 120 requests a minute and 3,000 live lookups of conversations and contacts a day.
- Up to 100 requests waiting for approval per account (20 per connection).
- Everything an assistant does also counts against the same limits your account has in the app.
Support
Questions about the MCP server, or something not working? Email support@postkey.pro.
Read the terms of service and the privacy policy.