instagram_delete_ mediaPermanently delete a published media object from the account.
Publish a reel or a carousel from image links, hide or answer comments, reply to recent DMs, respond to @mentions, and see which posts drove reach and profile visits this month.
PopMCPInstagram
Every publishing, comment, messaging, mention and insights tool on the connection, plus the webhooks and polled checks a workflow can start from.
49 tools in the full catalog: 26 read and 23 write. 37 load by default, and the rest are found with tool search.
instagram_delete_ mediaPermanently delete a published media object from the account.
instagram_get_ mediaRead one media object by id.
instagram_list_ mediaList the account's published media (feed posts, reels, videos), newest first.
instagram_list_ media_ childrenList the individual photos/videos inside a CAROUSEL_ALBUM media object, in display order.
instagram_list_ storiesList the account's stories that are still live.
instagram_list_ tagged_ mediaList media posted by OTHER Instagram users in which this account has been tagged (the 'Tagged' tab).
instagram_set_ media_ comments_ enabledTurn commenting on or off for one published media object.
instagram_create_ carousel_ containerSTEP 2 of 3 for a CAROUSEL post (2-10 slides).
instagram_create_ commentPost a new top-level comment on a media object, as the connected account.
instagram_create_ comment_ replyReply to a comment as the connected account; the reply threads directly under it.
instagram_create_ image_ containerSTEP 1 of 2 for a single-image feed post.
instagram_create_ reel_ containerSTEP 1 of 2 for a REEL (all API-published video goes to Reels).
instagram_create_ story_ containerSTEP 1 of 2 for a STORY.
instagram_delete_ commentPermanently delete a comment (and any replies under it).
instagram_get_ commentRead one comment by id — its text, author, like count, hidden state and the media it belongs to.
instagram_get_ container_ statusCheck whether a media container is ready to publish.
instagram_list_ comment_ repliesList the replies threaded under one comment, oldest first.
instagram_list_ media_ commentsList top-level comments on a media object, newest first.
instagram_publish_ mediaFINAL STEP — publishes a container to the account and returns the new { id } of the live media object.
instagram_set_ comment_ hiddenHide or unhide a comment.
instagram_get_ conversationRead one conversation.
instagram_get_ messageRead one direct message — who sent it, when, the text, and any attachments or shared media.
instagram_get_ messaging_ user_ profileLook up the public profile of an Instagram user who has messaged this account, by their Instagram-scoped ID (IGSID).
instagram_list_ conversationsList the account's Instagram DM conversations, most recently active first.
instagram_send_ messageSend a direct message to an Instagram user.
instagram_send_ sender_ actionShow a typing indicator or mark a conversation as seen, instead of sending a message.
instagram_get_ account_ insightsAccount-level analytics.
instagram_get_ account_ insights_ summaryHeadline account performance with a known-good parameter combination already applied.
instagram_get_ audience_ demographicsWho follows this account, broken down by country by default.
instagram_get_ media_ insightsPer-post analytics.
instagram_get_ mentioned_ commentRead a comment on another account's media in which this account was @mentioned.
instagram_get_ mentioned_ mediaRead a media object owned by ANOTHER account whose caption @mentions this account.
instagram_reply_ to_ mentionReply publicly to a place this account was @mentioned by someone else — either a comment on their media (pass comment_id) or the caption of their media.
instagram_get_ accountRead the connected Instagram professional account's profile.
instagram_get_ content_ publishing_ limitHow many posts the account has published through the API in the last 24 hours, against the 100-post rolling limit.
instagram_like_ media_ or_ commentLike a feed post, reel, comment or reply on behalf of the connected account.
instagram_unlike_ media_ or_ commentRemove a like the connected account previously left on a post, reel, comment or reply.
instagram_list_ live_ mediaList live broadcasts currently running on the account.
instagram_create_ media_ containerGeneric STEP 1 of 2 container builder — the raw endpoint behind the typed create_*_container tools.
instagram_create_ welcome_ message_ flowCreate or update a welcome-message flow for click-to-Instagram-Direct ads.
instagram_delete_ messenger_ profileRemove ice breakers and/or the persistent menu from the account.
instagram_delete_ welcome_ message_ flowDelete a welcome-message flow by id.
instagram_get_ messenger_ profileRead the account's automated-messaging setup: ice breakers (the FAQ prompts shown before a first message) and the persistent menu.
instagram_list_ welcome_ message_ flowsList the saved welcome-message flows used by click-to-Instagram-Direct ads — the opening message and quick replies a person sees when they tap the ad.
instagram_set_ messenger_ profileCreate or REPLACE the account's ice breakers and/or persistent menu.
instagram_get_ subscribed_ appsShow which webhook fields this app is subscribed to for the account.
instagram_subscribe_ app_ to_ webhooksSubscribe this app to webhook notifications for the account.
instagram_unsubscribe_ app_ from_ webhooksRemove this app's webhook subscription for the account.
instagram_get_ connected_ threads_ userReturn the Threads account linked to this Instagram account, if any.
Authorize once, then an endpoint your client signs into. Nothing to deploy, and nothing to install on the Instagram side.
In your Meta app open Instagram → API setup with Instagram business login → Business login settings, add PopMCP's callback URL to OAuth redirect URIs, paste the Instagram App ID and App secret, then sign in as a Business or Creator account.
990602627938098••••••••••••3f7apublish_media, send_message, delete_comment and delete_media take effect the moment the AI calls them. New connections are read-only until an owner allows writes, and only clients you tick for Instagram on the PopMCP consent screen reach it.
Drop the PopMCP URL into Claude, ChatGPT, Claude Code, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Instagram 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.
Post these four product shots as one carousel with the caption I wrote
instagram_create_image_containerok
Then just ask for the work
“Post these four product shots as one carousel with the caption I wrote”
“Hide every comment on yesterday's reel that pushes a competitor's discount code”
“Reply to everyone who messaged us about shipping times today”
“Which of last month's posts brought the most reach and profile visits?”
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 Instagram behind an AI client.
No. It is built on the Instagram API with Instagram Login, so you sign in with the Instagram account itself, with no linked Facebook Page and no Business Manager. The account must be a Business or Creator account; you can switch a personal one in the Instagram app under Settings, Account type. The trade-off is that features Meta only offers through Facebook Login, such as hashtag search, competitor business discovery and product tagging, are not part of this connector.
Yes. Add the Instagram product to a Meta app and copy the Instagram App ID and App secret from Business login settings, not the Meta App ID in App settings. Until Meta grants Advanced Access through App Review, only Instagram accounts with a role on that app can authorize. PopMCP asks for exactly five permissions: instagram_business_basic, instagram_business_content_publish, instagram_business_manage_comments, instagram_business_manage_messages and instagram_business_manage_insights. If the app was not granted one of them, Meta refuses the whole sign-in.
In steps, from public URLs. A create_image_container, create_reel_container, create_story_container or create_carousel_container call builds the post from links Instagram downloads, with images in JPEG. For video, get_container_status waits until the status is FINISHED, then publish_media makes it live. Carousels take 2 to 10 slides and count as one post. Instagram allows 100 API-published posts per account in 24 hours, and get_content_publishing_limit shows how many are used.
Yes, inside Instagram's messaging rules. The account can only reply to someone who messaged it first, within 24 hours of their last message, and replies go to their Instagram-scoped ID rather than an @username. list_conversations and get_message read the inbox, get_messaging_user_profile shows who a sender is, send_message replies, and send_sender_action shows a typing indicator or marks a thread as seen. A new direct message can also trigger a workflow through a webhook.
Only if it sits idle. Instagram issues a 60-day token with no separate refresh token, and refreshing it swaps in a new 60-day token. PopMCP does that when a call arrives within 10 days of expiry, so a connection in regular use keeps working. A token that goes 60 days without being used expires for good, and the next call asks you to disconnect and reconnect Instagram. Meta also will not refresh a token less than 24 hours old.
Seventeen. Webhooks cover a new comment, a comment during a live video, a new DM, a reaction on a message, an @mention, story results being final, a tapped chat button, a messaging opt-in and a chat opened from an ad or link. Polling catches new posts. Change detection spots being tagged, a new story, going live and a new conversation. Thresholds fire when followers cross a level, reach drops, or the daily posting quota is nearly used.
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 Instagram 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 Instagram on the consent screen. The Instagram tools are then available in that session, and no Instagram credential is stored on your machine.
Loading 49 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 37-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 49 here. A trigger is something PopMCP watches for you: 17 Instagram 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 Instagram.
Launch a hosted MCP endpoint for Instagram, keep tool access under control, and start testing real workflow prompts right away.