Skip to main content
Glama

Prepare a post (step 1 of 2)

ig_prepare_post

Uploads media to Instagram as an unpublished draft and returns a preview with a container_id for review and confirmation before publishing. Nothing becomes public until you publish it.

Instructions

Step 1 of publishing: upload media to Instagram as an unpublished draft and return a preview with a container_id. Nothing is public yet. Show the preview to the user and get a clear yes, then call ig_publish_post with the container_id. Drafts expire after 24 hours. Media must be at a public https:// URL (Instagram downloads it). Photos must be JPEG. Reels: MP4/MOV, 3 s to 15 min. Types: 'image' (one photo), 'carousel' (2-10 photos/videos), 'reel' (one video), 'story' (one photo or video, no caption). Example: "Post this photo with caption X" -> type='image', media_url='https://.../photo.jpg', caption='X'.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
typeYes
itemsNoCarousel slides in order, 2-10
captionNoCaption with hashtags/mentions; max 2200 chars, 30 hashtags, 20 mentions
alt_textNoAccessibility description (single photo posts)
cover_urlNoReel cover image URL
media_urlNoPublic https URL of the photo or video (image, reel, story)
media_kindNoOverride the image/video guess made from the file extension
share_to_feedNoReels: also show on the profile grid

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

Annotations only declare non-read-only, non-destructive, non-idempotent, open-world; the description adds the critical facts that nothing is public yet, that a human confirmation step is expected before publishing, and that drafts expire after 24 hours. It also discloses hard media constraints (public https URL, JPEG for photos, MP4/MOV 3s-15min for reels), which are behavioral preconditions not captured by annotations.

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?

Front-loaded with the step and return value, then constraints, then type semantics, then an example. No sentence is filler and the ordering follows how an agent would actually need the information.

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

Completeness5/5

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

For an 8-parameter mutation with no output schema, the description covers the staging lifecycle, the human-in-the-loop handoff, expiry, media validation rules, and per-type expectations. Remaining parameter detail is already carried by the schema's own descriptions.

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

Parameters4/5

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

Schema coverage is 88%, so most parameters are already documented, but the description adds real value by explaining each enum value of `type` ('image' one photo, 'carousel' 2-10 photos/videos, 'reel' one video, 'story' one photo or video with no caption) — the schema's enum has no per-value descriptions. The worked example maps a natural-language request onto type/media_url/caption, though alt_text, cover_url, share_to_feed and media_kind are left entirely to the schema.

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?

States a specific verb and resource ('upload media to Instagram as an unpublished draft') plus the concrete return value ('preview with a container_id'). The title's 'step 1 of 2' and the explicit handoff to ig_publish_post make it unmistakable versus its sibling.

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

Usage Guidelines5/5

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

Gives an explicit when/when-not: use this to stage, show the preview and get a clear yes, then call ig_publish_post with the container_id. It also names the alternative tool and the condition that selects it, and warns about the 24-hour draft expiry.

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