Skip to main content
Glama

Post an Instagram reel

instagram_post_reel

Publish an Instagram Reel to a professional account: create the container, wait for processing, and publish. If processing takes too long, resume with the container ID to avoid duplicates.

Instructions

Publish a reel in one call: create the REELS container, wait for processing (reels can take a while), then publish. Preview performs nothing. If processing exceeds the poll budget the result is status=in_progress with a resume_container_id — re-run with apply:true and resumeContainerId to finish (never create a new post). Video duration, codec, and size are validated by Instagram on fetch, not here.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
applyNoSet true to actually perform this write. Omitted (or false) returns a non-mutating preview of exactly what would happen and calls nothing, unless IG_WRITE_MODE=apply is configured. An explicit false always forces preview.
accountNoName of the configured account profile to operate as (multi-account). Omit to use the default profile (IG_ACTIVE_PROFILE).
captionNoCaption text (≤ 2200 characters, ≤ 30 hashtags, ≤ 20 @mentions — counted as a client-side guard). Instagram renders @mentions and #hashtags.
coverUrlNoPublic HTTPS cover image URL for the reel.
videoUrlNoPublic HTTPS video URL for the reel (required unless resuming). Duration, codec, and size are unverifiable before Instagram fetches it.
locationIdNoInstagram location Page id to tag on the post.
shareToFeedNoAlso show the reel in the main feed.
thumbOffsetNoCover frame offset in milliseconds (used when no coverUrl is given).
resumeContainerIdNoResume a container from a previous apply that returned status=in_progress: pass its resume_container_id to finish publishing instead of creating a new post (avoids a duplicate). When set, the media inputs are ignored.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavior beyond the annotations: reels can take a while to process, preview is non-mutating, polling can time out into a resumable in_progress state, and video constraints are only enforced by Instagram at fetch time. It also warns against duplicate posts when resuming. This is exactly the kind of behavioral nuance annotations alone cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the main operation, then covers preview semantics, resume flow, and validation caveats in just three sentences. Every sentence carries critical information with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 9-parameter write tool with no output schema, the description covers the key edge cases: preview behavior, polling budget, resume semantics, and deferred validation. It does not describe what a successful final response looks like (e.g., published media ID or URL), which is a minor gap given no output schema is present, but the guidance is otherwise strong enough for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all nine parameters well. The description adds a little extra value by clarifying resumeContainerId's role in finishing an in_progress post and by noting videoUrl is validated only on Instagram fetch, but it largely reinforces what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Publish a reel in one call' and names the actual operation sequence (create REELS container, wait for processing, publish). It differentiates this tool from sibling tools by emphasizing the one-call reel flow vs lower-level container creation/publishing, and from image/story posts by resource type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context on when to actually write vs preview ('Preview performs nothing'), when to resume vs create new ('re-run with apply:true and resumeContainerId to finish... never create a new post'), and warns that validation happens on Instagram's side. It does not explicitly name sibling alternatives like instagram_create_media_container, but the one-call versus multi-step distinction is strongly implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/IvanBBaev/instagram-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server