Instagram MCP Server
This server connects your Instagram professional account to an AI agent via the official Meta Graph API, enabling analytics and account management across several areas:
Authentication & Setup
Build OAuth login URLs, exchange authorization codes, refresh long-lived tokens, and check authentication status
View supported OAuth scope presets (readOnly, analytics, fullStandard)
Account & Profile
Fetch authorized Instagram account metadata and resolve Instagram account IDs
List Facebook Pages connected to the token, including linked Instagram Business accounts
Media
List, retrieve details for, and rank media (posts, Reels, etc.) by engagement, likes, comments, or timestamp
Insights & Analytics
Retrieve account-level insights (followers, reach, impressions) with optional date ranges and breakdowns
Fetch performance insights for specific media objects
Comments
List comments on media objects and retrieve replies to specific comments
Advanced / Exploratory
Run custom read-only GET requests against the Meta Graph API for exploratory or unsupported endpoints
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 ServerTop 5 posts this month by engagement"
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 Starter — подключи Instagram к Claude и другим агентам
Твой AI-агент читает и анализирует Instagram-статистику — твою и чужую публичную. От базовой аналитики своего аккаунта через официальный API до самой глубокой статистики, которая есть только в приложении на телефоне, и до разведки по конкурентам: скачать чужой публичный контент, расшифровать, разобрать покадрово, понять, почему заходит, и применить у себя.
Ты подключаешь и авторизуешь СВОЙ аккаунт — на СВОЁМ компьютере, со СВОИМИ ключами (в проекте не зашит ничей чужой аккаунт). Инструменты открытые: помимо полной работы со своим аккаунтом, ими можно вести разведку по чужим публичным аккаунтам — собирать общедоступную статистику и контент конкурентов для анализа. Рамки — в «Ответственном использовании».
🤖 Настройку делает твой агент, а не ты
Дай своему AI-агенту (лучше всего Claude Code / Codex — у них есть терминал) одну фразу:
«Прочитай https://raw.githubusercontent.com/alexfisenkov/instagram-mcp-starter/main/AGENT.md и подключи мой Instagram по этой инструкции»
Агент сам разберётся, какие методы тебе нужны, всё установит (чего не хватит — доустановит или скажет одной командой), продиктует, где что нажать, проведёт авторизацию и проверит. Дальше всё — просто в переписке с агентом. Установщик ниже — необязательный запасной путь для тех, кто любит руками.
Открыто и видоизменяемо. Форкай, меняй, комбинируй методы и инструменты под свои задачи — ничего не зашито намертво.
Related MCP server: instagram-mcp
Три метода — от простого к глубокому
Аналитику Instagram нельзя достать из одного источника целиком. Поэтому здесь три метода, и они дополняют друг друга. Начни с первого, добавляй следующие по мере надобности.
Метод | Что даёт | Чем берём | Риск для аккаунта | |
1 | Официальный API (methods/01-official-api.md) | Аккаунт, посты, охваты, инсайты, комментарии — стабильно и безопасно | Meta Graph API (этот MCP-сервер) | Нет (официальный путь) |
2 | Залогиненный браузер (methods/02-browser.md) | То, чего нет в API: архив и скачивание контента (свой и чужой публичный), сбор базы для анализа сценариев | Твой браузер, где ты уже вошёл в Instagram (встроенный агентский или внешний Chrome) | Низкий (только чтение/сбор, без действий) |
3 | Телефон (iOS/Android) (methods/03-phone.md) | Самая глубокая статистика: удержание по секундам, когда зрители отваливаются, аудитория, — этого нет НИГДЕ, кроме приложения | Управление своим телефоном (iOS: Appium + WebDriverAgent; Android: adb + Appium) | Средний — read-only, свой аккаунт, свой телефон |
Полный путь для максимальной аналитики: метод 1 (база) → метод 2 (архив контента и то, что вне API) → метод 3 (глубина, которая только в приложении). Хочешь понять, что работает, а что нет, работают ли сценарии, где зритель отваливается — тебе нужны все три.
Плюс разведка по конкурентам — methods/04-research.md: собрать общедоступную статистику и скачать контент чужих публичных аккаунтов, расшифровать видео, разобрать покадрово, проанализировать карусели/подписи/комментарии — чтобы понять, почему у них заходит, и перенести приёмы на свой контент.
Обзор и когда что применять: methods/README.md.
Что получишь
После подключения говоришь Claude обычным языком:
«Какие 5 постов за месяц собрали больше всего вовлечённости?» (метод 1)
«Скачай все мои Reels за квартал и собери базу с расшифровками для анализа сценариев» (метод 2)
«Открой статистику последнего Reels на телефоне и покажи, на какой секунде отваливается аудитория» (метод 3)
«Собери 20 самых заходящих Reels конкурента @account, расшифруй их и выдели общие приёмы» (разведка)
«Сравни подписи и первые 3 секунды вирусных роликов в нише и предложи структуру под мой контент» (разведка)
Полный список инструментов метода 1: docs/TOOLS.md.
Что понадобится
# | Что | Для каких методов |
1 | Instagram профессионального типа (Бизнес/Автор) | всех (переключение бесплатно: Instagram → Настройки → Тип аккаунта) |
2 | Node.js 20+ | 1, 2, 3 (установщик поможет) |
3 | Аккаунт Facebook + страница, привязанная к Instagram | 1 (есть альтернатива без страницы) |
4 | Браузер, где ты залогинен в Instagram | 2 |
5 | Твой телефон + кабель (iOS: нужен Mac с Xcode; Android: любой ПК) | 3 |
Всё сопутствующее (браузерный тулинг, Appium, драйверы, adb) агент и установщики ставят сами — см. методы 2 и 3.
⚠️ Безопасность и рамки — коротко
Всё локально: серверы и инструменты работают на твоём компьютере.
App Secret (
~/.instagram-mcp/instagram.env) и токен (~/.config/meta-instagram-mcp/token.json) — ключи доступа. Не пересылать, не коммитить, не показывать. Подробно: docs/SECURITY.md.Читать и собирать можно широко — свой аккаунт полностью и чужой публичный контент для анализа. А вот действовать «ботом» по чужим (лайки, комментарии, подписки, DM, публикации) — не для этого: массовые автодействия ведут к бану. Полное позиционирование: «Ответственное использование».
Чужой контент качаем для своего анализа, не выдаём за своё и не перезаливаем.
Отозвать доступ метода 1 мгновенно: Instagram → Настройки → Безопасность → Приложения и сайты.
Установка (метод 1, база)
Метод 1 ставится одной командой; методы 2 и 3 добавляются поверх (их инструкции — в methods/).
# macOS / Linux
bash <(curl -fsSL https://raw.githubusercontent.com/alexfisenkov/instagram-mcp-starter/main/install.sh)# Windows (PowerShell)
irm https://raw.githubusercontent.com/alexfisenkov/instagram-mcp-starter/main/install.ps1 | iexКлючи для метода 1: docs/01-meta-app.md · Авторизация: docs/02-oauth.md. Удаление: uninstall.sh / uninstall.ps1.
Диагностика
# macOS / Linux
node ~/.instagram-mcp/app/doctor.mjs ~/.instagram-mcp/run.sh# Windows
node "$env:USERPROFILE\.instagram-mcp\app\doctor.mjs" cmd /c "$env:USERPROFILE\.instagram-mcp\run.cmd"Типовые проблемы: docs/TROUBLESHOOTING.md · Вопросы: docs/FAQ.md
Лицензия
MIT. Автор: Александр Фисенков. Родственный проект: telegram-mcp-starter. Нашли ошибку или хотите улучшить — Issue или Pull Request.
Available Tools
16 toolsmeta_auth_statusMeta Auth StatusARead-only
Show Meta Instagram MCP configuration and redacted token metadata.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true; description adds that it shows 'redacted token metadata', disclosing sensitivity while confirming non-destructive behavior.
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, front-loaded, with zero wasted words - every word provides value.
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 zero parameters and no output schema, the description fully explains what the tool returns (config and redacted token metadata), making it complete for its simplicity.
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?
No parameters exist, so schema coverage is 100% vacuously. Baseline score of 4 applies as description does not need to add parameter info.
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 uses specific verb 'Show' and resource 'Meta Instagram MCP configuration and redacted token metadata', clearly distinguishing it from sibling tools that handle auth flows, media, or insights.
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 or alternatives, but the name and description imply it's for checking auth status, which is straightforward given the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_build_login_urlBuild Instagram Login URLBRead-only
Build an official Instagram Business Login OAuth URL for selected analytics permissions.
| Name | Required | Description | Default |
|---|---|---|---|
| scopes | No | ||
| forceReauth | No | ||
| scopePreset | No | ||
| enableFacebookLogin | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, indicating no side effects. The description adds that it builds a URL for analytics permissions but does not disclose other traits like rate limits, URL format, or that it's a non-mutating operation. No contradiction.
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, concise sentence with no redundant information. It efficiently communicates the core 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?
Given 4 parameters, no output schema, and sibling OAuth tools, the description lacks context on how this fits into the OAuth flow, parameter usage, return format, and when to proceed. It is too brief for a complex operation.
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?
With 0% schema description coverage, the description must explain parameters. It only mentions 'analytics permissions' but does not describe scopes, forceReauth, scopePreset, or enableFacebookLogin, failing to add meaning beyond names.
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 builds an OAuth URL for Instagram Business Login with analytics permissions, using a specific verb and resource. It distinguishes from siblings like meta_auth_status and meta_exchange_code.
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 implies this is the first step in the OAuth flow but does not explicitly state when to use it vs alternatives like meta_refresh_token or meta_exchange_code. No mention of prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_exchange_codeExchange Instagram OAuth CodeA
Exchange an Instagram authorization code for a long-lived token and optionally save it outside the repo.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| save | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose all behavioral traits. It mentions 'save it outside the repo' but does not elaborate on side effects, failure modes, authorization requirements, or what happens if the save parameter is false. The description is minimal and lacks transparency for a mutation operation.
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 sentence, front-loaded with the action, and contains no unnecessary words. It efficiently conveys the tool's purpose and an optional behavior.
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 the core operation but omits what the tool returns (e.g., the token itself) and how it integrates with other tools. For a token exchange tool, a brief mention of output or next steps would enhance completeness.
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 0%, so the description must add meaning. It identifies the 'code' parameter as the authorization code and the 'save' parameter as an option to persist the token. This adds value beyond the bare schema, though details like format or behavior of save are missing.
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 ('Exchange') and the resource ('Instagram authorization code for a long-lived token'), and distinguishes from sibling tools like meta_build_login_url (which builds the URL to obtain the code) and meta_refresh_token (which refreshes an existing token).
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?
While the context of exchanging a code for a token is implied, the description does not explicitly specify when to use this tool versus alternatives like meta_refresh_token or meta_build_login_url. No when-not-to-use or prerequisite conditions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_get_account_infoGet Instagram Account InfoCRead-only
Fetch profile/account metadata for the authorized Instagram professional account.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | ||
| userId | No | ||
| accessToken | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the tool is non-destructive. The description adds that it requires an authorized Instagram professional account, which is useful context. However, nothing about rate limits, error scenarios, or response structure is disclosed.
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 concise sentence with no fluff. It could be slightly more structured but is effectively brief.
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 0% parameter coverage, the description is too brief. It does not explain return values or parameter usage, which is inadequate for a tool with 3 parameters and no schema 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 0% for 3 parameters (fields, userId, accessToken). The description does not explain any of these parameters, leaving the agent with no guidance on what each parameter does.
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 ('Fetch') and the resource ('profile/account metadata'), and specifies it's for an 'authorized Instagram professional account'. However, it does not differentiate from sibling tools like meta_get_media or meta_get_post_insights.
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 its siblings (e.g., meta_get_media, meta_get_user_insights). No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_get_comment_repliesGet Instagram Comment RepliesCRead-only
List replies for an Instagram comment when the authorized account has comment access.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No | ||
| fields | No | ||
| commentId | Yes | ||
| accessToken | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set readOnlyHint=true; description adds no new behavioral info (e.g., pagination behavior, rate limits, or required auth scopes). It merely restates the purpose.
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?
Description is a single sentence with no redundancy. However, extreme brevity sacrifices informational value; a slightly longer description with parameter hints would improve completeness without losing conciseness.
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 6 parameters, no output schema, and zero parameter documentation, the description is vastly incomplete. It omits pagination details, return structure, field options, and token handling, making it hard for an agent to use correctly.
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 0%. Description does not explain any of the six parameters (after, limit, before, fields, commentId, accessToken), leaving the agent to infer all meaning from parameter names alone.
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 the action ('list replies'), the target resource ('Instagram comment'), and a precondition ('when... has comment access'), distinguishing it from sibling tools like meta_list_comments which likely list top-level comments.
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 'when... has comment access' provides a usage condition but lacks explicit guidance on when not to use or alternatives. No comparison with meta_list_comments or other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_get_mediaGet Instagram MediaBRead-only
Fetch metadata for one Instagram media object.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | ||
| mediaId | Yes | ||
| accessToken | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotation already marks readOnlyHint=true, consistent with 'Fetch'. Description adds that it targets one media object, but no additional behavioral traits (e.g., no mention of required parameters, rate limits, or response structure).
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. However, could be slightly more informative without adding length (e.g., mention required parameter).
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, many sibling tools, and 3 parameters with zero coverage. Description fails to explain what metadata fields can be requested, how to use the fields parameter, or any authentication prerequisites.
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 0%, and description adds no meaning to the 3 parameters (mediaId, fields, accessToken). Does not explain purpose or format of any parameter.
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 verb ('Fetch') and resource ('metadata for one Instagram media object'). Distinguishes from siblings like meta_list_media (list) and meta_get_top_media (top media) by specifying single media object.
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 vs alternatives. Does not mention prerequisites (e.g., need access token, media ID) or when not to use (e.g., for listing media).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_get_post_insightsGet Instagram Media InsightsCRead-only
Fetch insights for a specific Instagram media object.
| Name | Required | Description | Default |
|---|---|---|---|
| metric | No | ||
| period | No | ||
| mediaId | Yes | ||
| metricType | No | ||
| accessToken | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation already declares readOnlyHint=true, indicating it's a safe read operation. The description's 'Fetch' aligns with this. However, it adds no extra behavioral context beyond the annotation, such as rate limits, data availability window, or that insights are aggregated.
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 sentence with no filler. It is concise, but possibly too terse given the complexity.
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?
With 5 parameters, no output schema, and no parameter descriptions, the description is wholly inadequate. It does not cover valid metric types, period options, token requirements, or return value structure, leaving the agent to guess or fail.
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 5 parameters with 0% description coverage, and the tool description does not explain any parameter meaning. Without context on what 'metric', 'period', 'metricType', or 'accessToken' expect, an agent cannot correctly populate these fields. The description fails to compensate for the schema gap.
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 ('Fetch') and the resource ('insights for a specific Instagram media object'). It distinguishes from siblings like meta_get_user_insights (user-level insights) and meta_get_media (media retrieval). However, it could be more specific about the type of insights.
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 no guidance on when to use this tool vs alternatives, no prerequisites, and no exclusions. It does not mention that it works only for media objects on Instagram Business or Creator accounts, nor that certain metrics require specific permissions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_get_top_mediaRank Instagram MediaBRead-only
List and locally rank recent media by engagement, likes, comments, or timestamp.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No | ||
| sortBy | No | ||
| userId | No | ||
| accessToken | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds 'locally rank', hinting at non-server-side processing, but fails to disclose pagination behavior, cursor usage (after/before), or that it retrieves only recent media. Bar is lowered by annotations, but more context would help.
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 efficient sentence with no wasted words. However, it could benefit from structured breakdown of parameters and usage, given the tool's complexity.
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?
With 6 parameters, no output schema, and zero schema descriptions, the description is too sparse. It omits pagination details, required inputs (userId likely needed), and output format, leaving an agent underinformed for correct invocation.
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 0%; description only clarifies sortBy enum values (engagement, likes, comments, timestamp). No explanation for after, before, limit, userId, or accessToken. Partial compensation but insufficient for a 6-parameter tool.
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 lists and ranks recent media using specific criteria (engagement, likes, comments, timestamp). It distinguishes from sibling tools like meta_list_media (which lists without ranking) and meta_get_media (single media retrieval).
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 no guidance on when to use this tool versus alternatives, no prerequisites (e.g., userId), and no exclusions. It does not explain that 'locally rank' implies client-side processing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_get_user_insightsGet Instagram User InsightsCRead-only
Fetch account-level Instagram insights for the authorized account.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | ||
| until | No | ||
| metric | No | ||
| period | No | ||
| userId | No | ||
| breakdown | No | ||
| timeframe | No | ||
| metricType | No | ||
| accessToken | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description aligns by using 'Fetch'. But the description adds no further behavioral context such as rate limits, required permissions, or output structure. Acceptable given annotation coverage.
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?
Extremely concise (one sentence), but at the cost of being under-informative. The description lacks necessary details for effective tool use, sacrificing utility for brevity.
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's complexity (9 parameters, no output schema, no param descriptions), the description is grossly incomplete. It fails to provide essential operational context, making it nearly unusable for an agent.
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 0%, and the description provides no information on the 9 parameters. The agent is left with no understanding of what each parameter means (e.g., 'since', 'metric', 'period'), making this a critical gap.
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 it fetches account-level insights for the authorized account, distinguishing from post-level insights. However, it is vague on what specific insights are provided, and does not differentiate from other siblings like meta_get_account_info.
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. No mention of prerequisites, when not to use, or required authentication setup. The agent must infer usage context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_list_commentsList Instagram CommentsBRead-only
List comments for a media object when the authorized account has comment access.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No | ||
| fields | No | ||
| mediaId | Yes | ||
| accessToken | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is consistent with the readOnlyHint annotation. It adds context about the access requirement, but does not detail pagination behavior or error states. With annotations covering safety, a score of 3 is appropriate.
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, clear sentence with no wasted words. It could be slightly more structured, but it is efficient.
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?
With 6 parameters, no output schema, and only a readOnlyHint annotation, the description is too sparse. It omits pagination details, field options, and the accessToken requirement, leaving the agent with insufficient context for complex usage.
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 description adds no meaning beyond the input schema. With 0% schema description coverage and no parameter descriptions in the description, the agent receives no additional guidance for parameters like after, limit, or fields.
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 (List), resource (comments for a media object), and a condition (when authorized account has comment access). It distinguishes from sibling tools like meta_get_comment_replies, which handles replies.
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 mentions a condition for use (authorized account with comment access), but does not provide explicit when-not-to-use guidance or compare with siblings like meta_get_comment_replies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_list_facebook_pagesList Facebook PagesBRead-only
List Facebook Pages available to the Facebook Login token and include connected Instagram Business accounts when present.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No | ||
| fields | No | ||
| accessToken | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint: true, covering safety. The description adds that Instagram Business accounts are included when connected, but it does not disclose pagination behavior (despite pagination parameters), error cases, or what happens with invalid tokens. With annotations present, the description adds marginal but non-critical 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?
The description is a single sentence that is compact and front-loaded with the key action and resources. It contains no redundant information and is efficiently structured for quick comprehension.
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?
With 5 parameters, no output schema, and a simple listing purpose, the description omits important details such as return format, default values, pagination behavior, and error handling. It provides minimal context beyond the core functionality, making it incomplete for an agent to fully utilize the tool without guessing.
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 0%, meaning no parameter descriptions in the schema. The tool description does not explain any of the 5 parameters (after, limit, before, fields, accessToken). Despite the low coverage, the description fails to compensate, leaving the agent to guess parameter semantics from parameter names alone.
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 lists Facebook Pages available to the token and includes connected Instagram Business accounts. It uses a specific verb ('List') and resource ('Facebook Pages'), and distinguishes itself from sibling tools like meta_resolve_instagram_account or meta_get_account_info by explicitly linking Pages with Instagram accounts.
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 does not provide any guidance on when to use this tool versus alternatives or when not to use it. It lacks exclusions, prerequisites, or context-dependent recommendations, leaving the agent to infer usage solely from the output.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_list_mediaList Instagram MediaCRead-only
List media objects for the authorized Instagram professional account.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | ||
| limit | No | ||
| before | No | ||
| fields | No | ||
| userId | No | ||
| accessToken | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, indicating a safe read operation. The description adds that the account must be 'authorized' and 'professional', but does not disclose pagination behavior, rate limits, or what happens if the token is invalid. With annotations, this is adequate but not enhanced beyond the baseline.
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 sentence, which is concise but overly minimal. It front-loads the purpose but does not use the remaining space to add value. It is not verbose, but it is under-specified.
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 6 parameters (none required), no output schema, and 0% schema coverage, the description is insufficient. It lacks details on default behavior, pagination, field selection, and authentication requirements. A complete description would at least mention that media are returned in reverse chronological order and that fields can be specified.
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 0%, so the description must compensate by explaining parameters like 'after', 'limit', 'before', 'fields', 'userId', and 'accessToken'. It provides no parameter information at all, leaving the agent to infer purely from names. This is a critical gap.
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 ('List media objects') and the target ('authorized Instagram professional account'). It is a specific verb+resource combination, but it does not distinguish from sibling tools like meta_get_media (single media) or meta_get_top_media (filtered list).
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. The description does not mention ordering, filtering, or any prerequisites beyond authorization. Sibling tools exist for similar purposes, but no differentiation is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_raw_getMeta Raw GETARead-only
Run a read-only GET against an official Meta Instagram Graph relative path for exploratory endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Relative Graph path such as /me, /<IG_ID>/media, or /<MEDIA_ID>/insights. | |
| query | No | ||
| accessToken | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true. Description adds 'read-only GET' and 'exploratory endpoints' context but lacks additional behavioral details like rate limits or error handling.
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, 14 words, direct and efficient. No fluff.
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, missing details on response format, error behavior, or authentication. Does not explain that this is for development/testing or warn about potential issues with raw paths.
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 low (33% with only path described). Description does not explain the query or accessToken parameters beyond what the schema provides, missing opportunity to clarify their roles.
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 the verb (GET), resource (Meta Instagram Graph), and scope (exploratory endpoints). Distinguishes from sibling tools like meta_get_media which target specific endpoints.
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?
Description mentions 'exploratory endpoints' implying it's for experimentation, but does not explicitly state when to use this tool vs the many specific sibling tools, nor provide 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.
meta_refresh_tokenRefresh Instagram TokenC
Refresh the current long-lived Instagram token before it expires.
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | ||
| accessToken | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description fails to disclose side effects (e.g., token invalidation), return value, authentication requirements, or rate limits. The minimal description leaves critical behavioral gaps.
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 too short for the tool's complexity, omitting essential details. It is under-specified rather than concise.
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?
Lacks details on return values, error handling, prerequisites, and parameter behavior. A tool with side effects and undocumented parameters requires much richer description, especially without annotations or output schema.
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 two parameters with 0% description coverage and no explanation in the description. The agent cannot infer what `save` or `accessToken` mean or how to use them.
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 refreshes a long-lived Instagram token, distinguishing it from auth status or exchange tools. However, it could be more specific about what 'refresh' entails (e.g., extension of expiry).
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 vs. alternatives like `meta_exchange_code` or `meta_auth_status`. The phrase 'before it expires' implies periodic use, but no conditions or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_resolve_instagram_accountResolve Instagram AccountARead-only
Resolve and save an Instagram professional account id for later Graph API calls. Use pageId for Page-linked accounts or userId when Facebook Login granted direct Instagram access.
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | ||
| pageId | No | ||
| userId | No | ||
| accessToken | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds minimal behavioral context beyond that. The term 'save' might imply client-side storage, but it does not elaborate on any other behavioral traits such as potential side effects or error conditions.
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 concise, consisting of two well-structured sentences that front-load the core purpose and provide immediate guidance. Every sentence adds value without unnecessary detail.
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, the description should explain the return value, but it only mentions saving an ID without specifying the output format or structure. Additionally, some parameters are not fully explained, making the description adequate but not complete for a tool with 4 parameters.
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?
With 0% schema description coverage, the description adds meaning to the pageId and userId parameters by explaining their usage contexts. However, it does not explain the 'save' or 'accessToken' parameters, leaving two out of four parameters without additional semantics.
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 resolves and saves an Instagram professional account ID, with specific instructions for using pageId or userId based on the access method. It is a specific verb+resource combination and distinguishes itself from sibling tools by its unique purpose.
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 clear guidance on when to use pageId versus userId, indicating context for use. However, it does not explicitly state when not to use this tool or mention alternatives among the sibling tools, though the context makes it fairly clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_scope_presetsMeta Scope PresetsARead-only
Show supported Instagram OAuth scope presets for this MCP.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description's 'Show' is consistent. However, the description adds no additional behavioral context beyond what annotations provide (e.g., no mention of auth requirements or output format).
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?
A single front-loaded sentence with no unnecessary words. Every part earns its place, achieving maximum conciseness.
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's simplicity (no parameters, read-only), the description is largely complete. It could optionally elaborate on what scope presets are used for, but not required.
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% (no parameters). The description adds meaning by specifying the output (scope presets) without needing to explain individual parameters. Baseline for 0 parameters is 4.
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 'Show supported Instagram OAuth scope presets for this MCP' uses a specific verb (Show) and resource (scope presets), clearly distinguishing it from sibling tools which handle other OAuth and data retrieval tasks.
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 states the tool's function but does not provide explicit guidance on when to use it versus alternatives or exclude certain contexts. While the purpose is clear, there is no 'when not to use' or comparison with siblings.
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.
16 tool updates
v1.0.0- First observed
meta_auth_status - First observed
meta_build_login_url - First observed
meta_exchange_code - First observed
meta_get_account_info - First observed
meta_get_comment_replies - First observed
meta_get_media - First observed
meta_get_post_insights - First observed
meta_get_top_media - First observed
meta_get_user_insights - First observed
meta_list_comments - First observed
meta_list_facebook_pages - First observed
meta_list_media - First observed
meta_raw_get - First observed
meta_refresh_token - First observed
meta_resolve_instagram_account - First observed
meta_scope_presets
TDQS
Scored across 16 tools
Each tool has a clearly distinct purpose. Even tools like meta_list_comments and meta_get_comment_replies are differentiated by scope (all comments vs. replies to a specific comment).
All tools share the 'meta_' prefix and most follow a verb_noun pattern, but a few (meta_scope_presets, meta_auth_status) are noun phrases without a verb, slightly breaking consistency.
16 tools are well-scoped for an Instagram analytics MCP server, covering authentication, media, insights, and comments without being excessive or sparse.
The toolset covers core analytics workflows thoroughly, but lacks write operations (e.g., posting media or comments), which is acceptable for a read-oriented analytics server.
Maintenance
Related MCP Connectors
Instagram for AI agents: publish, read comments and DMs, insights, and engage from your account.
- MysocialOAuthio.mysocial
Social media MCP server: your Instagram, TikTok, YouTube, LinkedIn and Threads history for your AI.
MCP server for QPost — lets AI agents publish video and image posts to YouTube, TikTok, Instagram.
Your agent needs public Instagram data — a creator's posts and reels, what a hashtag is producing, what a video actually says. The official Graph API only sees accounts you already own, and needs app review to see those. **What you can ask for** • "Pull this creator's last 50 posts and reels with engagement counts." • "What is trending under #skincare this week, and which profiles keep appearing?" • "Transcribe this reel and tell me what the hook in the first three seconds is." • "Read the comments on this post and group the objections." • "Which reels use this song right now?" **How to use it** Point any MCP client at https://mcp.aisa.one/instagram/mcp and sign in with OAuth — there is no key to create or paste. 17 read tools: profiles (basic and full), a user's posts, reels and highlights, post and profile digests, post comments, reels search, trending reels, reels by song, hashtag and profile search, and media transcripts. **Why this rather than the source** Public profiles without owning the account, and no app review to sit through. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Size a creator's audience here, then ask the same agent what their brand's site traffic looks like or who to contact there — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/social/mcp for X plus Instagram, Reddit, Pinterest and YouTube; https://mcp.aisa.one/gtm/mcp for those plus Similarweb and Apollo.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceAn MCP server that integrates with Instagram's Graph API to enable AI-driven management of Instagram Business accounts. It provides tools for fetching profile data, publishing media, analyzing engagement metrics, and managing direct messages.186MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for organic Instagram analytics via the Meta Graph API, providing read-only tools for profiles, media, insights, audience, and optional publishing.GPL 3.0
- AlicenseNot gradedqualityCmaintenanceMCP server for Instagram Graph API integration, enabling AI applications to manage Instagram Business accounts: fetch profiles, media, insights, publish content, and handle DMs.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that enables AI agents to interact with Instagram DMs by managing sessions, sending messages, and configuring webhooks through the InstantGram API.1MIT