Skip to content
ShapelessAI← Connect

Instagramhosted MCP server

Instagram MCP server

Give Claude, ChatGPT, Claude Code or any MCP host a Instagram publishing arm: it writes, designs, schedules and publishes Instagram posts through your Shapeless account, and you approve. Instagram allows 2,200 characters and 10 images, 1 video up to 15 min; we publish text, images and video here; PDF documents we do not deliver to Instagram yet.

Remote MCP server URL
https://shapelessai.com/mcp

Add that URL to your host. It opens a Shapeless tab to sign in and allow - OAuth 2.1 with dynamic client registration, no API key. Your Instagram account is connected to Shapeless once, under Accounts, through Instagram's own sign-in; the host never touches it.

Not a developer?

Use it from

  • ClaudeSettings → Connectors → Add custom connector → paste the URL → Connect.
  • ChatGPTOpen the ShapelessAI plugin in ChatGPT (chatgpt.com/plugins → search ShapelessAI) → add it → sign in. By hand: Developer mode on (Settings → Security and login) → chatgpt.com/plugins → + → paste the URL, OAuth.
  • Claude Codeclaude mcp add --transport http --scope user shapeless https://shapelessai.com/mcp, then /mcp → Authenticate.
  • CursorOne-click install link, or add the URL to ~/.cursor/mcp.json → Needs login → sign in.
  • Codexcodex mcp add shapeless --url https://shapelessai.com/mcp, then codex mcp login shapeless.
  • VS CodeOne-click install link, or MCP: Add Server → HTTP → paste the URL → start it and sign in.
  • Gemini CLIgemini mcp add --transport http shapeless https://shapelessai.com/mcp, then /mcp auth shapeless.
  • AntigravityAdd "shapeless": { "serverUrl": "https://shapelessai.com/mcp" } under mcpServers in ~/.gemini/config/mcp_config.json, then Authenticate.
  • Grokgrok.com/connectors, New Connector, Custom, paste https://shapelessai.com/mcp, sign in.
  • Geminigemini.google.com, Settings, Connected Apps, Add a custom app, paste https://shapelessai.com/mcp.
  • PerplexityAccount settings, Connectors, + Custom connector, Remote, paste https://shapelessai.com/mcp, OAuth, Streamable HTTP.
  • MuseAsk Muse to create a custom connector to https://shapelessai.com/mcp and follow its sign-in steps.
  • OpenClawopenclaw mcp add shapeless --url https://shapelessai.com/mcp --transport streamable-http --auth oauth, then openclaw mcp login shapeless.
  • Hermes Agenthermes mcp add shapeless --url https://shapelessai.com/mcp --auth oauth, then hermes mcp login shapeless.

What to say

Plain words, in the host's chat. Drafts land in your Shapeless queue for approval unless you say otherwise, and the host asks you before any tool that publishes or spends.

  • Make an Instagram Reel from this feature: 20 seconds, captions on, our voice, vertical.
  • Design an Instagram carousel that explains what we do in five slides, then schedule it for Saturday morning.
  • Show me the Instagram posts waiting for approval and approve the two you would pick.

Instagram allows 2,200 characters per post and 10 images, 1 video up to 15 min, from Instagram's own documentation as read on 2026-07-21. Shapeless enforces that table before a draft is queued. The full table is on the Instagram spec page; check a draft yourself with the free Instagram character counter.

The tools

As the server publishes them. Read tools run freely; anything that publishes, spends or overwrites is flagged destructive so the host asks you first.

