Social Analytics MCP Server
Provides tools for Facebook Page discovery, detailed page info, page-level and post-level insights, feed with engagement data, and access token validation via the Meta Graph API.
Provides tools for Instagram account discovery, profile insights, media engagement, stories, hashtag search, and content publishing limits via the Meta 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., "@Social Analytics MCP Serverget my Instagram account insights for last 7 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.
Social Analytics MCP Server
A Model Context Protocol (MCP) server for Instagram and Facebook analytics via the Meta Graph API.
Features
Account discovery and profile information
Account-level insights with demographic breakdowns
Media listing with engagement data
Per-post insights (images, videos, reels, carousels)
Stories retrieval
Hashtag search and media discovery
Content publishing rate limits
Mentioned/tagged media
Page discovery and detailed page info
Page-level insights (impressions, engagement, fans, views)
Post-level insights
Posts with inline metrics
Page feed with reactions/comments/shares
Known metrics reference
Access token validation
Shared
Pre-built analysis prompts for common workflows
Retry with exponential backoff on 429/5xx errors
Structured error handling across both platforms
Debug logging via
DEBUG=social-analytics-mcp
Related MCP server: facebook-mcp
Quick Start
Install and build
git clone <repository-url> cd social-analytics-mcp npm install npm run buildGet an access token from the Graph API Explorer with permissions:
Instagram:
instagram_basic,instagram_manage_insights,pages_read_engagementFacebook:
read_insights,pages_read_engagement
Add to your MCP client (see configuration below)
Configuration
Variable | Required | Default | Description |
| For Instagram | — | Facebook User Access Token with Instagram permissions |
| No | Auto-detected | Instagram Business Account ID |
| No |
| Instagram Graph API version |
| For Facebook | — | Facebook User/Page Access Token |
| No | Use discovery tool | Facebook Page ID |
| No |
| Facebook Graph API version |
| No | — | Set to |
You only need to configure access tokens for the platforms you want to use. Account and page IDs can be discovered using the built-in tools.
MCP Client Setup
Claude Desktop
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"social-analytics": {
"command": "node",
"args": ["/absolute/path/to/social-analytics-mcp/dist/index.js"],
"env": {
"INSTAGRAM_ACCESS_TOKEN": "your_token_here",
"FACEBOOK_ACCESS_TOKEN": "your_token_here"
}
}
}
}Claude Code
claude mcp add social-analytics node /absolute/path/to/social-analytics-mcp/dist/index.js \
-e INSTAGRAM_ACCESS_TOKEN=your_token_here \
-e FACEBOOK_ACCESS_TOKEN=your_token_hereAvailable Tools
Instagram Tools
Tool | Description | Required Params |
| List available Instagram Business accounts | — |
| Get account profile info | — |
| Get account-level analytics |
|
| List recent media posts | — |
| Get details for a specific post |
|
| Get insights for a specific post |
|
| Get recent stories | — |
| Search for a hashtag ID |
|
| Get media for a hashtag |
|
| Check publishing rate limits | — |
| Get media where account is tagged | — |
Facebook Tools
Tool | Description | Required Params |
| List accessible Facebook Pages | — |
| Get page profile information | — |
| Get page-level insights |
|
| Get insights for a specific post |
|
| List posts with inline metrics |
|
| Get page feed with engagement data | — |
| List supported metrics reference | — |
| Validate an access token |
|
Common Parameters
Most Instagram tools accept an optional account_id parameter. If not provided, the account is auto-detected from the INSTAGRAM_ACCOUNT_ID environment variable or discovered automatically if only one account exists.
Most Facebook tools accept an optional page_id parameter with similar auto-detection behavior via FACEBOOK_PAGE_ID.
Available Prompts
Prompt | Description |
| Comprehensive Instagram account analysis |
| Comprehensive Facebook Page analysis |
| Compare recent posts on either platform |
| Audience demographic breakdown |
| Interactive setup guide |
Programmatic Usage
import { InstagramClient, FacebookClient, createServer } from 'social-analytics-mcp';
// Use clients directly
const instagram = new InstagramClient({
accessToken: 'your_token',
accountId: 'optional_account_id',
});
const profile = await instagram.getUserProfile();
// Or create an MCP server programmatically
const server = createServer();Troubleshooting
"Access token is invalid"
Ensure your token has the required permissions
Short-lived tokens expire in 1 hour — generate a long-lived token
"No Instagram Business account found"
Your Instagram account must be a Business or Creator account
It must be connected to a Facebook Page
"Unsupported metric"
Some metrics are media-type specific (e.g.,
avg_time_watchedonly works for videos/reels)Use
facebook_list_known_metricsto see supported Facebook metrics
Rate limits
Instagram: 200 calls/hour per user token
The server automatically retries on 429/5xx with exponential backoff
Contributing
See CONTRIBUTING.md for development setup and guidelines.
License
MIT
Note: This is an unofficial tool and is not affiliated with Meta, Facebook, or Instagram.
Available Tools
19 toolsfacebook_get_page_detailsA
Get detailed information about a Facebook Page including name, category, follower count, about section, contact info, and more.
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | No | Facebook Page ID. Optional if set via FACEBOOK_PAGE_ID environment variable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. The verb 'Get' implies a read-only operation, and the description discloses what fields are returned. However, it does not mention authorization requirements, error behavior, or any side effects, which are relevant for a Facebook API tool.
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, front-loaded sentence that efficiently communicates the tool's purpose and the key fields returned. There is no redundant information or filler text.
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 low complexity (one optional parameter, no output schema), the description is largely adequate. It lists the expected return fields, but it could be improved by explicitly noting the single-object return format and handling of missing page IDs. The schema covers the optionality, so the description remains reasonably 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?
The input schema has 100% coverage for the single parameter 'page_id', so the schema already provides full meaning. The description does not add any additional parameter-related context, maintaining the baseline score as per the rubric.
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's action ('Get detailed information about a Facebook Page') and specifies the resource and the type of data returned. It distinguishes itself from siblings like facebook_get_page_insights by focusing on general page details rather than metrics.
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 usage when page details are needed but does not explicitly guide when to use this tool over alternatives like facebook_get_page_insights or facebook_list_pages. No exclusions or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_get_page_feedA
Get the Facebook Page feed with full post details including reactions, comments, and shares counts.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of posts to retrieve (default: 25) | |
| page_id | No | Facebook Page ID. Optional if set via environment variable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. 'Get' implies a read-only operation, but it does not disclose pagination behavior, authentication needs, or any side effects. The description adds minimal context beyond the obvious read nature.
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 unnecessary words. It effectively communicates the tool's purpose and return content in a concise manner.
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 and the schema covering all parameters, the description is mostly complete. It mentions the return content (reactions, comments, shares) which is helpful. However, it does not clarify how this differs from similar sibling tools or mention any default behavior, leaving minor gaps.
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% for both parameters (limit and page_id), so the baseline is 3. The description does not add any additional semantics beyond what the schema already provides, but it also does not need to compensate.
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), the resource (Facebook Page feed), and the specific scope ('full post details including reactions, comments, and shares counts'). This distinguishes it from sibling tools like facebook_get_page_insights or facebook_get_post_insights, making the purpose unambiguous.
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 clear context of what the tool does but does not explicitly mention when to use it versus alternatives like facebook_list_posts_with_insights. There is no exclusion or alternative guidance, so usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_get_page_insightsB
Fetch page-level insights for a Facebook Page. Common metrics: page_impressions, page_impressions_unique, page_engaged_users, page_post_engagements, page_views_total, page_fans.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Limit for number of insight values | |
| since | No | Start of date range: YYYY-MM-DD or UNIX timestamp | |
| until | No | End of date range: YYYY-MM-DD or UNIX timestamp | |
| period | No | Period to aggregate metrics | |
| metrics | Yes | List of page insight metric names (e.g., page_impressions, page_engaged_users) | |
| page_id | No | Facebook Page ID. Optional if set via environment variable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does not mention authentication requirements, rate limits, pagination behavior, return format, or potential errors, leaving significant transparency 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 extremely concise: two sentences, front-loaded with the core purpose, and includes a useful list of example metrics without any filler or redundant information.
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 6-parameter tool with no annotations and no output schema, this description is incomplete. It does not explain how parameters interact, how to handle pagination, what the response contains, or what edge cases exist, leaving the agent under-informed for successful 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 100%, so the baseline is 3. The description adds a list of common metric names, which provides useful examples but does not add additional semantics for parameters like since, until, period, or limit beyond what the schema already provides.
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 fetches page-level insights for a Facebook Page, using a specific verb and resource. The list of example metrics reinforces the purpose and helps distinguish it from sibling tools like facebook_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?
The description implies the tool is for page-level metrics but does not explicitly state when to use it versus alternatives such as facebook_get_post_insights. No exclusions or alternative references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_get_post_insightsB
Fetch insights for a specific Facebook Page post. Common metrics: post_impressions, post_impressions_unique, post_engaged_users.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Period to aggregate metrics | |
| metrics | Yes | List of post insight metric names | |
| post_id | Yes | Facebook Post ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It provides example metrics but does not disclose potential limitations (e.g., metric availability, time range, auth) or behavior on invalid parameters. For a read-only operation, this is acceptable but minimal.
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 purpose, no wasted words. Appropriate for a simple tool.
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 no output schema and no annotations, the description does not explain return format, pagination, or errors. Given the tool's relative simplicity and 100% schema coverage, this is a minimal but not fully complete description.
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 descriptions cover 100% of parameters. The description adds value by listing specific valid metric names ('post_impressions', 'post_impressions_unique', 'post_engaged_users'), helping the agent select appropriate values.
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 'Fetch insights for a specific Facebook Page post' with a specific verb and resource. It lists common metrics, but does not explicitly contrast with sibling tools like facebook_get_page_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 on when to use this vs alternatives; sibling tools exist for page-level insights, but the description does not mention them or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_list_known_metricsA
List all known/supported Facebook Page and Post metrics with their valid periods. Useful for discovering what metrics are available.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 accurately describes the action as 'list' (implying read-only) and adds the detail of 'valid periods,' but it doesn't explicitly confirm lack of side effects, authentication requirements, or output format. For a simple read-only listing tool, this is adequate but not rich.
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 the main action and scope, no redundant words.
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 is simple (no parameters, no output schema), and the description covers what metrics are listed and the extra detail about valid periods. It could mention output format, but the lack of complexity makes the description sufficient.
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 tool has zero parameters, so the description doesn't need to explain parameter syntax. The baseline for zero-parameter tools is 4; the description adds no parameter-related details but none are needed.
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 uses the specific verb 'list' and identifies the resource as 'all known/supported Facebook Page and Post metrics' with the added detail of 'valid periods.' This clearly differentiates it from sibling tools that retrieve actual metrics (e.g., facebook_get_page_insights) rather than enumerating available metrics.
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 notes it is 'useful for discovering what metrics are available,' which implies using it before querying insights. While it doesn't explicitly name alternatives, the context of sibling tools (which fetch metric values) provides clear differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_list_pagesA
List all Facebook Pages accessible with the current access token. Use this first to discover page IDs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden. It discloses the auth requirement (current access token) and the read-only nature ('List'), but omits details like pagination, error handling, or response format. This is sufficient for a zero-parameter list tool but not rich enough for a higher score.
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 concise sentences, both contributing value. The first front-loads the core purpose, the second gives usage guidance. No filler 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?
For a simple tool with no params and no output schema, the description adequately covers purpose and context. It hints at the output (page IDs) and auth scope. Minor gap: no mention of pagination or return format, but this is acceptable for a discovery list 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?
The tool has zero parameters, so the schema is trivially complete. The description adds useful context by explaining that the list is scoped by the access token, but there are no parameter-level semantics to elaborate. Baseline of 4 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 uses a specific verb ('List') and a clear resource ('Facebook Pages') with the scope ('accessible with the current access token'). It distinguishes itself from siblings like facebook_get_page_details (which fetches a specific page) and clarifies its role as a discovery tool for page IDs.
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?
Explicit guidance 'Use this first to discover page IDs' tells the agent when to invoke the tool. While it doesn't explicitly mention when-not to use alternatives, the sequential cue is strong and the sibling landscape makes alternatives clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_list_posts_with_insightsA
List Facebook Page posts including inline insight metrics. Combines post data with metrics in a single request.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of posts to retrieve (default: 25) | |
| page_id | No | Facebook Page ID. Optional if set via environment variable. | |
| post_metrics | Yes | List of post metrics to include inline |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only mentions the combined request behavior. It does not disclose permissions, pagination, rate limits, or return format details, leaving the agent without 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?
Two concise sentences that are front-loaded with the primary action. No redundant or filler content.
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 is a simple list operation, but with no annotations or output schema, the description leaves gaps about response structure and error conditions. However, the schema covers parameters and the purpose is clear.
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 covers 100% of parameters with descriptions, so baseline is 3. The description does not add additional meaning beyond mentioning 'inline insight metrics' which maps to post_metrics but adds no syntax or edge-case information.
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 Page posts with inline insights, using specific verb 'List' and resource 'Page posts'. It distinguishes from siblings like facebook_get_post_insights by noting the combined data in a single request.
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 usage for fetching posts with metrics together but does not explicitly mention alternatives or when not to use it. It lacks clear exclusions or comparison with sibling tools like facebook_get_page_feed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
facebook_validate_tokenA
Validate a Facebook access token by checking it against the /me endpoint. Returns token validity, user ID, and name.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Fields to request (default: id, name) | |
| access_token | Yes | The access token to validate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description discloses the underlying mechanism (calls /me endpoint) and the return values (validity, user ID, and name). It lacks details about failure behavior or auth prerequisites, but for a simple validation tool this is adequate.
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 exactly two sentences, front-loaded with the core purpose, and contains no redundant phrases or irrelevant details.
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 tool with two parameters and no output schema, the description sufficiently covers what it does and what it returns. It could mention edge cases or expected response format for perfect completeness, but the low complexity keeps the gap minor.
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 provides complete descriptions for both parameters (100% coverage). The tool description adds no additional parameter semantics, so the baseline of 3 applies.
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 uses a specific verb ('Validate') and resource ('Facebook access token') and explains the method ('checking it against the /me endpoint'). This clearly distinguishes it from sibling tools that list accounts or retrieve 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 clearly implies when to use this tool (to validate a Facebook access token). It does not explicitly mention exclusions or alternatives, but no sibling tool performs this function, so the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_get_account_insightsA
Get account-level insights and analytics for Instagram. Supports demographic breakdowns and time series data.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | Unix timestamp for start of date range | |
| until | No | Unix timestamp for end of date range | |
| period | Yes | Time period for insights | |
| metrics | Yes | Array of metrics to retrieve | |
| breakdown | No | Break down results by dimensions (only with metric_type=total_value) | |
| timeframe | No | Required for demographic metrics (engaged_audience_demographics, follower_demographics) | |
| account_id | No | Instagram account ID. Optional if set via environment variable. | |
| metric_type | Yes | How to aggregate results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses the read intent ('Get') and mentions capabilities ('demographic breakdowns and time series data'), but omits important constraints such as the timeframe being required for demographic metrics, breakdown only working with metric_type=total_value, and any authentication or rate-limit 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 two sentences that are front-loaded with the primary purpose, followed by a concise capability statement. Every word earns its place, with no repetition of schema details or filler.
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 8 parameters, no output schema, and no annotations, but the input schema is thoroughly documented. The description does not convey response format or prerequisites like the timeframe requirement for demographic metrics, though the schema covers parameter constraints. Adequate for a read-only insights tool, but gaps remain around usage context and expected returns.
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%, meaning all 8 parameters are already documented in the input schema. The description's reference to 'demographic breakdowns and time series data' loosely maps to the breakdown and metric_type/period parameters but adds no new meaning beyond what the schema provides, so the 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 uses a specific verb ('Get') and a clearly defined resource ('account-level insights and analytics for Instagram'). The 'account-level' qualifier distinguishes it from siblings like instagram_get_media_insights, and 'for Instagram' separates it from Facebook insights tools, making the purpose unmistakable.
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 is given about when to use this tool versus alternatives. The 'account-level' phrasing implies it is for account-wide analytics, but there is no direct comparison with instagram_get_media_insights or facebook_get_page_insights, leaving usage entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_get_content_publishing_limitA
Check the content publishing rate limit status for the Instagram account. Shows current quota usage and limits.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | Instagram account ID. Optional if set via environment variable. |
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 indicates a read-only status check ('Check', 'Shows') but does not disclose authentication requirements, edge-case behaviors, or data refresh semantics. The description is accurate but minimal.
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 two short sentences, front-loaded with the action verb, and contains no extraneous information. Every word contributes to conveying the tool's function.
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 is simple with no output schema, and the description provides a general overview of return content ('quota usage and limits') but lacks specifics on response format, possible error cases, or how to use the returned data. It is minimally adequate.
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 only parameter, account_id, is fully described in the schema as optional with an environment variable fallback. The tool description adds no additional parameter-level meaning, so the baseline 3 applies.
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 uses the specific verb 'Check' and clearly names the resource 'content publishing rate limit status'. It further explains that it shows 'current quota usage and limits', effectively distinguishing it from sibling tools focused on profiles, 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?
The purpose implies when to use the tool (to check publishing rate limits before posting), but it does not explicitly state usage context or contrast with alternatives. No exclusion conditions or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_get_hashtag_mediaA
Get top or recent media for a hashtag. Use instagram_get_hashtag_search first to get the hashtag ID.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Whether to get top or recent media (default: top_media) | |
| limit | No | Number of media items to retrieve (default: 25) | |
| account_id | No | Instagram account ID. Optional if set via environment variable. | |
| hashtag_id | Yes | The hashtag ID from instagram_get_hashtag_search |
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 mentions top vs. recent media ordering but omits details about pagination, rate limits, authentication requirements, or possible error conditions. This is a significant gap for a tool with no annotation support.
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 two concise sentences that front-load the primary purpose and include a critical prerequisite. No wasted words or redundant information.
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 and no annotations, making the description the sole source of context. It adequately explains the prerequisite and the type selection but lacks information about the return structure, pagination behavior, or error handling. Given the moderate complexity, this is minimally 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%, with all four parameters described. The description adds minimal parameter-specific value beyond noting that hashtag_id comes from the search tool, which is already in the schema description. The high schema coverage warrants 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 clearly states the tool's function: 'Get top or recent media for a hashtag.' It uses a specific verb and resource, and the hashtag scope distinguishes it from sibling tools like instagram_list_media or instagram_get_media_details.
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 explicitly instructs to use instagram_get_hashtag_search first to obtain the hashtag ID, providing a clear prerequisite and workflow. It does not explicitly exclude alternatives, but the context is sufficient for most usage cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_get_hashtag_searchA
Search for an Instagram hashtag ID by name. The returned ID can be used with instagram_get_hashtag_media to fetch top/recent media. Limited to 30 unique hashtag searches per 7-day rolling window per account.
| Name | Required | Description | Default |
|---|---|---|---|
| hashtag | Yes | Hashtag name to search for (without the # symbol) | |
| account_id | No | Instagram account ID. Optional if set via environment variable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosure. It discloses a key behavioral trait: 'Limited to 30 unique hashtag searches per 7-day rolling window per account.' It also clarifies that the output is an ID, which is useful. It does not mention auth requirements or error behavior, but the most critical constraints are 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 two sentences, with the primary purpose in the first sentence and supplementary usage context in the second. It is front-loaded with the most important information and contains no filler.
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 tool with two parameters and no output schema, the description fully covers the essential details: purpose, the return value (an ID), how to use that ID with a related tool, and a critical rate limit. No significant information gaps are present.
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%, and both parameters are already well-documented in the schema. The description adds no extra parameter meaning beyond what the schema provides, so the 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?
The description clearly states the tool's function: 'Search for an Instagram hashtag ID by name.' It uses a specific verb (search) and resource (hashtag ID), and explicitly distinguishes itself from the sibling instagram_get_hashtag_media by indicating the returned ID is for use with that tool.
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 context for when to use this tool: it is the first step to fetch media via instagram_get_hashtag_media. It also mentions a rate limit, which informs usage planning. It doesn't explicitly state when not to use it, but the complementary relationship is obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_get_media_detailsA
Get detailed information about a specific Instagram media post including caption, type, URL, and engagement counts.
| Name | Required | Description | Default |
|---|---|---|---|
| media_id | Yes | The ID of the media item |
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 only states 'Get' without disclosing required permissions, error behavior (e.g., if media_id is invalid), or whether engagement counts are complete or partial. This is a significant gap for a tool with no annotation support.
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, well-structured sentence that front-loads the action and includes the key details. No filler 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 the low complexity (one parameter, no output schema), the description adequately lists the returned fields. However, it lacks behavioral context like authentication or error scenarios, which is partially mitigated by the simple nature of the 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?
The input schema has 100% coverage for the single parameter media_id, providing a clear description. The tool description adds no additional meaning beyond restating 'specific media post', so the baseline of 3 applies.
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 'specific Instagram media post', and enumerates the information returned ('caption, type, URL, and engagement counts'). This distinguishes it from sibling tools like instagram_list_media (list) and instagram_get_media_insights (focused on metrics).
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 usage when needing detailed data for a single media post, but does not explicitly contrast it with alternatives like instagram_get_media_insights or instagram_list_media. There is no '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.
instagram_get_media_insightsA
Get insights for a specific Instagram media post. Note: Available metrics depend on media type. For Reels/Videos: use views, likes, comments, shares, reach, saved, total_interactions, replies, avg_time_watched, total_time_watched. For Images/Carousels: use likes, comments, reach, saved, shares, total_interactions. Story-specific metrics (replies, navigation) only work on story media.
| Name | Required | Description | Default |
|---|---|---|---|
| period | No | Time period (default: lifetime) | |
| metrics | Yes | Array of metrics to retrieve. Choose metrics appropriate for the media type. | |
| media_id | Yes | The ID of the media item |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the key behavioral trait that metrics depend on media type, listing valid metrics for each category and warning about story-specific limitations. This is exactly the kind of context agents need.
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 paragraph but well-structured, front-loading the purpose and using a note for the story-specific exception. It is slightly long but every sentence earns its place, especially the metric lists.
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 complexity of metric availability and no output schema, the description covers the main contextual gap: media-type-dependent metrics. It does not describe return format or error scenarios, but for a read-only insights tool this is acceptable.
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 significant value by explaining which metric values are appropriate for which media type, going beyond the schema's simple enum list. This helps the agent select valid metric combinations.
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 'Get insights for a specific Instagram media post', with a specific verb and resource. It distinguishes from sibling tools like get_account_insights (account-level) and get_media_details (details, not 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 explicit guidance on which metrics to use depending on media type (Reels/Videos vs Images/Carousels) and notes story-specific metric limitations. It does not explicitly mention when to use this tool vs alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_get_mentioned_mediaA
Get media where the Instagram account is mentioned or tagged by other users.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of media items to retrieve (default: 25) | |
| account_id | No | Instagram account ID. Optional if set via environment variable. |
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 only states the core purpose and does not disclose behavioral traits such as pagination, authentication requirements, rate limits, or what the returned media looks like. The word 'Get' implies a read-only operation, but no further detail is given.
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 that front-loads the key information. There is no filler or redundant content, and it is appropriately sized for the tool's simplicity.
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 no annotations and no output schema, the description is minimal but covers the core purpose. It clearly states what media is returned, and the schema adequately documents parameters. However, it lacks guidance on when to use this tool relative to siblings and any limitations or prerequisites, which would make it 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?
The description does not mention any parameters, but the input schema covers both `limit` and `account_id` with descriptions, giving 100% schema coverage. The baseline of 3 applies because the schema already provides the necessary parameter 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 action ('Get media') and the specific resource ('where the Instagram account is mentioned or tagged by other users'). This distinguishes it from sibling tools like instagram_list_media, which likely returns all media, and instagram_get_hashtag_media, which returns media by hashtag.
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 the use case: when you need media mentioning or tagging the account. However, it does not explicitly mention when to use this tool versus alternatives, nor does it provide exclusions or prerequisites. Given the number of sibling tools, more explicit guidance would be valuable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_get_profileA
Get Instagram business account profile information (username, followers, media count, etc.). If account_id is not provided, it will be auto-detected from the environment or discovered automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | Instagram account ID. Optional if set via INSTAGRAM_ACCOUNT_ID environment variable or if only one account exists. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the auto-detection/discovery behavior, which is valuable, but omits any mention of read-only nature, permission requirements, or error conditions. The word 'Get' implies read but is not explicit.
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 one concise sentence that front-loads the core purpose and adds a relevant behavioral note. It contains no fluff and earns every word.
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 tool with one optional parameter, the description covers the essential purpose and auto-detection behavior. It provides examples of returned data, which compensates for the lack of an output schema, though it doesn't detail error cases or exact return structure.
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 already fully describes account_id, including its optional status and auto-detection through env variables or single account. The description repeats this information without adding new semantic nuances, so it provides no 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's function: 'Get Instagram business account profile information' with concrete examples (username, followers, media count). This verb+resource formulation distinguishes it from sibling tools like insights or media detail tools.
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 when to use the tool (when you need profile info) but does not explicitly compare it to alternatives or state when not to use it. The auto-detection note provides context but not a formal usage guideline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_get_storiesA
Get recent Instagram Stories for the account. Stories are only available for 24 hours after posting. Returns story media items with basic fields.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | No | Instagram account ID. Optional if set via environment variable. |
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 24-hour availability constraint and states that it returns story media items, but it does not mention auth requirements, rate limits, or behavior when no stories exist.
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 three short sentences, each adding useful information without redundancy. It is front-loaded with the main purpose and keeps extra context minimal.
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 read tool with no output schema, the description provides a basic overview, but it is vague about exact return fields and does not address empty results or pagination. The 24-hour expiry note adds useful context, but gaps remain.
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 covers 100% of the single parameter with a clear description ('Instagram account ID. Optional if set via environment variable.'). The tool description does not add any additional parameter 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 'Get recent Instagram Stories for the account' with a specific verb and resource. It distinguishes from siblings like instagram_get_profile and instagram_list_media by focusing specifically on 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?
The description provides context that Stories are only available for 24 hours, implying a usage urgency, but it does not explicitly mention when to use this tool instead of siblings such as instagram_list_media or instagram_get_media_details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_list_accountsA
List all available Instagram Business accounts. Use this first to discover account IDs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It implies a read-only listing operation and clarifies the output's purpose (discovering account IDs), but it doesn't explicitly state side-effect-free behavior, authentication requirements, or potential pagination. It adds some value beyond the name, but leaves some 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?
Two short sentences, front-loaded with the action ('List'), and the second sentence provides actionable guidance without redundancy. Every word earns 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?
For a simple zero-parameter tool with no output schema, the description is mostly complete. It explains what it does and when to use it. It could explicitly mention that it returns account IDs, but that's implied by 'discover account IDs.' A minor gap, but overall sufficient.
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 tool has zero parameters, so the description doesn't need to explain parameter semantics. The schema is empty, and the description correctly avoids inventing parameters. Baseline 4 for no params.
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 'List all available Instagram Business accounts' with a specific verb and resource. It distinguishes itself from siblings by being the account-level discovery tool, and the added instruction 'Use this first to discover account IDs' reinforces its distinct role.
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 explicit usage guidance: 'Use this first to discover account IDs.' This tells the agent when to invoke it. It doesn't explicitly name alternatives, but given that no sibling tool lists accounts, the directive is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instagram_list_mediaB
Get a list of recent media posts from Instagram account. Returns posts with basic engagement data.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of media items to retrieve (default: 25, max: 100) | |
| account_id | No | Instagram account ID. Optional if set via environment variable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It adds 'Returns posts with basic engagement data,' which gives some insight into the response content, but omits specifics like return structure, pagination, rate limits, or authentication behavior. This is a read operation by nature, but the description doesn't explicitly disclose side-effect-free 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?
The description is two concise sentences that front-load the core purpose and then summarize the return type. There is no redundancy or irrelevant information; every sentence contributes to understanding the tool's function.
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 no output schema, the description should clarify the return format, but 'basic engagement data' is vague and doesn't specify fields or structure. It also lacks information on pagination, even though a list tool often needs it, and provides no usage guidance or alternatives. The tool is simple, but the description leaves important contextual gaps.
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% (both 'limit' and 'account_id' have descriptions), so the baseline is 3. The description does not add any additional meaning beyond the schema—it never mentions how parameters affect the request beyond the implied 'recent' and 'basic engagement' context.
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 uses a specific verb ('Get a list') and resource ('recent media posts from Instagram account'), making the primary function clear. It distinguishes from sibling tools like 'instagram_get_media_details' by explicitly focusing on listing rather than individual media details, though it doesn't name alternatives.
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 usage for retrieving recent media posts but provides no explicit 'when to use' vs alternatives. There are no exclusions or pointers to sibling tools for other needs, leaving the agent to infer appropriate contexts from the purpose alone.
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.
19 tool updates
v3.0.0- First observed
facebook_get_page_details - First observed
facebook_get_page_feed - First observed
facebook_get_page_insights - First observed
facebook_get_post_insights - First observed
facebook_list_known_metrics - First observed
facebook_list_pages - First observed
facebook_list_posts_with_insights - First observed
facebook_validate_token - First observed
instagram_get_account_insights - First observed
instagram_get_content_publishing_limit - First observed
instagram_get_hashtag_media - First observed
instagram_get_hashtag_search - First observed
instagram_get_media_details - First observed
instagram_get_media_insights - First observed
instagram_get_mentioned_media - First observed
instagram_get_profile - First observed
instagram_get_stories - First observed
instagram_list_accounts - First observed
instagram_list_media
TDQS
Scored across 19 tools
Most tools are clearly distinct by platform and resource type, but a few pairs like facebook_list_posts_with_insights and facebook_get_page_feed could be confused since both list posts with engagement data. Descriptions help differentiate by emphasizing inline insights vs. full post details.
Tools follow a consistent platform_verb_noun pattern using snake_case, with 'list' for collections and 'get' for individual items. Minor deviations like 'list_posts_with_insights' and 'validate_token' break the simple pattern but remain readable and predictable.
With 19 tools covering two distinct platforms (Instagram and Facebook) and multiple analytics levels, the count is slightly heavy but justifiable. Each tool serves a specific purpose, and the two-platform scope naturally expands the surface area.
The server covers the core analytics lifecycle: account/page discovery, profile details, insights at account/page/post/media levels, media/posts listing, stories, hashtags, publishing limits, and token validation. Minor gaps exist, such as no dedicated Facebook post detail-by-ID tool, but list endpoints provide the necessary IDs.
Maintenance
Related MCP Connectors
- ReelDropOAuthio.reeldrop
Schedule Instagram reels, manage comment-to-DM automations, and read analytics
Social media analytics, post insights, and competitor benchmarking for AI agents.
- mcpOAuthcom.instaseer
Instagram/TikTok/Facebook audience analysis: public post timelines, engagement, follower counts.
- BlotatoOAuthcom.blotato
Social media APIs for scheduling, analytics, and DM automation.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables Instagram engagement analysis using the unofficial Instagram Private API, including comment sentiment analysis, account comparison, demographic extraction, lead identification, and engagement reporting.36 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables analytics and management of Facebook Pages through the Meta Graph API, including posts, insights, audience, and publishing.GPL 3.0
- FlicenseNot gradedqualityBmaintenanceEnables publishing and managing organic Facebook Page and Instagram content directly through Meta's Graph API without paid third-party services.-
- AlicenseCqualityCmaintenanceEnables reading analytics and publishing content to Facebook Pages, Instagram, and Threads via Meta's Graph API, with a safety toggle for write operations.56MIT