Skip to main content
Glama

MSeeP.ai Security Assessment Badge

@mcpware/instagram-mcp

npm version npm downloads license GitHub stars GitHub forks

A Model Context Protocol (MCP) server that provides seamless integration with Instagram's Graph API, enabling AI applications to interact with Instagram Business accounts programmatically.

Features

šŸ”§ Tools (Model-controlled)

  • Get Profile Info: Retrieve Instagram business profile details

  • Get Media Posts: Fetch recent posts from an Instagram account

  • Get Media Insights: Retrieve engagement metrics for specific posts

  • Publish Media: Upload and publish images/videos to Instagram

  • Get Account Pages: List Facebook pages connected to the account

  • Get Conversations: List Instagram DM conversations (requires Advanced Access)

  • Get Conversation Messages: Read messages from specific conversations (requires Advanced Access)

  • Send DM: Reply to Instagram direct messages (requires Advanced Access)

šŸ“Š Resources (Application-controlled)

  • Profile Data: Access to profile information including follower counts, bio, etc.

  • Media Feed: Recent posts with engagement metrics

  • Insights Data: Detailed analytics for posts and account performance

šŸ’¬ Prompts (User-controlled)

  • Analyze Engagement: Pre-built prompt for analyzing post performance

  • Content Strategy: Template for generating content recommendations

  • Hashtag Analysis: Prompt for hashtag performance evaluation

Related MCP server: instagram-mcp

Prerequisites

  1. Instagram Business Account: Must be connected to a Facebook Page

  2. Facebook Developer Account: Required for API access

  3. Access Token: Long-lived access token with appropriate permissions

  4. Python 3.10+: For running the MCP server (required by MCP dependencies)

Required Instagram API Permissions

Standard Access (available immediately):

  • instagram_basic

  • instagram_content_publish

  • instagram_manage_insights

  • instagram_manage_comments

  • pages_show_list

  • pages_read_engagement

  • pages_manage_metadata

  • pages_read_user_content

  • business_management

Advanced Access (requires Meta App Review):

  • instagram_manage_messages - Required for Direct Messaging features

āš ļø Instagram DM Features: Reading and sending Instagram direct messages requires Advanced Access approval from Meta. See INSTAGRAM_DM_SETUP.md for the App Review process.

šŸ”‘ How to Get Instagram API Credentials

šŸ“– Quick Start: See AUTHENTICATION_GUIDE.md for a 5-minute setup guide!

This section provides a step-by-step guide to obtain the necessary credentials for the Instagram MCP server.

Step 1: Set Up Instagram Business Account

  1. Convert to Business Account (if not already):

    • Open Instagram app → Settings → Account → Switch to Professional Account

    • Choose "Business" → Select a category → Complete setup

  2. Connect to Facebook Page:

    • Go to Instagram Settings → Account → Linked Accounts → Facebook

    • Connect to an existing Facebook Page or create a new one

    • Important: The Facebook Page must be owned by you

Step 2: Create Facebook App

  1. Go to Facebook Developers:

  2. Create New App:

    • Click "Create App" → Choose "Business" → Click "Next"

    • Fill in app details:

      • App Name: Choose a descriptive name (e.g., "My Instagram MCP Server")

      • App Contact Email: Your email address

    • Click "Create App"

  3. Add Instagram Basic Display Product:

    • In your app dashboard, click "Add Product"

    • Find "Instagram Basic Display" → Click "Set Up"

  4. Configure Instagram Basic Display:

    • Go to Instagram Basic Display → Basic Display

    • Click "Create New App" in the Instagram App section

    • Accept the terms and create the app

Step 3: Get App Credentials

  1. Get App ID and Secret:

    • In your Facebook app dashboard, go to Settings → Basic

    • Copy your App ID and App Secret

    • Important: Keep the App Secret secure and never share it publicly

Step 4: Set Up Instagram Business API Access

  1. Add Instagram Graph API Product:

    • In your app dashboard, click "Add Product"

    • Find "Instagram Graph API" → Click "Set Up"

  2. Configure Permissions:

    • Go to Instagram Graph API → Permissions

    • Request the following permissions:

      • instagram_basic

      • instagram_content_publish

      • instagram_manage_insights

      • pages_show_list

      • pages_read_engagement

Step 5: Generate Access Token

  1. Go to Graph API Explorer:

  2. Configure Explorer:

    • Select your app from the dropdown

    • Click "Generate Access Token"

    • Select required permissions when prompted

  3. Get Page Access Token:

    • In the explorer, make a GET request to: /me/accounts

    • Find your Facebook Page in the response

    • Copy the access_token for your page

  4. Get Instagram Business Account ID:

    • Use the page access token to make a GET request to: /{page-id}?fields=instagram_business_account

    • Copy the Instagram Business Account ID from the response

  1. Set Up Facebook Login:

    • In your app dashboard, add "Facebook Login" product

    • Configure Valid OAuth Redirect URIs

  2. Implement OAuth Flow:

    # Example OAuth URL
    oauth_url = f"https://www.facebook.com/v19.0/dialog/oauth?client_id={app_id}&redirect_uri={redirect_uri}&scope=pages_show_list,instagram_basic,instagram_content_publish,instagram_manage_insights"
  3. Exchange Code for Token:

    # Exchange authorization code for access token
    token_url = f"https://graph.facebook.com/v19.0/oauth/access_token?client_id={app_id}&redirect_uri={redirect_uri}&client_secret={app_secret}&code={auth_code}"

Step 6: Get Long-Lived Access Token

Short-lived tokens expire in 1 hour. Convert to long-lived token (60 days):

curl -X GET "https://graph.facebook.com/v19.0/oauth/access_token?grant_type=fb_exchange_token&client_id={app_id}&client_secret={app_secret}&fb_exchange_token={short_lived_token}"

Step 7: Set Up Environment Variables

Create a .env file in your project root:

# Facebook App Credentials
FACEBOOK_APP_ID=your_app_id_here
FACEBOOK_APP_SECRET=your_app_secret_here

# Instagram Access Token (long-lived)
INSTAGRAM_ACCESS_TOKEN=your_long_lived_access_token_here

# Instagram Business Account ID
INSTAGRAM_BUSINESS_ACCOUNT_ID=your_instagram_business_account_id_here

# Optional: API Configuration
INSTAGRAM_API_VERSION=v19.0
RATE_LIMIT_REQUESTS_PER_HOUR=200
CACHE_ENABLED=true
LOG_LEVEL=INFO

Step 8: Test Your Setup

Run the validation script to test your credentials:

python scripts/setup.py

Or test manually:

import os
import requests

# Test access token
access_token = os.getenv('INSTAGRAM_ACCESS_TOKEN')
response = requests.get(f'https://graph.facebook.com/v19.0/me?access_token={access_token}')
print(response.json())

🚨 Important Security Notes

  1. Never commit credentials to version control

  2. Use environment variables or secure secret management

  3. Regularly rotate access tokens

  4. Monitor token expiration dates

  5. Use HTTPS only in production

  6. Implement proper error handling for expired tokens

šŸ”„ Token Refresh Strategy

Long-lived tokens expire after 60 days. Implement automatic refresh:

# Check token validity
def check_token_validity(access_token):
    url = f"https://graph.facebook.com/v19.0/me?access_token={access_token}"
    response = requests.get(url)
    return response.status_code == 200

# Refresh token before expiration
def refresh_long_lived_token(access_token, app_id, app_secret):
    url = f"https://graph.facebook.com/v19.0/oauth/access_token"
    params = {
        'grant_type': 'fb_exchange_token',
        'client_id': app_id,
        'client_secret': app_secret,
        'fb_exchange_token': access_token
    }
    response = requests.get(url, params=params)
    return response.json().get('access_token')

šŸ“‹ Troubleshooting Common Issues

Error: "Invalid OAuth access token"

  • Check if token has expired

  • Verify token has required permissions

  • Ensure Instagram account is connected to Facebook Page

Error: "Instagram account not found"

  • Verify Instagram Business Account ID is correct

  • Check if Instagram account is properly linked to Facebook Page

  • Ensure account is a Business account, not Personal

Error: "Insufficient permissions"

  • Review required permissions in Facebook App

  • Re-generate access token with correct scopes

  • Check if app is in Development vs Live mode

Rate Limiting Issues

  • Implement exponential backoff

  • Cache responses when possible

  • Monitor rate limit headers in API responses

Installation

  1. Clone the repository:

git clone <repository-url>
cd ig-mcp
  1. Install dependencies:

pip install -r requirements.txt
  1. Set up environment variables:

cp .env.example .env
# Edit .env with your Instagram API credentials
  1. Configure the MCP server:

# Edit config.json with your specific settings

Configuration

Environment Variables (.env)

INSTAGRAM_ACCESS_TOKEN=your_long_lived_access_token
FACEBOOK_APP_ID=your_facebook_app_id
FACEBOOK_APP_SECRET=your_facebook_app_secret
INSTAGRAM_BUSINESS_ACCOUNT_ID=your_instagram_business_account_id

MCP Client Configuration

Add this to your MCP client configuration (e.g., Claude Desktop):

{
  "mcpServers": {
    "instagram": {
      "command": "python",
      "args": ["/path/to/ig-mcp/src/instagram_mcp_server.py"],
      "env": {
        "INSTAGRAM_ACCESS_TOKEN": "your_access_token"
      }
    }
  }
}

Usage Examples

Using with Claude Desktop

  1. Get Profile Information:

Can you get my Instagram profile information?
  1. Analyze Recent Posts:

Show me my last 5 Instagram posts and their engagement metrics
  1. Publish Content:

Upload this image to my Instagram account with the caption "Beautiful sunset! #photography #nature"

Using with Python MCP Client

from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

# Connect to the Instagram MCP server
server_params = StdioServerParameters(
    command="python",
    args=["src/instagram_mcp_server.py"]
)

async with stdio_client(server_params) as (read, write):
    async with ClientSession(read, write) as session:
        await session.initialize()
        
        # Get profile information
        result = await session.call_tool("get_profile_info", {})
        print(result)

API Endpoints Covered

Profile Management

  • Get business profile information

  • Update profile details (future feature)

Media Management

  • Retrieve recent posts

  • Get specific media details

  • Upload and publish new content

  • Delete media (future feature)

Analytics & Insights

  • Post engagement metrics (likes, comments, shares)

  • Account insights (reach, impressions)

  • Hashtag performance analysis

Account Management

  • List connected Facebook pages

  • Switch between business accounts

Rate Limiting & Best Practices

The server implements intelligent rate limiting to comply with Instagram's API limits:

  • Profile requests: 200 calls per hour

  • Media requests: 200 calls per hour

  • Publishing: 25 posts per day

  • Insights: 200 calls per hour

Best Practices

  1. Cache frequently accessed data

  2. Use batch requests when possible

  3. Implement exponential backoff for retries

  4. Monitor rate limit headers

Error Handling

The server provides comprehensive error handling for common scenarios:

  • Authentication errors: Invalid or expired tokens

  • Permission errors: Missing required permissions

  • Rate limiting: Automatic retry with backoff

  • Network errors: Connection timeouts and retries

  • API errors: Instagram-specific error responses

Security Considerations

  1. Token Security: Store access tokens securely

  2. Environment Variables: Never commit tokens to version control

  3. HTTPS Only: All API calls use HTTPS

  4. Token Refresh: Implement automatic token refresh

  5. Audit Logging: Log all API interactions

Development

Project Structure

ig-mcp/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ instagram_mcp_server.py    # Main MCP server
│   ā”œā”€ā”€ instagram_client.py        # Instagram API client
│   ā”œā”€ā”€ models/                    # Data models
│   ā”œā”€ā”€ tools/                     # MCP tools implementation
│   ā”œā”€ā”€ resources/                 # MCP resources implementation
│   └── prompts/                   # MCP prompts implementation
ā”œā”€ā”€ tests/                         # Unit and integration tests
ā”œā”€ā”€ config/                        # Configuration files
ā”œā”€ā”€ requirements.txt               # Python dependencies
ā”œā”€ā”€ .env.example                   # Environment variables template
└── README.md                      # This file

Running Tests

# Run all tests
python -m pytest tests/

# Run with coverage
python -m pytest tests/ --cov=src/

# Run specific test file
python -m pytest tests/test_instagram_client.py

Contributing

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

Troubleshooting

Common Issues

  1. "Invalid Access Token"

    • Verify token is not expired

    • Check token permissions

    • Regenerate long-lived token

  2. "Rate Limit Exceeded"

    • Wait for rate limit reset

    • Implement request queuing

    • Use batch requests

  3. "Permission Denied"

    • Verify Instagram Business account setup

    • Check Facebook page connection

    • Review API permissions

Debug Mode

Enable debug logging by setting:

LOG_LEVEL=DEBUG

Troubleshooting

Problem

Cause

Fix

me/accounts returns empty []

IG not connected to a Facebook Page, or you're not Page admin

Do Step 1

Graph API Explorer says "No configuration available"

Permissions not added to app

Do Step 3

"Generate Access Token" is disabled

Need to select "Get User Access Token" first

Click "Get Token" dropdown

App name rejected (contains "IG", "Insta", etc.)

Meta blocks trademarked words

Use a generic name

Token expired

Short-lived tokens last 1 hour

Do Step 6 for 60-day token

(#10) To use Instagram Graph API...

IG account is Personal, not Business

Switch to Business/Creator in IG settings

Environment Variables

Variable

Required

Default

Description

INSTAGRAM_ACCESS_TOKEN

Yes

—

Meta long-lived access token

INSTAGRAM_ACCOUNT_ID

Yes

—

Instagram business account ID

INSTAGRAM_API_VERSION

No

v19.0

Graph API version

Tools (23)

Profile & Account

Tool

Description

get_profile_info

Get profile info (bio, followers, media count)

get_account_pages

List connected Facebook pages

get_account_insights

Account-level analytics (reach, profile views)

validate_access_token

Check if token is valid

Media & Publishing

Tool

Description

get_media_posts

Get recent posts with engagement metrics

get_media_insights

Detailed analytics for a specific post

publish_media

Publish image or video

publish_carousel

Publish carousel (2-10 images/videos)

publish_reel

Publish a Reel

get_content_publishing_limit

Check daily publishing quota

Comments

Tool

Description

get_comments

Get comments on a post

post_comment

Post a comment

reply_to_comment

Reply to a comment

delete_comment

Delete a comment

hide_comment

Hide/unhide a comment

Direct Messages

Tool

Description

get_conversations

List DM conversations

get_conversation_messages

Read messages in a conversation

send_dm

Send a direct message

Discovery & Content

Tool

Description

search_hashtag

Search for a hashtag ID

get_hashtag_media

Get top/recent media for a hashtag

get_stories

Get current active stories

get_mentions

Get posts you're tagged in

business_discovery

Look up another business account

Limitations

These are Instagram Graph API limitations, not this tool's:

  • Business/Creator accounts only — personal accounts are not supported

  • Long-lived tokens expire after 60 days — refresh before expiry

  • 200 API calls per hour rate limit

  • 25 posts per day publishing limit

  • DMs require Advanced Access — Meta app review required

  • Hashtag search: 30 unique hashtags per 7 days

Credits

TypeScript rewrite of jlbadano/ig-mcp (Python).

More from @mcpware

Project

What it does

Install

Claude Code Organizer

Visual dashboard for Claude Code memories, skills, MCP servers, hooks

npx @mcpware/claude-code-organizer

UI Annotator

Hover labels on any web page — AI references elements by name

npx @mcpware/ui-annotator

Pagecast

Record browser sessions as GIF or video via MCP

npx @mcpware/pagecast

LogoLoom

AI logo design → SVG → full brand kit export

npx @mcpware/logoloom

License

This project is licensed under the MIT License - see the LICENSE file for details.

Support

Acknowledgments

Available Tools

23 tools
business_discoveryB

Look up another public Business or Creator account's profile. Returns bio, follower count, media count, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_usernameYesInstagram username to look up (without @)

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions the tool returns 'bio, follower count, media count, etc.' which gives some output context, but doesn't address important behavioral aspects like rate limits, authentication requirements, error conditions, or whether this is a read-only operation (though implied by 'look up'). For a tool with zero annotation coverage, this is insufficient.

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 appropriately concise with two sentences: one stating the purpose and scope, another describing the return values. It's front-loaded with the core functionality. It could be slightly more structured by explicitly separating purpose from output description.

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?

Given the tool has no annotations, no output schema, and a simple single parameter, the description provides basic completeness by stating purpose and sample return values. However, for a profile lookup tool in a social media context, it should ideally mention authentication requirements, rate limits, or data freshness considerations to be fully 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 description coverage is 100%, so the schema already fully documents the single parameter. The description doesn't add any parameter-specific information beyond what's in the schema (which specifies 'Instagram username to look up (without @)'). This meets the baseline of 3 when schema does the heavy lifting.

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 the tool's purpose: 'Look up another public Business or Creator account's profile' with specific verb ('look up') and resource ('profile'), and distinguishes it from siblings by specifying it's for public accounts only. It loses a point because it doesn't explicitly differentiate from 'get_profile_info' which might be for the user's own profile.

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 context by specifying 'public Business or Creator account's profile', suggesting it's for external accounts rather than the authenticated user's own profile. However, it doesn't provide explicit guidance on when to use this versus 'get_profile_info' or other profile-related tools, nor does it mention any prerequisites or exclusions.

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

delete_commentA

Delete a comment on your Instagram post. Can only delete comments on your own media.

ParametersJSON Schema
NameRequiredDescriptionDefault
comment_idYesComment ID to delete

TDQS

A3.9/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. It discloses that the tool is destructive (deletion) and has an ownership constraint ('your own media'), which are key behavioral traits. However, it lacks details on permissions, error handling, or response format, leaving gaps in transparency.

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 front-loaded and concise with two sentences that directly convey purpose and constraints. Every word earns its place, with no redundant or vague language, making it highly efficient.

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?

Given the tool's complexity (destructive action with ownership constraints), no annotations, and no output schema, the description is adequate but incomplete. It covers the core action and limitation but misses details like return values or error cases, which are important for such a 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% description coverage, with 'comment_id' clearly documented. The description does not add any parameter-specific details beyond the schema, so it meets the baseline of 3 for high schema coverage without extra value.

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 specific action ('Delete a comment') and resource ('on your Instagram post'), and distinguishes it from siblings like 'hide_comment' or 'post_comment' by specifying deletion. It is precise and avoids tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context on when to use this tool ('Can only delete comments on your own media'), which implicitly guides usage. However, it does not explicitly mention when not to use it or name alternatives like 'hide_comment' for non-deletion actions, so it falls short of a perfect score.

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

get_account_insightsC

Get account-level insights and analytics for Instagram business account

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoInstagram business account ID (optional)
metricsNoSpecific metrics to retrieve
periodNoTime period for insightsday

TDQS

C2.9/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 states the tool retrieves insights and analytics, implying a read-only operation, but doesn't cover aspects like authentication requirements, rate limits, data freshness, or error conditions. This leaves significant gaps for an agent to understand how to use it effectively.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.

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 tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the insights include (e.g., numerical data, trends), how results are formatted, or any limitations (e.g., data availability periods). Given the complexity of analytics tools, more context is needed for an agent to use it correctly.

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 adds no parameter-specific information beyond what's already in the input schema, which has 100% coverage with clear descriptions and enums. The baseline score of 3 reflects that the schema adequately documents the parameters, so the description doesn't need to compensate but also doesn't add extra value.

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 the action ('Get') and resource ('account-level insights and analytics for Instagram business account'), making the purpose understandable. However, it doesn't differentiate this tool from sibling tools like 'get_media_insights' or 'get_profile_info', which also retrieve Instagram data but for different resources.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a business account), exclusions, or compare it to siblings like 'get_media_insights' for post-level data or 'business_discovery' for competitor insights.

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

get_account_pagesB

Get Facebook pages connected to the account and their Instagram business accounts

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/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 of behavioral disclosure. It states what data is retrieved but lacks critical details: whether this is a read-only operation, if it requires specific permissions, rate limits, pagination behavior, or error conditions. For a data retrieval tool with zero annotation coverage, this leaves significant gaps in understanding its 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 a single, efficient sentence that front-loads the core purpose without unnecessary words. It directly states what the tool does ('Get Facebook pages... and their Instagram business accounts'), earning its place by clearly defining scope. There is no redundancy or fluff.

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?

Given the complexity (retrieving connected social media accounts), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what the output includes (e.g., page IDs, names, Instagram account details), potential errors, or dependencies like authentication. For a tool in a server with many siblings, more context is needed to use it effectively.

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 0 parameters, and schema description coverage is 100% (since there are no parameters to describe). The description doesn't need to add parameter semantics, but it correctly implies no inputs are required. Baseline for 0 parameters is 4, as the description aligns with the empty schema.

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 the tool's purpose: retrieving Facebook pages and their connected Instagram business accounts. It uses specific verbs ('Get') and resources ('Facebook pages', 'Instagram business accounts'), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'get_profile_info' or 'business_discovery', which might also retrieve account-related data.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication state), exclusions, or compare it to siblings like 'get_profile_info' for general account data or 'business_discovery' for business-specific insights. Usage is implied only by the tool's name and description.

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

get_commentsB

Get comments on an Instagram post. Returns comment text, username, timestamp, and like count.

ParametersJSON Schema
NameRequiredDescriptionDefault
media_idYesInstagram media ID
limitNoNumber of comments (max 100)

TDQS

B3.1/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 of behavioral disclosure. It states the tool returns comment data (text, username, timestamp, like count), which is useful. However, it lacks critical details like whether this is a read-only operation, potential rate limits, authentication requirements, error handling, or pagination behavior for large comment sets. The description is insufficient 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, efficient sentence that front-loads the core purpose and key return values. Every word earns its place with no redundancy or fluff, making it easy to parse quickly.

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?

Given no annotations and no output schema, the description is minimally adequate but has clear gaps. It covers the basic purpose and return fields, which helps, but lacks behavioral context (e.g., safety, performance) and detailed usage guidance. For a simple read tool with full schema coverage, it meets the minimum viable threshold but doesn't fully compensate for missing structured data.

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% description coverage, clearly documenting both parameters (media_id and limit with constraints). The description adds no additional parameter semantics beyond what the schema provides, such as format examples for media_id or context for the limit default. Baseline score of 3 is appropriate since the schema does the heavy lifting.

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 the verb 'Get' and resource 'comments on an Instagram post', specifying what the tool does. It distinguishes from siblings like 'delete_comment' or 'post_comment' by focusing on retrieval. However, it doesn't explicitly differentiate from similar tools like 'get_mentions' or 'get_conversation_messages' beyond the Instagram post context.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication), compare to siblings like 'get_mentions' for comment retrieval in different contexts, or specify scenarios where this tool is preferred. Usage is implied by the action but not explicitly defined.

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

get_content_publishing_limitA

Check how many posts you can still publish today. Instagram limits content publishing per 24-hour period.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/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 of behavioral disclosure. It mentions Instagram's 24-hour limit, which is useful context, but it does not describe the return format (e.g., numeric count, percentage), error conditions, or authentication requirements, leaving significant gaps for a tool that likely involves rate-limiting checks.

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 with zero waste: the first sentence states the purpose, and the second provides essential context about Instagram's limits. It is front-loaded and appropriately sized 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?

Given the tool's complexity (simple query with 0 parameters) and lack of annotations and output schema, the description is minimally complete. It explains what the tool does and the platform constraint, but without annotations or output schema, it should ideally describe the return value or behavior more explicitly to fully guide an agent.

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 0 parameters, and schema description coverage is 100%, so there is no need for parameter details in the description. The description appropriately avoids discussing parameters, earning a baseline score of 4 for not adding unnecessary 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's purpose with a specific verb ('Check') and resource ('how many posts you can still publish today'), and it distinguishes itself from siblings by focusing on publishing limits rather than content retrieval, posting, or account management operations.

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 clear context for when to use this tool ('today' and 'per 24-hour period'), but it does not explicitly state when not to use it or name alternatives among the sibling tools (e.g., it doesn't contrast with publishing tools like publish_media).

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

get_conversation_messagesA

Get messages from a specific Instagram DM conversation. Requires instagram_manage_messages permission.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYesInstagram conversation ID
limitNoNumber of messages (max 100)

TDQS

A3.5/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 of behavioral disclosure. It mentions a permission requirement, which is useful context. However, it lacks details on rate limits, pagination, error handling, or what the output looks like (e.g., message format, ordering), leaving gaps in behavioral understanding.

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, efficient sentence with zero waste. It front-loads the core purpose and includes essential permission information, making it appropriately sized and well-structured for quick comprehension.

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?

Given no annotations and no output schema, the description is incomplete for a tool that retrieves data. It covers the basic action and permission but omits details on return values (e.g., message structure), error conditions, or limitations beyond the schema. This is adequate but has clear gaps for an agent to use it effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents both parameters. The description doesn't add any meaning beyond the schema, such as explaining how 'conversation_id' is obtained or typical use cases for 'limit'. Baseline 3 is appropriate when the schema handles parameter documentation.

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 the action ('Get messages') and resource ('from a specific Instagram DM conversation'), making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like 'get_conversations' (which likely lists conversations rather than messages) or 'send_dm' (which sends messages), missing full sibling distinction.

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 includes a prerequisite ('Requires instagram_manage_messages permission'), which provides some context for when to use it. However, it doesn't specify when to choose this tool over alternatives like 'get_conversations' or 'get_mentions', leaving usage 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.

get_conversationsA

Get Instagram DM conversations. Requires instagram_manage_messages permission.

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idNoFacebook page ID (optional, auto-detected)
limitNoNumber of conversations (max 100)

TDQS

A3.5/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 of behavioral disclosure. It mentions a permission requirement, which is useful context. However, it lacks details on rate limits, pagination, error handling, or what the return format looks like (e.g., list of conversations with metadata). This leaves gaps in understanding how the tool behaves beyond its basic function.

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 with zero waste: the first states the purpose, and the second adds a critical prerequisite. It's front-loaded and efficiently conveys essential information without unnecessary elaboration.

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?

Given the tool's moderate complexity (a read operation with parameters), no annotations, and no output schema, the description is partially complete. It covers the purpose and a key permission requirement but misses details on behavior (e.g., output structure, error cases) and doesn't leverage the lack of annotations to fully compensate. It's adequate but has clear 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?

The schema description coverage is 100%, so the input schema already fully documents the two parameters (page_id and limit). The description adds no additional parameter semantics beyond what's in the schema, such as explaining how auto-detection works for page_id or typical use cases for limit. This meets the baseline for high schema coverage.

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 the verb ('Get') and resource ('Instagram DM conversations'), making the purpose unambiguous. It doesn't explicitly differentiate from sibling tools like 'get_conversation_messages' or 'send_dm', but the focus on conversations rather than individual messages or sending is reasonably distinct.

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 prerequisite ('Requires instagram_manage_messages permission'), which gives some context for when to use it. However, it doesn't offer guidance on when to choose this tool over alternatives like 'get_conversation_messages' or 'send_dm', leaving usage somewhat 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.

get_hashtag_mediaA

Get top or recent media for a hashtag. Use search_hashtag first to get the hashtag ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashtag_idYesHashtag ID from search_hashtag
media_typeNoGet top or recent mediatop
limitNoNumber of posts (max 50)

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 of behavioral disclosure. It mentions the action ('Get top or recent media') but lacks details on permissions, rate limits, response format, or potential side effects. For a tool with no annotations, this leaves significant gaps in understanding its 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 sentences with zero waste: the first states the purpose, and the second provides a crucial usage guideline. It is appropriately sized and front-loaded, making it efficient and easy to parse.

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?

Given no annotations and no output schema, the description is incomplete for a tool that fetches media data. It covers the basic purpose and a prerequisite but lacks details on return values, error handling, or behavioral traits. However, the concise structure and clear purpose make it minimally adequate in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters. The description adds minimal value beyond the schema by implying the hashtag_id is obtained from 'search_hashtag,' but does not provide additional semantics for parameters like media_type or limit. This meets the baseline for high schema coverage.

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 the verb ('Get') and resource ('top or recent media for a hashtag'), making the purpose specific and understandable. However, it does not explicitly distinguish this tool from siblings like 'search_hashtag' or 'get_media_posts' beyond the prerequisite note, which slightly limits differentiation.

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 clear context by specifying to 'use search_hashtag first to get the hashtag ID,' which acts as a prerequisite and implies an alternative tool for initial lookup. It does not, however, explicitly state when to use this tool versus other media-fetching siblings like 'get_media_posts' or 'get_mentions,' missing full alternative guidance.

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

get_media_insightsC

Get detailed insights and analytics for a specific Instagram post

ParametersJSON Schema
NameRequiredDescriptionDefault
media_idYesInstagram media ID
metricsNoSpecific metrics to retrieve (optional, gets all if not specified). Note: video_views only works for video posts

TDQS

C2.9/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 mentions 'detailed insights and analytics,' which implies a read-only operation, but doesn't specify authentication needs, rate limits, error conditions, or what the output format might be. This leaves significant gaps for a tool that likely interacts with an external API.

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, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.

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?

Given the complexity of an analytics tool with no annotations and no output schema, the description is insufficient. It doesn't cover behavioral aspects like authentication, rate limits, or error handling, nor does it hint at the structure of the returned insights. For a tool that likely fetches data from a platform like Instagram, more context is needed.

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% description coverage, clearly documenting both parameters. The description adds no additional meaning beyond what the schema provides, such as explaining the 'media_id' format or clarifying 'metrics' usage. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.

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 the action ('Get detailed insights and analytics') and target resource ('for a specific Instagram post'), which is specific and unambiguous. However, it doesn't differentiate from sibling tools like 'get_account_insights' or 'get_media_posts', which could cover similar ground, so it doesn't reach the highest score.

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?

The description provides no guidance on when to use this tool versus alternatives, such as 'get_account_insights' for broader analytics or 'get_media_posts' for general post data. It lacks explicit context, prerequisites, or exclusions, leaving the agent to infer usage from the tool name alone.

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

get_media_postsC

Get recent media posts from Instagram account with engagement metrics

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoInstagram business account ID (optional)
limitNoNumber of posts to retrieve (max 100)
afterNoPagination cursor

TDQS

C2.9/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 mentions 'recent media posts' and 'engagement metrics,' but doesn't specify what 'recent' means (time window), what types of posts are included (e.g., images, videos, reels), or the format of engagement metrics (e.g., likes, comments, shares). It also omits critical details like rate limits, authentication requirements, or pagination behavior beyond the 'after' parameter in the schema.

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, efficient sentence that front-loads the core purpose. Every word earns its place: 'Get' (action), 'recent media posts' (resource), 'from Instagram account' (context), 'with engagement metrics' (key feature). There's no redundancy or fluff.

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?

Given the complexity of retrieving social media data with no annotations and no output schema, the description is incomplete. It lacks details on authentication needs, rate limits, error conditions, the structure of returned posts, or what 'engagement metrics' include. For a tool that likely interacts with an external API and returns rich data, this minimal description leaves significant gaps for an agent to operate effectively.

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% description coverage, providing clear documentation for all three parameters. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't clarify if 'account_id' defaults to the authenticated user's account). With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

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 the tool's purpose: 'Get recent media posts from Instagram account with engagement metrics.' It specifies the verb ('Get'), resource ('media posts'), and includes the valuable detail about engagement metrics. However, it doesn't explicitly differentiate from sibling tools like 'get_hashtag_media' or 'get_stories' that also retrieve media content.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an authenticated business account), nor does it compare to sibling tools like 'business_discovery' or 'get_hashtag_media' that might retrieve similar data. The agent must infer usage from the tool name and schema alone.

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

get_mentionsB

Get posts where your account has been tagged or @mentioned. Useful for tracking UGC.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of mentions (max 100)

TDQS

B3.2/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 of behavioral disclosure. It mentions the tool is 'useful for tracking UGC,' which hints at a read-only, monitoring purpose, but fails to specify critical behaviors like whether it requires authentication, rate limits, pagination, or the format of returned posts. This is inadequate 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 highly concise and front-loaded: two sentences that directly state the purpose and a brief use case. Every word earns its place without redundancy or fluff, making it easy for an agent to parse quickly.

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?

Given the tool's complexity (fetching mentions, likely from a social media API), lack of annotations, and no output schema, the description is incomplete. It doesn't cover authentication needs, rate limits, error handling, or the structure of returned posts. While concise, it fails to provide enough context for reliable agent use, especially compared to siblings with similar data retrieval functions.

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% description coverage, with the 'limit' parameter fully documented (type, range, default). The description adds no parameter-specific information beyond what the schema provides, such as how 'limit' affects results or any implicit defaults. Given the high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but doesn't detract either.

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 the tool's purpose: 'Get posts where your account has been tagged or @mentioned.' It specifies the verb ('Get') and resource ('posts'), and distinguishes itself from siblings like 'get_comments' or 'get_media_posts' by focusing on mentions. However, it doesn't explicitly differentiate from 'get_conversations' or 'get_comments' in terms of mention-specific filtering, which prevents a perfect score.

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 implied usage guidance with 'Useful for tracking UGC,' suggesting it's for monitoring user-generated content mentions. However, it lacks explicit when-to-use rules, alternatives (e.g., vs. 'get_comments' for general comments), or exclusions. This leaves gaps in distinguishing it from similar tools, resulting in a minimal viable score.

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

get_profile_infoC

Get Instagram business profile information including followers, bio, and account details

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoInstagram business account ID (optional, uses configured account if not provided)

TDQS

C2.9/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 of behavioral disclosure. It states this is a 'Get' operation, implying read-only behavior, but doesn't clarify permissions required, rate limits, error conditions, or what happens if no account_id is provided (beyond the schema's note). For a tool with zero annotation coverage, this lacks critical context about safety and operational constraints.

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, efficient sentence that front-loads the core purpose ('Get Instagram business profile information') and adds specific examples ('including followers, bio, and account details') without redundancy. Every word earns its place, making it highly concise and well-structured.

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?

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what the return values include (beyond vague examples like 'followers'), error handling, or authentication needs. For a tool with no structured support, the description should provide more operational context to be fully helpful to an agent.

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 adds no parameter-specific information beyond what the schema provides. The schema has 100% coverage with a clear description for the single optional parameter. Since the description doesn't elaborate on parameter usage (e.g., when to omit account_id), it meets the baseline of 3 where the schema does the heavy lifting.

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 the verb ('Get') and resource ('Instagram business profile information') with specific examples of what information is retrieved ('followers, bio, and account details'). It distinguishes from siblings like 'get_account_insights' or 'get_media_posts' by focusing on general profile data rather than analytics or content. However, it doesn't explicitly contrast with 'business_discovery', which might also retrieve profile info, so it's not a perfect 5.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a business account), exclusions (e.g., not for personal profiles), or compare to siblings like 'business_discovery' or 'get_account_pages'. The agent must infer usage from the tool name and description alone, which is minimal.

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

