MCP (stdio) · Instagram

Draft Instagram captions in Claude Desktop and approve them before they post

Instagram is a visual network, and Claude Desktop is a writing tool, which is exactly why they pair well behind an approval step. You talk through the launch in chat, Claude writes a caption that fits 2,200 characters and a sane number of hashtags, and attaches the product photo with attach_media before draft_post saves it to SocialHandoff. You check the picture and alt text in the inbox, and approve. Nothing reaches your grid without a person looking at the picture and the words together.

Prompt

We are launching the new walnut desk organizer on Tuesday. Write an Instagram caption in our voice: open with the problem (cables everywhere), 3 short lines on what it fixes, the price ($49), and at most 5 hashtags. Attach the photo at https://example.com/press/organizer.jpg with alt text and save it as an Instagram draft.

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 Claude Desktop scoped to Instagram with draft and schedule permission.
  2. Add the server to Claude Desktop Open Settings, then Developer, then Edit Config, and paste the mcpServers entry that runs npx -y socialhandoff-mcp with your key. Quit and reopen Claude Desktop so draft_post appears in the tools menu.
  3. Attach the media Give Claude Desktop 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 Paste your launch notes and the prompt. Claude calls draft_post with networks set to instagram and shows the approval card with the caption and hashtag count.
  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

Cables on the floor, chargers in a drawer, and a desk that never looks finished.

The walnut organizer fixes that:
- a channel that hides 3 cables
- a slot for your phone while it charges
- a tray for the small stuff

$49, shipping Tuesday. Link in bio.

#desksetup #workfromhome #walnut #minimaldesk #homeoffice

[Image: overhead JPEG of the organizer on a clean desk, alt text: "Walnut desk organizer holding a phone, cables routed through a channel"]

Gotchas

  • If you ask Claude to schedule the draft before the photo is attached, schedule_post is refused with a clear error. Draft first, attach the image, then schedule or approve.
  • Instagram refuses text-only posts. A draft can be saved as text first, but approving or scheduling it is refused with a clear error until an image or video is attached.
  • attach_media takes a public https link or small base64 data. For a photo that only lives on your laptop, attaching it in the inbox is usually quicker than pasting it into the chat.
  • Images must be JPEG (up to 8 MB). A PNG screenshot is not accepted, so convert it before upload.
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

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.
Can Claude Desktop publish without me?
No. A new key is draft-only and can never approve its own drafts. You approve every post until you promote the key on the trust ladder.
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.

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