ToolWhat it doesRuns
meWho this credential belongs to: email, plan, credit balance.reads
capabilities_listEverything ShapelessAI can do, live or planned, with the REST routes, MCP tools and CLI lines for each and its page. A planned one says how to get the same outcome today and carries a want door; one with a route answers 501 there until it ships. Needs the read scope (over REST it needs no key).reads
capabilities_wantAsk to be told the day a planned capability ships. Bound to this account's sign-in email; add an email or https webhookUrl to tell somewhere else. Ask the human first.drafts
tools_listThe live catalog of the ShapelessAI studio agent's tools, each with its JSON Schema input and default price. Every one is also its own MCP tool here (generate_image, generate_footage, edit_footage, render_carousel, web_search, x_pulse and the rest); this is the read for what the deployment serves right now.reads
connections_linkThe one URL the human clicks to connect a social account on a platform (connections_list already carries one per missing platform). Lasts 15 minutes, works only signed in as this account; the platform's own OAuth follows in the browser, then the account shows in connections_list.drafts
connections_listConnected social accounts (identity only, no tokens), plus connect: one clickable link per platform with no live account, and reconnect on an expired one. Hand the link to the human.reads
references_listThe creators, competitors and peers ("creators like me") this account works from, by set, each with its member id, platform, handle and profile url. Pass a member id to jobs_create as referenceId to make a post from that person.reads
references_addAdd one person to the account's reference set: a handle and platform, or a profile URL, tagged creator, competitor or peer ("creators like me"). Pass suggestionId to accept a references_suggest suggestion. Adding someone already there answers the member with created: false. Picks stay private to the account.drafts
references_removeRemove a member from the reference set (memberId), or dismiss a suggestion (suggestionId). The reason (not_similar, not_relevant, low_quality, other) teaches the next suggestions.drafts
references_suggestPeople we suggest the account follow as references, best first, each with reasons [{code, evidence}] (same_niche, beats_baseline, co_selected, links_to_you, same_format...) to show the human. Accept with references_add {suggestionId}, dismiss with references_remove {suggestionId}. Empty with a note until the reference-suggest job has run for the account.reads
references_browseSearch the reference graph: the account's own members matching q, how many other workspaces picked a matching handle (counts of at least k = 3, never who), and with platform plus an exact handle, what those workspaces picked beside it ("people who pick X also pick"). Counted per UTC day: Free 5, Spark 50, Growth 500, Studio unlimited; remaining says what is left, a 402 carries the upgrade links.reads
jobs_createStart a durable job from a goal, optionally with files attached. The run keeps going server-side; returns the job id and its web url to poll or continue.drafts
jobs_listList jobs with liveness and the web url of each, 200 per page, newest first. A non-null nextCursor means older jobs exist: pass it back as before.reads
jobs_getOne job in full: transcript, running/idle status, outputs (posts with queue state, media) and its web url. Use jobs_brief when you only need enough to reply.reads
jobs_briefCompact context for continuing a conversation: the last messages clipped, an artifact inventory, post statuses, and the web url. Use jobs_get for the full transcript, jobs_continue to reply.reads
jobs_tailWatch a job's run: replays its events from the cursor, then follows live until the run ends, 60 seconds pass, or 200 events. Returns {live, cursor, events} - resume with that cursor. {live: false} means no run stream to attach to; the job may still have finished work, so read jobs_get.reads
jobs_continueSend another message to a job, optionally with files attached - also the way to resume a stuck or failed run with full history.drafts
jobs_runPress Run on the job's newest proposed plan - the approval click a headless caller has nobody to make. Use it after a turn ended with a plan waiting; deliverables still land as proposed drafts.drafts
jobs_stopStop a running job.asks you first
posts_listThe post queue: proposed drafts, scheduled posts, published history, newest first. For "my best posts": sort views ranks every published post by views (metrics.latest.impressions) across the whole history, narrowed by platform, connectionId, minViews and since. Each reading carries its fetchedAt; fresh re-reads the listed posts' numbers older than 6h from the platforms first (slower, up to ~30s).reads
posts_getOne post's live state, with the url that opens it in the calendar for the human.reads
posts_approvePUBLISHES CONTENT: approving moves proposals to the schedule, and they will go out.asks you first
posts_dismissCancel posts: proposed, scheduled, failed or handed-off. Nothing already publishing or published is touched. Pass the user's reason when they gave one; it teaches the agent their taste.asks you first
posts_publishPUBLISHES CONTENT NOW: pushes a queued post to the platform immediately.asks you first
posts_createPUBLISHES CONTENT: puts a post you wrote on the rail for one connected account (connections_list), at a time, in the account's next free queue slot, or now. Read platforms_list first for the platform's limits and settings schema. Free plan: 10 posts a day (402 free_daily_cap says when the day resets).asks you first
instagram_audio_searchMusic or original sounds an Instagram account may attach to a Reel, from Meta's Audio API (audio Meta authorized for third-party use; the in-app catalogue can differ). Empty query = trending. Pass a result's id as posts_create audio.audioId; the sound is attached by Instagram, never burned into the video. Prefer isAdsEligible: true for a business promoting itself. Needs the Instagram account connected through Facebook Login; otherwise a 409 carries the connect link.reads
platforms_listEvery platform the rail posts to: text limit, media rules, whether documentTitle is required, first-comment support, and the JSON Schema for its settings. Read it before posts_create. Works with any key (read scope or none).reads
characters_listThe account's actors: who they are, what their voice is, and which parts are locked. voiceDescription is the casting direction a designed voice was written from - read it before designing another one, and reuse the actor that already fits.reads
characters_voiceSPENDS CREDIT: gives an actor a voice. description designs one from casting direction (kept on the character, so later runs can reuse the actor); sampleMediaKey clones a real voice and requires consent: true - the user's own attestation that they hold the rights. Returns the voice id, a preview clip and what it cost.asks you first
brain_onboardingWhat is still open in Brand Memory, as the questions a human answers, with hints. Ask the human, write the answers as markdown under the question headings with brain_write at the item's path, then call again until open is empty.reads
brain_treeBrand Memory's file list with the completion ring.reads
brain_readRead one Brand Memory file.reads
brain_writeWrite one Brand Memory file (.md paths only) - the agent grounds future posts in it.asks you first
assets_listThe media library: brand uploads and generated media.reads
agents_listThe agent roster (the API calls them strategies).reads
agents_saveCreate an agent (no id) or edit one (with id). Setting autoPublishPosts arms publishing without human approval and needs the publish scope; everything else needs write.asks you first
agents_wakePUBLISH-SCOPED: wake an agent now; it plans and proposes (or with auto-publish, posts) immediately. Returns the conversation it woke into and its web url.asks you first