get_storiesC

Get current active stories on your Instagram account. Stories expire after 24 hours.

ParametersJSON Schema
NameRequiredDescriptionDefault
account_idNoInstagram account ID (optional)

TDQS

C2.9/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 states the tool retrieves 'current active stories' and notes expiration timing, but lacks critical details such as authentication requirements, rate limits, pagination behavior, error conditions, or what happens if account_id is omitted. For a read operation with zero annotation coverage, this leaves significant gaps.

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 appropriately concise with two sentences that each add value: the first states the core purpose, and the second provides important contextual information about story expiration. There's no wasted text, though it could be slightly more structured for clarity.

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 one optional parameter and no output schema, the description is minimally adequate. It covers what the tool does and adds useful context about story lifespan, but lacks completeness regarding behavioral aspects like authentication, response format, or error handling that would be helpful for an agent.

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 input schema fully documents the single optional parameter. The description doesn't add any parameter-specific information beyond what's in the schema, such as clarifying when account_id is needed or how it's obtained. Baseline 3 is appropriate when the schema handles parameter documentation.

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 the tool's purpose: 'Get current active stories on your Instagram account.' It specifies the verb ('Get'), resource ('stories'), and scope ('current active'), but doesn't explicitly differentiate from sibling tools like 'get_media_posts' or 'get_mentions' that might also retrieve Instagram content.

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?

The description provides no guidance on when to use this tool versus alternatives. It mentions that 'Stories expire after 24 hours,' which is contextual information but doesn't help the agent choose between this tool and other content-retrieval siblings like 'get_media_posts' or 'get_hashtag_media.'

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

hide_commentA

Hide or unhide a comment on your Instagram post. Hidden comments are not visible to the public.

ParametersJSON Schema
NameRequiredDescriptionDefault
comment_idYesComment ID to hide or unhide
hideNoTrue to hide, False to unhide

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 full burden for behavioral disclosure. It mentions the public visibility effect but omits critical details: whether this requires specific permissions, if it's reversible (though implied by 'unhide'), rate limits, or what happens when applied to already hidden/visible comments. The description is insufficient for a mutation tool with zero annotation coverage.

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

Conciseness5/5

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

The description is perfectly concise with two sentences that each add value: the first states the action and resource, the second explains the consequence. There's no wasted language or redundancy.

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 mutation tool with no annotations and no output schema, the description is minimally adequate. It covers the basic purpose and effect but lacks details on permissions, error conditions, return values, or integration with sibling tools. The high schema coverage helps, but behavioral gaps remain significant.

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 input schema fully documents both parameters. The description adds no additional parameter semantics beyond what's in the schema (e.g., no examples, format details, or edge cases). This meets the baseline for high schema coverage.

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 specific action ('hide or unhide'), the resource ('a comment on your Instagram post'), and the effect ('hidden comments are not visible to the public'). It distinguishes itself from sibling tools like 'delete_comment' by specifying a reversible visibility change rather than permanent removal.

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 managing comment visibility on Instagram posts, but provides no explicit guidance on when to use this tool versus alternatives like 'delete_comment' or 'reply_to_comment'. It also doesn't mention prerequisites such as authentication or ownership requirements.

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

