Skip to main content
Glama
BilalTariq01

Social Analytics MCP Server

by BilalTariq01

Social Analytics MCP Server

A Model Context Protocol (MCP) server for Instagram and Facebook analytics via the Meta Graph API.

Features

Instagram

  • 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

Facebook

  • 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

  1. Install and build

    git clone <repository-url>
    cd social-analytics-mcp
    npm install
    npm run build
  2. Get an access token from the Graph API Explorer with permissions:

    • Instagram: instagram_basic, instagram_manage_insights, pages_read_engagement

    • Facebook: read_insights, pages_read_engagement

  3. Add to your MCP client (see configuration below)

Configuration

Variable

Required

Default

Description

INSTAGRAM_ACCESS_TOKEN

For Instagram

Facebook User Access Token with Instagram permissions

INSTAGRAM_ACCOUNT_ID

No

Auto-detected

Instagram Business Account ID

INSTAGRAM_API_VERSION

No

v23.0

Instagram Graph API version

FACEBOOK_ACCESS_TOKEN

For Facebook

Facebook User/Page Access Token

FACEBOOK_PAGE_ID

No

Use discovery tool

Facebook Page ID

FACEBOOK_API_VERSION

No

v22.0

Facebook Graph API version

DEBUG

No

Set to social-analytics-mcp for debug logs

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.json

  • Windows: %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_here

Available Tools

Instagram Tools

Tool

Description

Required Params

instagram_list_accounts

List available Instagram Business accounts

instagram_get_profile

Get account profile info

instagram_get_account_insights

Get account-level analytics

metrics, metric_type, period

instagram_list_media

List recent media posts

instagram_get_media_details

Get details for a specific post

media_id

instagram_get_media_insights

Get insights for a specific post

media_id, metrics

instagram_get_stories

Get recent stories

instagram_get_hashtag_search

Search for a hashtag ID

hashtag

instagram_get_hashtag_media

Get media for a hashtag

hashtag_id

instagram_get_content_publishing_limit

Check publishing rate limits

instagram_get_mentioned_media

Get media where account is tagged

Facebook Tools

Tool

Description

Required Params

facebook_list_pages

List accessible Facebook Pages

facebook_get_page_details

Get page profile information

facebook_get_page_insights

Get page-level insights

metrics

facebook_get_post_insights

Get insights for a specific post

post_id, metrics

facebook_list_posts_with_insights

List posts with inline metrics

post_metrics

facebook_get_page_feed

Get page feed with engagement data

facebook_list_known_metrics

List supported metrics reference

facebook_validate_token

Validate an access token

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

analyze_instagram_performance

Comprehensive Instagram account analysis

analyze_facebook_performance

Comprehensive Facebook Page analysis

compare_post_performance

Compare recent posts on either platform

get_audience_demographics

Audience demographic breakdown

setup_platform

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_watched only works for videos/reels)

  • Use facebook_list_known_metrics to 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 tools
facebook_get_page_detailsA

Get detailed information about a Facebook Page including name, category, follower count, about section, contact info, and more.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idNoFacebook Page ID. Optional if set via FACEBOOK_PAGE_ID environment variable.

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of posts to retrieve (default: 25)
page_idNoFacebook Page ID. Optional if set via environment variable.

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoLimit for number of insight values
sinceNoStart of date range: YYYY-MM-DD or UNIX timestamp
untilNoEnd of date range: YYYY-MM-DD or UNIX timestamp
periodNoPeriod to aggregate metrics
metricsYesList of page insight metric names (e.g., page_impressions, page_engaged_users)
page_idNoFacebook Page ID. Optional if set via environment variable.

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoPeriod to aggregate metrics
metricsYesList of post insight metric names
post_idYesFacebook Post ID

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of posts to retrieve (default: 25)
page_idNoFacebook Page ID. Optional if set via environment variable.
post_metricsYesList of post metrics to include inline

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoFields to request (default: id, name)
access_tokenYesThe access token to validate

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNoUnix timestamp for start of date range
untilNoUnix timestamp for end of date range
periodYesTime period for insights
metricsYesArray of metrics to retrieve
breakdownNoBreak down results by dimensions (only with metric_type=total_value)
timeframeNoRequired for demographic metrics (engaged_audience_demographics, follower_demographics)
account_idNoInstagram account ID. Optional if set via environment variable.
metric_typeYesHow to aggregate results

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoInstagram account ID. Optional if set via environment variable.

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoWhether to get top or recent media (default: top_media)
limitNoNumber of media items to retrieve (default: 25)
account_idNoInstagram account ID. Optional if set via environment variable.
hashtag_idYesThe hashtag ID from instagram_get_hashtag_search

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_media_detailsA

Get detailed information about a specific Instagram media post including caption, type, URL, and engagement counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
media_idYesThe ID of the media item

TDQS

A3.6/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoTime period (default: lifetime)
metricsYesArray of metrics to retrieve. Choose metrics appropriate for the media type.
media_idYesThe ID of the media item

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of media items to retrieve (default: 25)
account_idNoInstagram account ID. Optional if set via environment variable.

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoInstagram account ID. Optional if set via INSTAGRAM_ACCOUNT_ID environment variable or if only one account exists.

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoInstagram account ID. Optional if set via environment variable.

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of media items to retrieve (default: 25, max: 100)
account_idNoInstagram account ID. Optional if set via environment variable.

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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

With no output schema, the description 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 19 tool updatesv3.0.0
    • First observedfacebook_get_page_details
    • First observedfacebook_get_page_feed
    • First observedfacebook_get_page_insights
    • First observedfacebook_get_post_insights
    • First observedfacebook_list_known_metrics
    • First observedfacebook_list_pages
    • First observedfacebook_list_posts_with_insights
    • First observedfacebook_validate_token
    • First observedinstagram_get_account_insights
    • First observedinstagram_get_content_publishing_limit
    • First observedinstagram_get_hashtag_media
    • First observedinstagram_get_hashtag_search
    • First observedinstagram_get_media_details
    • First observedinstagram_get_media_insights
    • First observedinstagram_get_mentioned_media
    • First observedinstagram_get_profile
    • First observedinstagram_get_stories
    • First observedinstagram_list_accounts
    • First observedinstagram_list_media

TDQS

A3.7/5.0

Scored across 19 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables Instagram engagement analysis using the unofficial Instagram Private API, including comment sentiment analysis, account comparison, demographic extraction, lead identification, and engagement reporting.
    36 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables analytics and management of Facebook Pages through the Meta Graph API, including posts, insights, audience, and publishing.
    GPL 3.0
  • A
    license
    C
    quality
    C
    maintenance
    Enables reading analytics and publishing content to Facebook Pages, Instagram, and Threads via Meta's Graph API, with a safety toggle for write operations.
    56
    MIT