Studio tools: every tool our own agent uses, one call each. Images, AI video, video edits, carousels, speech, web and X research. Each takes the write scope; a priced one spends credit, so the host asks first.

ToolWhat it doesRuns
generate_imageGenerate an image. About $0.016 a call.asks you first
generate_footageGenerate AI video. About $0.18 a call.asks you first
edit_footageEdit a video. Free.drafts
render_thumbnailRender a video thumbnail. Free.drafts
demo_pageRecord a product demo. Free.drafts
render_carouselRender a carousel. About $0.02 a call.asks you first
speakTurn text into speech. About $0.03 a call.asks you first
caption_fileMake a subtitle file. Free.drafts
plan_musicGenerate a music bed. About $0.06 a call.asks you first
probe_mediaInspect a video or audio file. Free.reads
find_photoFind a real photo. Free.drafts
find_footageFind stock footage. Free.drafts
find_faceFind a person's photo. About $0.007 a call.drafts
brand_markFind a brand's logo. About $0.007 a call.drafts
web_searchSearch the web. About $0.015 a call.asks you first
read_pageRead a web page. About $0.006 a call.reads
screenshot_pageScreenshot a web page. Free.drafts
record_pageFilm a web page. Free.drafts
capture_tweetCapture a post from X. Free.drafts
list_page_assetsList a page's images and videos. Free.reads
inspect_page_styleRead a site's brand style. Free.reads
fetch_assetImport a file from a URL. Free.drafts
x_pulseAsk what X is saying. About $0.25 a call.asks you first
news_searchSearch the news. About $0.01 a call.asks you first
concept_searchSearch by meaning. About $0.007 a call.reads
community_hotWhat a community upvotes. Free.reads
current_pulseMeasure talk on X. About $0.06 a call.asks you first
related_trendsFind related trends. About $0.00001 a call.reads
find_evidenceFind research evidence. About $0.001 a call.reads
reference_searchSearch posts that performed. About $0.00001 a call.reads
reference_readRead a post that performed. Free.reads
linkedin_org_lookupFind a LinkedIn company tag. Free.reads

Every Instagram MCP server, side by side

10 servers reach Instagram, each read from its own docs or repository on the date in its row. Publishes means a tool creates or schedules a post; plenty of Instagram MCP servers only read. The full sentences, auth and limits are in the MCP server survey.

ServerFreePublishesTransportPaid fromRead on
ShapelessAIthis siteFree foreverYesHosted$35 a month
BufferFree foreverYesHosted$5 a month per channel
Zernio (formerly Late)Free foreverYesHosted$6 per account
PubloraFree foreverYesHosted$29.95 a month
OutstandFree foreverYesHosted$19 a month
MetricoolFree foreverYesHostedNot read this pass
PostEverywhereTrial onlyYesstdio$9 a month
BlotatoTrial onlyYesHosted$29 a month
AyrshareTrial onlyYesHosted$149 a month
HootsuiteTrial onlyYesHosted$99 a month

Questions

What is a Instagram MCP server?
A server that speaks the Model Context Protocol and exposes Instagram publishing as tools an AI host can call. Ours is hosted at https://shapelessai.com/mcp: the host connects over OAuth, and its tools start jobs that research, write, design and render for Instagram, queue the drafts for your approval, and publish on schedule through the Instagram account you connected to Shapeless.
Do I need a Instagram developer app or API key?
No. You connect your Instagram account to Shapeless once, under Accounts, through Instagram's own sign-in. Shapeless holds that connection; the host never sees a Instagram token, and you never paste a key into the host either - it signs in to Shapeless with OAuth.
Which hosts can use it?
Claude, ChatGPT, Claude Code, Cursor, Codex, VS Code, Gemini CLI, Antigravity, Grok, Gemini, Perplexity, Muse, OpenClaw and Hermes Agent, and any other host that supports remote MCP servers with OAuth. Each has a page with the exact steps; the URL is the same everywhere.
Will it post to Instagram without asking me?
Not unless you set a standing agent to auto-publish. A job proposes drafts and waits for your approval in Shapeless or in the chat; the tools that approve, publish or spend are flagged, so the host asks you before running one.
Can it make the Instagram media, not just the words?
Yes - that is the point. We publish text, images and video here; PDF documents we do not deliver to Instagram yet. Instagram takes one video up to 15 min. You brief it in the chat; Shapeless designs the images or renders the narrated video with your actor and captions, and hands the draft back for approval.
What does Instagram allow in a post?
2,200 characters and 10 images, 1 video up to 15 min, per Instagram's own documentation as we last read it on 2026-07-21. Shapeless enforces the same table its publishing engine does, so a draft that breaks a limit is fixed before it is queued.

Free to run

Every tool above works on the free Instagram scheduler: 10 posts a day, no card. Arguments and errors, tool by tool, are in the MCP reference. How it compares with every other server that posts to Instagram: the MCP server survey.

MCP servers for other platforms