post_commentA

Post a top-level comment on an Instagram post. Requires instagram_manage_comments permission.

ParametersJSON Schema
NameRequiredDescriptionDefault
media_idYesInstagram media ID
messageYesComment text (max 2200 characters)

TDQS

A3.9/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. It discloses the required permission ('instagram_manage_comments permission'), which is a key behavioral trait for authorization. However, it lacks details on rate limits, error handling, or what happens on success (e.g., comment ID returned), leaving gaps in 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?

The description is two sentences with zero waste: the first sentence states the purpose and scope, and the second adds critical permission information. It is front-loaded and appropriately sized for the tool's complexity.

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?

Given no annotations and no output schema, the description is incomplete for a mutation tool. It covers the purpose and permission requirement but lacks details on return values, error cases, or side effects, which are important for an agent to use it correctly in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters ('media_id' and 'message') with details like max length. The description does not add any additional semantic meaning beyond what the schema provides, such as examples or usage notes, meeting the baseline for high coverage.

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 ('Post a top-level comment') and resource ('on an Instagram post'), distinguishing it from sibling tools like 'reply_to_comment' (which is for replies) and 'delete_comment' (which removes comments). It specifies the scope ('top-level') to differentiate from nested comments.

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 states when to use it ('post a top-level comment') and includes a prerequisite ('Requires instagram_manage_comments permission'), but does not mention when not to use it or name specific alternatives like 'reply_to_comment' for replies, leaving some guidance implicit.

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

publish_mediaB

Upload and publish an image or video to Instagram with caption and optional location

ParametersJSON Schema
NameRequiredDescriptionDefault
image_urlNoURL of the image to publish (must be publicly accessible)
video_urlNoURL of the video to publish (must be publicly accessible)
captionNoCaption for the post (optional)
location_idNoFacebook location ID for geotagging (optional)

TDQS

B3.4/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 full burden. It mentions 'upload and publish' which implies a write/mutation operation, but doesn't disclose critical behavioral traits like authentication requirements, rate limits, whether the action is reversible, error conditions, or what happens on success. The description adds minimal context beyond the basic action.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose. Every word earns its place - 'Upload and publish' establishes the action, 'image or video to Instagram' specifies the resource and platform, and 'with caption and optional location' highlights key parameters without redundancy.

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 mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after publishing (success response, media ID returned, error handling), authentication requirements, or platform-specific constraints. The 100% schema coverage helps with parameters, but behavioral and output context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds marginal value by mentioning 'caption and optional location' which echoes the schema, but doesn't provide additional semantic context like format requirements beyond what's in the schema descriptions.

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 specific action ('Upload and publish'), the resource ('an image or video to Instagram'), and the key parameters ('with caption and optional location'). It distinguishes this tool from siblings like publish_carousel and publish_reel by specifying it's for single image/video posts, not carousels or reels.

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 context (publishing to Instagram) but doesn't explicitly state when to use this tool versus alternatives like publish_carousel or publish_reel. It mentions optional parameters but provides no guidance on prerequisites, timing, or constraints beyond what's in the schema.

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

publish_reelC

Publish a Reel (short-form video) to Instagram. Video must be publicly accessible URL, MP4 format.

ParametersJSON Schema
NameRequiredDescriptionDefault
video_urlYesURL of the video to publish as Reel
captionNoCaption for the Reel (optional)
share_to_feedNoAlso share to main feed (default: true)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states it's a publishing action. It doesn't disclose behavioral traits like required permissions, rate limits, whether it's idempotent, what happens on failure, or response format. The description is minimal and misses key operational details.

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 with zero waste: the first states the purpose, the second adds essential constraints. It's front-loaded and appropriately sized for the tool's complexity.

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 mutation tool with no annotations and no output schema, the description is incomplete. It lacks information about authentication needs, error handling, return values, or side effects. The technical constraints are noted, but overall context is insufficient for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents parameters. The description adds marginal value by implying 'video_url' must be publicly accessible and MP4 format, but doesn't provide additional semantics beyond what's in the schema. Baseline 3 is appropriate as the schema does the heavy lifting.

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 the action ('Publish') and resource ('Reel to Instagram') with specific format requirements ('MP4 format, publicly accessible URL'). It distinguishes from siblings like 'publish_carousel' and 'publish_media' by specifying 'Reel (short-form video)', though it doesn't explicitly contrast them.

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 tool versus alternatives like 'publish_media' or 'publish_carousel'. It mentions technical prerequisites ('publicly accessible URL, MP4 format') but lacks context about appropriate scenarios, prerequisites, or exclusions.

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

reply_to_commentA

Reply to a specific comment on an Instagram post. Requires instagram_manage_comments permission.

ParametersJSON Schema
NameRequiredDescriptionDefault
comment_idYesComment ID to reply to
messageYesReply text (max 2200 characters)

TDQS

A3.7/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 of behavioral disclosure. It mentions the permission requirement, which is useful context, but lacks details on other behavioral traits such as rate limits, error handling, or what happens upon success (e.g., whether the reply is public or private). This leaves gaps in transparency for a mutation 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, efficient sentence that directly states the tool's purpose and key requirement without any unnecessary words. It is front-loaded and appropriately sized, making it easy to understand quickly.

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?

Given the tool's complexity (a mutation with 2 parameters), no annotations, and no output schema, the description is somewhat complete but has gaps. It covers the action and permission need but lacks details on behavioral aspects like response format or error cases, making it adequate but not fully comprehensive for an agent's needs.

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 input schema already fully documents the parameters (comment_id and message). The description does not add any additional meaning or context beyond what the schema provides, such as examples or constraints not in the schema, resulting in a baseline score.

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 the action ('Reply to') and target ('a specific comment on an Instagram post'), making the purpose evident. However, it does not explicitly differentiate from sibling tools like 'post_comment' or 'reply_to_comment' (if present), which might handle similar actions, so it lacks sibling distinction for a perfect score.

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 clear context by specifying the required permission ('instagram_manage_comments'), which indicates when to use this tool based on access rights. It does not mention alternatives or exclusions, such as when not to use it versus other comment-related tools like 'post_comment', so it falls short of explicit guidance on alternatives.

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

search_hashtagA

