Skip to main content
Glama

Inrō MCP for Instagram

Media Posts

medias
Read-onlyIdempotent

Read medias — this tool changes nothing. Actions: list, get. Anything that writes (create, update, publish, attach_comment_to_dm, delete) is on medias_manage and is refused here.

Read and publish Instagram feed posts, and set up the automation that DMs people who comment on one. First upload the visual with create_media_file, then use create here. Actions: list (paginated index; params: page, per_page, status, search); get (fetch one by Inrō ID, including its comment-to-DM automation; params: id); create (draft/schedule/publish a post; params: publish_media_type [IMAGE|REELS|CAROUSEL], media_file_id, children, caption, scheduled_at, publish_now, is_ai_generated, is_paid_partnership, comment_to_dm, …); update (edit a draft, or change a published post's automation or agent_context; params: id + fields); attach_comment_to_dm (auto-reply to commenters on one post and DM them a link — use this instead of hand-building a scenario; params: id, conversion_link, comment_options, question_type); publish (publish a draft/scheduled post now; params: id); delete (params: id). Publishing waits for the post to go live, so create with publish_now and publish normally return status "published" — check the response and report the permalink instead of polling; only status "pending" means Instagram is still processing a large upload, in which case poll get until status is "published" or publish_status is "ERROR". Scheduling/publishing requires Instagram publishing permission (see get_organization_info#can_publish). Set is_ai_generated on AI-generated media: Meta requires the disclosure on photorealistic AI content, it is applied when the post is published, and it can never be added afterwards — only removed, from Instagram. agent_context is different from every other field: it's notes for the AI agent, never shown on Instagram, and can be set or changed on any post — draft or published — unlike the rest of a published post's content. A sponsored post takes is_paid_partnership and branded_content_sponsors (the brands to tag, by username or Instagram user ID); a reel can be published as a trial reel — shown only to non-followers — with trial_graduation_strategy. Both are applied when the post is published, so set them before publishing or scheduling. To publish a post and its automation together in one call, pass comment_to_dm to create; on an existing post use attach_comment_to_dm. Neither is accepted on publish.

Input Schema

NameRequiredDescriptionDefault
actionYesThe read operation to perform on medias.
action_paramsNoParameters for the chosen action, tagged [action] below.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, and the description only echoes that with "changes nothing." The remaining behavioral detail (publish timing, status "published" vs "pending", polling instead of reporting a permalink) describes the write path this tool refuses to execute, so it is largely inapplicable and actively invites misuse of the `get` action as a polling loop. Nothing is said about list pagination behavior, result ordering, or what a read returns.

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

Conciseness2/5

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

The definition is front-loaded correctly, but roughly 80% of its length is devoted to a write workflow (media upload ordering, AI disclosure rules, paid partnership sponsors, trial reels, comment-to-DM automation internals) that this tool's schema cannot execute. That is not conciseness — it is content that belongs on `medias_manage` and that dilutes the two sentences an agent actually needs.

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

Completeness2/5

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

With no output schema, the description carries the burden of explaining return values, and it never says what `list` returns (fields, total count, pagination metadata) or what `get` includes beyond a passing mention of the comment-to-DM automation. Meanwhile it omits nothing about writes because it over-documents them, so the coverage is misallocated rather than balanced.

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 `action`, `id`, `page`, `per_page`, `status` and `search` in detail — the baseline is 3. The description restates the list and get parameter sets without adding meaning beyond them (no syntax for `search`, no note on what `status` filtering does across scheduled vs pending).

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

Purpose3/5

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

The opening is excellent: "Read medias — this tool changes nothing. Actions: list, get" names the verb, resource and the sibling (`medias_manage`) that owns writes. But that clarity collapses immediately afterward, where the description spends most of its length explaining create/update/publish/delete semantics for actions that its own schema enum (only `list`, `get`) does not permit, including the instruction "then use create here." An agent reading the body would reasonably attempt an action that cannot be dispatched.

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?

It gives an explicit negative routing rule — create, update, publish, attach_comment_to_dm and delete "is on `medias_manage` and is refused here" — which is exactly the sibling differentiation an agent needs. What is missing is any guidance on choosing between this tool's two actual actions (list vs get), though the schema's `[list]`/`[get]` tags partially cover that.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources