MCP (streamable HTTP, custom connector) · Instagram

Write Instagram captions in ChatGPT and publish them after review

Plenty of people already ask ChatGPT for Instagram captions, then copy, paste, and fix the hashtags by hand. With a custom connector to SocialHandoff, the caption goes straight into your approval inbox as an Instagram draft, with the photo attached from a public link through attach_media (or added by you in the inbox). You confirm the alt text and approve. ChatGPT never holds your Instagram login, and the draft cannot publish until a person has seen it next to its image.

Prompt

I run a small bakery. Tomorrow we are introducing a cardamom bun. Write an Instagram caption: warm, 2 short paragraphs, mention it is only on weekends, invite people to tag a friend, and use 6 hashtags at most. Attach the photo from https://example.com/img/cardamom-bun.jpg and save it as an Instagram draft through the connector.

How to do it

  1. Connect Instagram and mint a key In https://app.socialhandoff.com, open Connections, connect an Instagram professional account (Business or Creator). Then create an agent key named ChatGPT scoped to Instagram with draft and schedule permission.
  2. Add a custom connector Turn on developer mode in ChatGPT settings, create a connector with the MCP URL https://app.socialhandoff.com/mcp, and send the agent key as a bearer token. Pick the connector in the composer before you ask for a draft.
  3. Attach the media Give ChatGPT a public https link to the JPEG image, Reel, or carousel (up to 10 items). It calls attach_media with the url and alt text, gets a media id, and passes it to draft_post in mediaIds. You can also attach files in the inbox instead. Instagram refuses approval or scheduling without media.
  4. Ask for the draft Ask for the caption in a chat with the connector selected. ChatGPT asks you to confirm the draft_post call, then the draft appears in your inbox as pending.
  5. Review and approve Check the caption, hashtag count, and alt text on the approval card. On approval, the post publishes; if Instagram's daily quota is full, it is deferred by an hour.

Example draft

New this weekend: the cardamom bun. Soft, buttery layers twisted with freshly ground cardamom and a little orange zest, baked every Saturday and Sunday morning.

They go fast, so come early. Tag the friend you would share one with (or not).

#bakery #cardamombun #weekendbaking #freshbread #smallbusiness #pastry

[Image: close-up JPEG of a cardamom bun, alt text: "A twisted cardamom bun on a baking tray"]

Gotchas

  • Captions allow 2,200 characters, 30 hashtags, and 20 mentions. A thread is joined into one caption, so a 5-part draft becomes one long caption.
  • ChatGPT asks you to confirm each write action. Confirming draft_post only creates a pending draft; nothing is posted until you approve in the inbox.
  • Only professional accounts (Business or Creator) can connect. A personal account is refused at connect time with instructions to switch.
Instagram
  • Account type: Professional accounts only (Business or Creator). Personal accounts cannot publish through the API.
  • Media: Every post needs an image or video. Text-only posts are not possible on Instagram.
  • Image files: JPEG only, up to 8 MB. Convert PNG or WebP before posting.
  • Reels: Video posts publish as Reels, from MP4 or MOV files.
Schedule Instagram posts and Reels your agents draft

Frequently asked questions

What happens if I hit Instagram's daily limit?
The daily publishing quota is checked before each post. If it is full, the post is deferred by an hour instead of failing.
Which ChatGPT plans can add the connector?
Custom MCP connectors need developer mode, which OpenAI offers on the web for paid plans. Workspace admins may need to allow it.
Can I post a carousel to Instagram this way?
Yes. Attach 2 to 10 images or videos and the post publishes as a carousel. Single images take alt text; set it when you upload with the alt field.

Let your agents post. Keep the final say.

Connect your first agent in minutes. Every draft waits in your inbox until you approve it.

14 days free. No card required.

The hosted version is opening soon

Leave your email and we will send one message when hosted accounts open, with your 14-day trial ready. Want it today? Self-host it free from the repo.

Start free trial