Search for an Instagram hashtag and get its ID. Use the returned ID with get_hashtag_media.

ParametersJSON Schema
NameRequiredDescriptionDefault
hashtag_nameYesHashtag to search for (with or without #)

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 discloses the tool's purpose and output usage, but lacks details on behavioral traits such as rate limits, authentication needs, error handling, or whether it's a read-only operation (implied by 'search' but not explicit). The description adds some context but misses key operational aspects.

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, front-loaded with the core purpose, and every sentence earns its place by providing essential information (search action and ID usage) without any waste or redundancy.

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 low complexity (1 parameter, no output schema, no annotations), the description is mostly complete for its purpose. It covers what the tool does and how to use the output, but lacks details on return values (since no output schema) and behavioral context, which slightly reduces completeness for an agent's needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents the parameter 'hashtag_name' with its description. The description does not add any meaning beyond what the schema provides (e.g., no examples, formatting tips, or constraints), meeting the baseline for high coverage without extra value.

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 specific action ('Search for an Instagram hashtag') and the resource ('hashtag'), and it distinguishes from siblings by specifying the output ('get its ID') and its intended use ('Use the returned ID with get_hashtag_media'), which differentiates it from tools like 'business_discovery' or 'get_mentions' that handle other Instagram resources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to use this tool ('Search for an Instagram hashtag and get its ID') and provides a clear alternative or follow-up action ('Use the returned ID with get_hashtag_media'), which helps the agent understand the tool's role in a workflow without needing to infer from sibling names alone.

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

send_dmA

Send Instagram direct message. Requires instagram_manage_messages with Advanced Access. Can only reply within 24 hours.

ParametersJSON Schema
NameRequiredDescriptionDefault
recipient_idYesInstagram Scoped User ID (IGSID) of recipient
messageYesMessage text (max 1000 characters)

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 carries the full burden of behavioral disclosure. It effectively communicates critical operational constraints: the required permission scope and the 24-hour reply window, which are essential for correct usage. However, it lacks details on rate limits, error conditions, or response format.

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 and front-loaded with the core purpose, followed by essential constraints. Every sentence earns its place by providing critical information without any redundancy or fluff.

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 complexity (a mutation operation with no annotations and no output schema), the description is reasonably complete. It covers the action, prerequisites, and a key behavioral constraint. However, it could be more complete by mentioning potential error cases or the expected response format.

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 schema description coverage is 100%, with clear parameter descriptions in the schema. The tool description does not add any additional semantic context about the parameters beyond what is already documented in the schema, such as explaining the format of 'recipient_id' or providing examples for 'message'.

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 specific action ('Send Instagram direct message') and resource ('direct message'), distinguishing it from siblings like 'post_comment' or 'reply_to_comment' which involve public interactions rather than private messaging.

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 clear context about prerequisites ('Requires instagram_manage_messages with Advanced Access') and a temporal constraint ('Can only reply within 24 hours'), but does not explicitly state when to use this tool versus alternatives like 'get_conversation_messages' or 'get_conversations' for reading messages.

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

validate_access_tokenB

Validate the Instagram API access token and check permissions

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/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 of behavioral disclosure. It states the tool validates and checks permissions, but does not describe what happens during validation (e.g., returns token status, permissions list, or error messages), potential rate limits, or authentication requirements. This leaves significant gaps in understanding the tool's 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 a single, efficient sentence with no wasted words. It is appropriately sized and front-loaded, clearly stating the tool's purpose without unnecessary elaboration, earning a 5.

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?

Given the tool's complexity (validation and permission checking), lack of annotations, and no output schema, the description is incomplete. It does not explain what the tool returns (e.g., validation result, permissions list) or behavioral details, making it inadequate for an agent to understand full usage. This scores a 2.

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 input schema has 0 parameters with 100% coverage, so no parameters need documentation. The description does not add parameter details, but this is acceptable as there are no parameters to describe. Baseline for 0 parameters is 4, as the description does not need to compensate for missing schema information.

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 the tool's purpose: 'Validate the Instagram API access token and check permissions.' It specifies the verb (validate), resource (access token), and additional action (check permissions). However, it does not explicitly differentiate from sibling tools, as none appear to perform similar validation functions, so a 4 is appropriate.

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?

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as needing an access token, or context for usage, like before making other API calls. Without any usage instructions, it scores a 2.

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. Dates show when Glama detected each change.

  1. 23 tool updatesv1.0.1
    • First observedbusiness_discovery
    • First observeddelete_comment
    • First observedget_account_insights
    • First observedget_account_pages
    • First observedget_comments
    • First observedget_content_publishing_limit
    • First observedget_conversation_messages
    • First observedget_conversations
    • First observedget_hashtag_media
    • First observedget_media_insights
    • First observedget_media_posts
    • First observedget_mentions
    • First observedget_profile_info
    • First observedget_stories
    • First observedhide_comment
    • First observedpost_comment
    • First observedpublish_carousel
    • First observedpublish_media
    • First observedpublish_reel
    • First observedreply_to_comment
    • First observedsearch_hashtag
    • First observedsend_dm
    • First observedvalidate_access_token

TDQS

A3.5/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between get_profile_info and business_discovery (both retrieve profile data) and between get_media_posts and get_hashtag_media (both fetch media). The descriptions help clarify the differences, but an agent might occasionally confuse these pairs.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, such as get_comments, delete_comment, publish_media, and search_hashtag. This predictability makes it easy for agents to understand and navigate the toolset.

Tool Count3/5

With 23 tools, the count is borderline high for an Instagram-focused server, potentially feeling heavy. While it covers many features, it might overwhelm agents, suggesting some consolidation could improve usability without losing functionality.

Completeness5/5

The toolset provides comprehensive coverage for Instagram business and creator workflows, including profile management, content publishing (media, carousel, reel), engagement (comments, DMs), analytics (insights), and hashtag/search operations. No significant gaps are apparent for the domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    An MCP server that integrates with Instagram's Graph API to enable AI-driven management of Instagram Business accounts. It provides tools for fetching profile data, publishing media, analyzing engagement metrics, and managing direct messages.
    180
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server providing seamless integration with Instagram's Graph API for business account management, content publishing, and analytics.
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    An MCP server for the official Instagram Graph API, enabling read, publish, comment, and analytics across Instagram Business/Creator accounts.
    29
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for Instagram Graph API providing 25 tools for publishing photos, reels, carousels, and stories, managing comments, viewing insights, and searching hashtags.
    13
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mcpware/instagram-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server