Instagram MCP Server
The Instagram MCP Server provides 11 tools to read analytics, manage comments, and publish content via the Instagram Graph API, with built‑in reliability features like per‑account rate limiting, exponential backoff retries, input sanitization, and prompt injection protection.
Read & Analytics (SENSE)
Account Insights: Get impressions, reach, follower growth, and profile views over day, week, or 28‑day periods.
Post Insights: Retrieve engagement metrics (impressions, reach, saves, shares) for a specific post.
Story Insights: View reach, replies, follows, profile visits, and interactions for active stories (within their 24‑hour window).
Audience Demographics: Analyze follower, engaged, or reached audiences by age, city, country, or gender (requires 100+ followers).
Hashtag Search: Search public posts by hashtag (limited to 30 unique hashtags per 7‑day rolling window).
Publishing & Engagement (ACT)
Publish Photos: Post a single JPEG or PNG from a public URL, with optional caption and first comment.
Publish Carousels: Create a multi‑image (2–10 items) carousel post from public URLs, with optional caption and first comment.
Publish Reels: Upload an MP4 video with optional caption, custom cover image, feed sharing toggle, and first comment; asynchronous processing is handled automatically.
Manage Comments: Fetch comments (up to 50 at a time, paginated), reply to a comment, or delete a comment on your own posts.
Authentication can be set via environment variables or passed per call for flexibility.
Provides tools to read Instagram account and post insights, manage comments, and publish photos, carousels, and reels using the Instagram Graph API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Instagram MCP ServerShow me my Instagram account insights for the last 28 days"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Instagram MCP Server
A Model Context Protocol (MCP) server that connects Claude Desktop (and other MCP clients) to the Instagram Graph API — read analytics, manage comments, publish photos, carousels, and reels.
Features
11 Instagram Tools
SENSE (read-only):
Tool | Description |
| Account insights: reach, follower growth, profile views over a period |
| Engagement metrics for a specific post: reach, likes, shares, saves |
| Comments on a post with username, timestamp, and replies |
| Insights for an active story: reach, replies, interactions |
| Follower demographics: city, country, age/gender breakdown |
| Search public posts by hashtag (30 unique hashtags per 7-day window) |
ACT (write):
Tool | Description |
| Publish a photo post from a public URL |
| Publish a carousel (2-10 images) from public URLs |
| Publish a reel (short video) from a public URL |
| Reply to a comment on a post |
| Delete a comment on one of your posts |
Built-in Reliability
Per-tenant rate limiting — token-bucket rate limiter keyed by IG Business Account ID
Exponential backoff retry — automatic retry with jitter for transient API errors
Container-based publishing — create container → poll status → publish (handles async video processing)
Input sanitization — strips zero-width characters, normalizes whitespace, truncates to API limits
Prompt injection protection — wraps external API data in randomized markers
Related MCP server: Instagram MCP Server
Quick Start
Prerequisites
Node.js 22.14+
An Instagram Business or Creator account connected to a Facebook Page
A Facebook App with the Instagram Graph API enabled
A long-lived Page Access Token
Getting Your Access Token
Create a Facebook App
Add the Instagram Graph API product
In Graph API Explorer, generate a Page Access Token with these permissions:
instagram_basic,instagram_content_publish,instagram_manage_comments,instagram_manage_insights,pages_show_list,pages_read_engagement
Extend the token to a long-lived token (60 days)
Installation
Published package: @luminarylane/instagram-mcp-server on npm
Run without a global install:
INSTAGRAM_ACCESS_TOKEN=your-token INSTAGRAM_BUSINESS_ACCOUNT_ID=your-account-id npx --yes @luminarylane/instagram-mcp-serverTo run from source:
git clone https://github.com/luminarylane/instagram-mcp-server.git
cd instagram-mcp-server
npm install
npm run buildConfiguration
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"instagram": {
"command": "npx",
"args": ["--yes", "@luminarylane/instagram-mcp-server"],
"env": {
"INSTAGRAM_ACCESS_TOKEN": "your_long_lived_page_token",
"INSTAGRAM_BUSINESS_ACCOUNT_ID": "your_17_digit_ig_business_account_id"
}
}
}
}Environment variables:
Variable | Required | Description |
| Yes* | Long-lived Facebook Page Access Token |
| Yes* | 17-digit IG Business Account ID |
*Can also be passed per-call via tool arguments.
Finding Your Business Account ID
Use the Graph API Explorer:
GET /me/accounts?fields=instagram_business_accountThe instagram_business_account.id field is your Business Account ID.
Usage Examples
Once configured, ask Claude to:
"Show me my Instagram account insights for the last 28 days"
"What are the engagement metrics for my latest post?"
"Get the comments on this post" (paste a media ID)
"Show my follower demographics by country"
"Publish this photo to Instagram" (provide a public image URL + caption)
"Create a carousel post with these images"
"Reply to this comment with 'Thanks!'"
"Search recent posts with #startup"
Publishing
Photo and carousel publishing is synchronous — the tool returns once the post is live. Reel publishing is asynchronous — the server polls the container status until processing completes, then publishes.
All publish tools accept an optional firstComment parameter to add a comment immediately after publishing (commonly used for hashtags).
Rate Limiting
The server enforces per-account rate limits to stay within Instagram's API quotas. If you hit a rate limit, the tool will return an error with a suggested retry time. The built-in retry logic handles transient 429 responses automatically.
Contributing
Fork the repo
Create a feature branch (
git checkout -b feat/my-feature)Make changes and run tests (
npm test)Submit a pull request
License
MIT License — see LICENSE for details.
Acknowledgments
Anthropic for the MCP specification
Meta Graph API for the underlying Instagram API
Available Tools
11 toolsig_delete_commentB
Delete a comment on one of your Instagram posts.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | No | Instagram Business Account ID. Falls back to INSTAGRAM_BUSINESS_ACCOUNT_ID env var. | |
| commentId | Yes | ID of the comment to delete | |
| accessToken | No | Instagram access token. Falls back to INSTAGRAM_ACCESS_TOKEN env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the destructive nature ('Delete'), but does not mention whether deletion is irreversible, what permissions are required, or any rate limits. For a mutation tool, more detail is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words. Front-loaded with the core action. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with a well-documented schema (100% coverage), the description is mostly adequate. However, it lacks usage guidance and behavioral details that would fully inform an AI agent, especially given the absence of an output schema and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already documents each parameter (accountId, commentId, accessToken) including fallback behavior for accountId and accessToken. The description adds no additional meaning beyond the schema, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Delete a comment on one of your Instagram posts.' It uses a specific verb ('Delete') and resource ('comment on Instagram post'), and it effectively distinguishes itself from sibling tools like ig_get_comments (for reading) and ig_reply_comment (for writing).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives, nor any mention of prerequisites (e.g., needing the comment to exist, ownership requirements). The description only states the action without contextualizing when it is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ig_get_account_insightsB
Get Instagram account insights: impressions, reach, follower growth, and profile views over a period.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Start date as Unix timestamp (e.g., '1700000000') | |
| until | No | End date as Unix timestamp | |
| period | No | Aggregation period (default: "day") | |
| accountId | No | Instagram Business Account ID. Falls back to INSTAGRAM_BUSINESS_ACCOUNT_ID env var. | |
| accessToken | No | Instagram access token. Falls back to INSTAGRAM_ACCESS_TOKEN env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It does not disclose authentication requirements, rate limits, data freshness, or side effects. The operation is read-only but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no extraneous information. It efficiently conveys the tool's purpose and scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters and no output schema, the description is too minimal. It fails to explain the return format, pagination, date range behavior, or how metrics are aggregated. A more detailed description would improve usability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already defines all parameters. The description adds no additional meaning to parameters (e.g., usage tips, constraints, or format details). It merely restates the output metrics, which are not parameter-specific.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool retrieves Instagram account insights and lists specific metrics (impressions, reach, follower growth, profile views). This clearly differentiates it from sibling tools like ig_get_post_insights or ig_get_stories_insights, which operate on different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites, context (e.g., account-level vs post-level), or scenarios where this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ig_get_audience_demographicsB
Get follower demographics: city, country, and age/gender breakdown. Requires 100+ followers.
| Name | Required | Description | Default |
|---|---|---|---|
| metric | No | Demographic metric (default: follower_demographics). Requires 100+ followers. | |
| accountId | No | Instagram Business Account ID. Falls back to INSTAGRAM_BUSINESS_ACCOUNT_ID env var. | |
| breakdown | No | Breakdown dimension (default: country) | |
| accessToken | No | Instagram access token. Falls back to INSTAGRAM_ACCESS_TOKEN env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only mentions the follower requirement. Lacks details on rate limits, data freshness, authentication requirements, or whether multiple breakdowns can be retrieved in one call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with an appended requirement. Efficient and front-loaded, but could be slightly expanded to include key behavioral notes without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and multiple parameters (metric, breakdown). Description omits return format, how to interpret demographic data, and limitations. Incomplete for an agent to use correctly without trial and error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; the description adds no parameter-level information beyond what the schema already provides (enums, fallbacks). Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves follower demographics with breakdowns by city, country, and age/gender. This distinguishes it from sibling insight tools like ig_get_account_insights. However, it could be more explicit about being for audience demographics specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes a prerequisite ('Requires 100+ followers'), which helps agents know when to use it. Does not mention alternatives or when not to use it compared to siblings like ig_get_account_insights.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ig_get_commentsB
Get comments on an Instagram post. Returns comment text, username, and timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Pagination cursor | |
| limit | No | Number of comments (default: 25, max: 50) | |
| mediaId | Yes | Instagram media ID | |
| accountId | No | Instagram Business Account ID. Falls back to INSTAGRAM_BUSINESS_ACCOUNT_ID env var. | |
| accessToken | No | Instagram access token. Falls back to INSTAGRAM_ACCESS_TOKEN env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions return fields but omits pagination behavior (after cursor), rate limits, authentication requirements, or that it requires a business account. Minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action and resource. No wasted words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose and return fields but lacks context on pagination, limit handling, authentication fallback, and prerequisites. Adequate for a simple read tool but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented in the schema. The description does not add any extra meaning beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('get comments'), the resource ('Instagram post'), and what is returned ('comment text, username, and timestamp'). It distinguishes from sibling tools like ig_delete_comment or ig_reply_comment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Does not mention that it is a read-only operation or when to use other comment-related tools like ig_delete_comment or ig_reply_comment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ig_get_hashtag_searchA
Search public Instagram posts by hashtag. Two-step: search hashtag ID → get recent media. Limited to 30 unique hashtags per 7-day rolling window.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results (default: 25, max: 50) | |
| hashtag | Yes | Hashtag to search (without #) | |
| accountId | No | Instagram Business Account ID. Falls back to INSTAGRAM_BUSINESS_ACCOUNT_ID env var. | |
| accessToken | No | Instagram access token. Falls back to INSTAGRAM_ACCESS_TOKEN env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It describes the two-step process and a rate limit. However, it does not cover the return format, pagination, error behavior, or authentication requirements beyond what the schema implies. For a search tool, this is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two sentences that convey the core purpose, process, and a key limitation with zero filler. Every word adds value. It is well front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description should clarify what is returned. It only says 'get recent media' without specifying the output format (e.g., list of media objects, IDs). It also lacks details on pagination, ordering, or whether the two-step process is transparent to the user. For a tool with 4 parameters and no output schema, this is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all 4 parameters. The description adds no new parameter-level details beyond the schema. It mentions the two-step process, which loosely relates to the hashtag parameter, but does not elaborate on parameter usage or constraints. Baseline 3 is appropriate since the schema fully documents parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches public Instagram posts by hashtag and mentions a two-step process (search hashtag ID, then get recent media). This distinguishes it from sibling tools like ig_delete_comment or ig_publish_photo, though it does not explicitly name alternatives. The verb 'search' and resource 'hashtag' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a key usage constraint: limited to 30 unique hashtags per 7-day rolling window. This helps agents decide when to call the tool. It does not explicitly state when not to use it, but sibling tools are clearly different in purpose, so no further exclusion is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ig_get_post_insightsA
Get engagement metrics for a specific Instagram post: impressions, reach, engagement, saves, shares.
| Name | Required | Description | Default |
|---|---|---|---|
| mediaId | Yes | Instagram media ID | |
| accountId | No | Instagram Business Account ID. Falls back to INSTAGRAM_BUSINESS_ACCOUNT_ID env var. | |
| accessToken | No | Instagram access token. Falls back to INSTAGRAM_ACCESS_TOKEN env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It indicates a read operation (get) and lists returned metrics, but does not disclose any potential side effects, rate limits, or authentication requirements beyond what is in the schema. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is concise and front-loaded with the core purpose. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description lists key return metrics (impressions, reach, engagement, saves, shares), which is sufficient. Could hint at additional fields but overall complete for a simple post-level insights tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description adds no additional parameter meaning beyond the schema; it lists output metrics but not parameter details. Does not explain mediaId format or fallback logic already described in schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it gets engagement metrics for a specific Instagram post, listing specific metrics like impressions, reach, etc. Distinguishes from sibling tools like ig_get_account_insights which are account-level.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Does not mention that it is for post-level metrics only, nor does it mention prerequisites or fallback behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ig_get_stories_insightsA
Get insights for an active Instagram story: reach, replies, follows, profile_visits, total_interactions. Stories expire after 24 hours — storyId must reference a currently active story (fetch from /{ig-account-id}/stories).
| Name | Required | Description | Default |
|---|---|---|---|
| storyId | Yes | Instagram story media ID | |
| accountId | No | Instagram Business Account ID. Falls back to INSTAGRAM_BUSINESS_ACCOUNT_ID env var. | |
| accessToken | No | Instagram access token. Falls back to INSTAGRAM_ACCESS_TOKEN env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the key behavioral trait that stories expire after 24 hours and the storyId must reference an active story. With no annotations, this is adequate. Could mention auth but not required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, followed by important usage context. Every word earned its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and only 3 parameters, the description covers the essential constraints (story expiry, active requirement) and parameter source. Could mention return format but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage, so baseline is 3. The description adds value by explaining the storyId context (active, expiry, fetch method), which goes beyond the schema's simple description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and the resource 'insights for an active Instagram story', listing specific metrics. It distinguishes from siblings like ig_get_post_insights by targeting stories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use (for active stories, within 24 hours) and how to obtain the storyId. Lacks explicit 'when not to use' but context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ig_publish_carouselA
Publish a carousel (multi-image) post to Instagram. Requires 2-10 items. Each item URL must be publicly accessible. Flow: create child containers → create parent container → publish.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Carousel items (2-10). Each needs a publicly accessible media URL. | |
| caption | No | Carousel caption (max 2200 characters). | |
| accountId | No | Instagram Business Account ID. Falls back to INSTAGRAM_BUSINESS_ACCOUNT_ID env var. | |
| accessToken | No | Instagram access token. Falls back to INSTAGRAM_ACCESS_TOKEN env var. | |
| firstComment | No | Optional first comment posted immediately after publishing. Use for hashtags or a call-to-action. NOTE: links in Instagram comments are NOT clickable — do not use for bare URLs. Requires an IG Business account. Max 2200 chars. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the process and key requirements (public URLs, fallback env vars) but does not cover authentication details, rate limits, or error scenarios. Adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero waste. Front-loaded with purpose, then constraints, then flow. Efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers key aspects (item count, URL accessibility, flow) but lacks error handling specifics and return value structure. Reasonably complete given no output schema, but could be improved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions, but the description adds meaningful context: the flow (child containers first), the requirement for public URLs, and special behavior for firstComment (links not clickable, requires Business account). This adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool publishes a carousel post to Instagram, distinguishes from sibling tools like ig_publish_photo and ig_publish_reel, and explains the multi-step flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives constraints (2-10 items, public URLs) and the underlying flow, but does not explicitly state when not to use or compare with alternatives. However, the sibling context makes the distinction clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ig_publish_photoA
Publish a photo post to Instagram. The image_url must be publicly accessible. Flow: create media container → publish.
| Name | Required | Description | Default |
|---|---|---|---|
| caption | No | Post caption (max 2200 characters). Supports #hashtags and @mentions. | |
| imageUrl | Yes | Publicly accessible URL to the image. Must be JPEG or PNG. | |
| accountId | No | Instagram Business Account ID. Falls back to INSTAGRAM_BUSINESS_ACCOUNT_ID env var. | |
| accessToken | No | Instagram access token. Falls back to INSTAGRAM_ACCESS_TOKEN env var. | |
| firstComment | No | Optional first comment posted immediately after publishing. Use for hashtags or a call-to-action. NOTE: links in Instagram comments are NOT clickable — do not use for bare URLs. Requires an IG Business account. Max 2200 chars. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It describes the two-step process, constraints on image URL (public, JPEG/PNG), caption limits (2200 chars, supports #hashtags and @mentions), firstComment limitations (links not clickable), and fallback env vars for accountId and accessToken. Some behaviors like error handling or rate limits are omitted, but the core traits are well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences, both directly adding value. The first sentence states the purpose, the second provides a critical constraint and the workflow. No fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, no output schema, and no annotations, the description covers the essential behavioral aspects: constraints, fallback, and limitations. It does not explain return values or error handling, which is acceptable without an output schema. It is fairly complete for a single-photo publishing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining the public accessibility requirement for imageUrl, the support for hashtags/mentions in caption, the non-clickable links note for firstComment, and the fallback behavior for accountId and accessToken. This goes beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Publish a photo post to Instagram') and distinguishes it from siblings like ig_publish_carousel and ig_publish_reel by specifying the single photo scope and the two-step flow ('create media container → publish').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a critical usage requirement ('image_url must be publicly accessible') and hints at the workflow, but does not explicitly contrast with sibling tools. However, the sibling list and the mention of 'photo' vs 'carousel'/'reel' imply when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ig_publish_reelA
Publish a reel (short video) to Instagram. The video_url must be publicly accessible. Video processing is async — this tool polls until ready, then publishes.
| Name | Required | Description | Default |
|---|---|---|---|
| caption | No | Reel caption (max 2200 characters). | |
| coverUrl | No | Publicly accessible URL for a custom cover image. | |
| videoUrl | Yes | Publicly accessible URL to the video. MP4 format recommended. | |
| accountId | No | Instagram Business Account ID. Falls back to INSTAGRAM_BUSINESS_ACCOUNT_ID env var. | |
| accessToken | No | Instagram access token. Falls back to INSTAGRAM_ACCESS_TOKEN env var. | |
| shareToFeed | No | Also share to the main feed (default: true). | |
| firstComment | No | Optional first comment posted immediately after publishing. Use for hashtags or a call-to-action. NOTE: links in Instagram comments are NOT clickable — do not use for bare URLs. Requires an IG Business account. Max 2200 chars. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions the async polling behavior, which is a key behavioral trait beyond what the schema shows. With no annotations, it carries the full burden. It lacks details on rate limits, failure modes, timeouts, or required permissions (beyond env vars). This leaves important behaviors unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two well-structured sentences. Every word adds value, and there is no redundancy or fluff. It prioritizes the most critical information upfront.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks information about return values (e.g., the published reel ID) and error handling. Given the complexity of async video processing and the absence of an output schema, these are significant gaps. The tool does not specify what the agent can expect after successful publishing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds only minor clarification (e.g., first comment notes about links) that largely duplicates the schema. It does not provide significant new meaning beyond the parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Publish a reel') and the resource ('short video to Instagram'), distinguishing it from sibling tools like ig_publish_photo or ig_publish_carousel. It also specifies a key requirement (publicly accessible video URL) and the async behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides prerequisites (public URL) and the async nature (polling). However, it does not explicitly state when to use this tool versus alternatives like ig_publish_photo, though the name and context make it clear. Could be improved by adding explicit when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ig_reply_commentB
Reply to a comment on an Instagram post.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | Reply text | |
| accountId | No | Instagram Business Account ID. Falls back to INSTAGRAM_BUSINESS_ACCOUNT_ID env var. | |
| commentId | Yes | ID of the comment to reply to | |
| accessToken | No | Instagram access token. Falls back to INSTAGRAM_ACCESS_TOKEN env var. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only states 'Reply to a comment' but does not mention authentication requirements, rate limits, or any side effects beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single-sentence description is front-loaded and contains no unnecessary words, earning its place efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with no output schema, the description is minimally complete but lacks context about prerequisites (e.g., needing an Instagram Business Account) beyond what's inferred from schema field descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already describes all parameters. The description adds no extra semantics beyond what the schema provides, resulting in a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Reply to a comment on an Instagram post' uses a specific verb ('Reply') and resource ('comment on an Instagram post'), clearly indicating the action. It distinguishes from sibling tools like 'ig_delete_comment'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., deleting a comment). The context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
11 tool updates
v1.6.6- First observed
ig_delete_comment - First observed
ig_get_account_insights - First observed
ig_get_audience_demographics - First observed
ig_get_comments - First observed
ig_get_hashtag_search - First observed
ig_get_post_insights - First observed
ig_get_stories_insights - First observed
ig_publish_carousel - First observed
ig_publish_photo - First observed
ig_publish_reel - First observed
ig_reply_comment
TDQS
Scored across 11 tools
Each tool targets a distinct action on Instagram (publish different media types, manage comments, retrieve insights, search hashtags). No two tools overlap in purpose, so an agent can clearly distinguish them.
All tools follow the 'ig_<verb>_<noun>' pattern using snake_case. Verbs like get, publish, delete, reply are consistently applied, and nouns clearly indicate the target (e.g., comment, account_insights). No mixing of conventions.
11 tools is appropriate for an Instagram integration covering publishing, comments, insights, audience demographics, and hashtag search. The scope is focused without being too narrow or overly broad.
The tool set covers publishing and insights well but lacks basic post management operations (read, update, delete posts). Also missing story publishing and like/unlike functions. Some common workflows require external tools to fill gaps.
Maintenance
Related MCP Connectors
Instagram for AI agents: publish, read comments and DMs, insights, and engage from your account.
Schedule and publish social posts across 9 platforms (Instagram, LinkedIn, X, TikTok, Facebook, Threads, Pinterest, Bluesky, Mastodon) straight from Claude, ChatGPT, Cursor, or any MCP client. Create, edit, and reschedule posts, upload media, and pull account and post analytics, follower demographics, and best-time windows. 20 tools, free on every plan.
- cloziqOAuthcom.cloziq
Create your offers and launch AI Instagram DM sales agents from any MCP client, over OAuth.
- ReelDropOAuthio.reeldrop
Schedule Instagram reels, manage comment-to-DM automations, and read analytics
Related MCP Servers
- FlicenseBqualityCmaintenanceProvides Instagram analytics, media downloads, and search capabilities through an MCP interface for use with Claude and other MCP clients.4341-
- AlicenseNot gradedqualityCmaintenanceExposes Instagram actions (posts, media, comments, DMs, insights, Messenger profile) to Claude and ChatGPT via MCP.MIT
- AlicenseNot gradedqualityCmaintenanceA production-ready Remote MCP Server that gives Claude direct, tool-based access to your Instagram Business account through the Meta Graph API — profile data, posts, comments, publishing, insights, analytics, hashtags, messaging, and real-time webhooks.26MIT
- FlicenseAqualityCmaintenanceEnables posting and managing Instagram content (photos, reels, stories, carousels) and interacting with media and comments via Instagram Graph API.1026-