Skip to main content
Glama

Instagram MCP Server

An HTTP MCP (Model Context Protocol) server for interacting with Instagram and Facebook APIs. Deploy this server to any cloud platform and access it remotely via HTTPS from any MCP client.

This server enables AI assistants to send messages, view posts, manage comments, and interact with your Instagram/Facebook accounts through a REST API.

Features

Messaging

  • Send text messages on Instagram and Facebook Messenger

  • Send media (images, videos, audio)

  • React to messages

  • Human agent tag support for extended messaging windows

Inbox / Conversations

  • List all conversations

  • Get messages from specific conversations

  • Find conversations by user ID

Profile

  • Get your Instagram business profile

  • Get your Facebook page info

  • Look up user profiles

Posts

  • View your Instagram posts and reels

  • View your Facebook page posts

  • Get detailed post information including carousel items

Comments

  • View comments on posts

  • Reply to comments

Content Creation

  • Post images to Instagram

  • Post videos/reels to Instagram

  • Post to Facebook (text, links, photos)

Architecture

This is an HTTP-based MCP server using Express.js:

  • Transport: HTTP/HTTPS (not stdio)

  • Deployment: Cloud platforms (Vercel, Railway, Render, DigitalOcean, etc.)

  • Access: Remote access from anywhere via HTTPS

  • Authentication: API key-based (MCP_API_KEY)

  • Protocol: RESTful HTTP endpoints following MCP specification

Why HTTP?

Remote Access - Access from any machine, not just locally ✅ Team Sharing - Multiple team members can use the same server ✅ Scalable - Deploy to cloud platforms with auto-scaling ✅ Secure - HTTPS encryption + API key authentication ✅ Simple - Just like any REST API you're used to

Endpoints

  • POST /mcp - MCP protocol endpoint (handles all tool calls)

  • GET /health - Health check endpoint

Installation

cd instagram-mcp-server
npm install
npm run build

Configuration

Create a .env file based on .env.example:

cp .env.example .env

Required environment variables:

Variable

Description

FB_PAGE_ID

Your Facebook Page ID

FB_PAGE_ACCESS_TOKEN

Page Access Token with required permissions

IG_ACCOUNT_ID

(Optional) Instagram Business Account ID

FB_API_VERSION

(Optional) Graph API version (default: v24.0)

Getting Your Access Token

  1. Go to Facebook Developer Portal

  2. Create or select your app

  3. Generate a Page Access Token with these permissions:

    • pages_messaging

    • pages_manage_metadata

    • pages_read_engagement

    • instagram_basic

    • instagram_manage_messages

    • instagram_manage_comments

    • instagram_content_publish

Running the Server

This is an HTTP MCP server that can be deployed anywhere and accessed remotely.

Local Development

# Development mode with auto-reload
npm run dev

# Production mode
npm run build
npm start

The server will start on http://localhost:3000 (or custom PORT from .env)

Endpoints:

  • POST /mcp - MCP protocol endpoint

  • GET /health - Health check endpoint

Test the Server

# Health check
curl http://localhost:3000/health

# List available tools
curl -X POST http://localhost:3000/mcp \
  -H "Authorization: Bearer my-secret-api-key-12345" \
  -H "Content-Type: application/json" \
  -d '{"method": "tools/list"}'

Connecting MCP Clients

Claude Code

Add the server to Claude Code using the CLI:

# For production (deployed server)
claude mcp add-json --scope user instagram '{
  "type": "http",
  "url": "https://your-domain.com/mcp",
  "headers": {
    "Authorization": "Bearer your-mcp-api-key"
  }
}'

# For local testing
claude mcp add-json --scope user instagram '{
  "type": "http",
  "url": "http://localhost:3000/mcp",
  "headers": {
    "Authorization": "Bearer my-secret-api-key-12345"
  }
}'

Other MCP Clients

Any MCP-compatible client can connect via HTTP:

const response = await fetch('https://your-domain.com/mcp', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer your-mcp-api-key',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    method: 'tools/call',
    params: {
      name: 'send_message',
      arguments: {
        platform: 'instagram',
        recipientId: '123456',
        text: 'Hello!'
      }
    }
  })
});

Available Tools

Messaging

  • send_message - Send text/media message to Instagram or Facebook

  • send_reaction - React to a message

Conversations

  • get_conversations - List inbox conversations

  • get_conversation_by_user - Find conversation by user ID

  • get_conversation_messages - Get messages from a conversation

Profiles

  • get_user_profile - Get a user's profile

  • get_my_instagram_profile - Get your IG profile

  • get_my_facebook_page - Get your FB page info

Posts

  • get_posts - List your posts

  • get_instagram_post_details - Get detailed post info

Comments

  • get_post_comments - Get comments on a post

  • reply_to_comment - Reply to a comment

Content Creation

  • post_to_instagram - Create Instagram post/reel

  • post_to_facebook - Create Facebook post

Available Resources

The server also exposes these resources for easy access:

  • instagram://profile - Your Instagram profile

  • facebook://page - Your Facebook page

  • instagram://inbox - Instagram DM inbox

  • facebook://inbox - Facebook Messenger inbox

  • instagram://posts - Recent Instagram posts

  • facebook://posts - Recent Facebook posts

Development

# Run in development mode (auto-reload)
npm run dev

# Build for production
npm run build

# Run production build
npm start

Note: A stdio version is also available for local-only use. Run with npm run dev:stdio or npm run start:stdio

Deployment

Deploy to Vercel

  1. Install Vercel CLI:

npm i -g vercel
  1. Create vercel.json:

{
  "version": 2,
  "builds": [{
    "src": "dist/index.js",
    "use": "@vercel/node"
  }],
  "routes": [{
    "src": "/(.*)",
    "dest": "/dist/index.js"
  }],
  "env": {
    "FB_PAGE_ID": "@fb_page_id",
    "IG_ACCOUNT_ID": "@ig_account_id",
    "FB_PAGE_ACCESS_TOKEN": "@fb_page_access_token",
    "FB_API_VERSION": "v24.0",
    "MCP_API_KEY": "@mcp_api_key"
  }
}
  1. Deploy:

npm run build
vercel --prod
  1. Set environment variables in Vercel dashboard

Deploy to Railway

  1. Create railway.toml:

[build]
builder = "NIXPACKS"
buildCommand = "npm install && npm run build"

[deploy]
startCommand = "npm start"
restartPolicyType = "ON_FAILURE"
restartPolicyMaxRetries = 10
  1. Deploy:

# Install Railway CLI
npm i -g @railway/cli

# Login and deploy
railway login
railway init
railway up
  1. Set environment variables in Railway dashboard

Deploy to Render

  1. Create account at https://render.com

  2. Create new Web Service

  3. Configure:

    • Build Command: npm install && npm run build

    • Start Command: npm start

    • Add environment variables

Deploy to DigitalOcean/VPS

# SSH into your server
ssh user@your-server

# Clone repo
git clone https://github.com/yourusername/instagram-mcp-server.git
cd instagram-mcp-server

# Install dependencies and build
npm install
npm run build

# Create .env file with your credentials
nano .env

# Run with PM2 for process management
npm install -g pm2
pm2 start npm --name "instagram-mcp" -- start
pm2 save
pm2 startup

Environment Variables for Production

Required:

  • FB_PAGE_ID - Your Facebook Page ID

  • FB_PAGE_ACCESS_TOKEN - Page Access Token

  • IG_ACCOUNT_ID - Instagram Business Account ID

  • FB_API_VERSION - Graph API version (default: v24.0)

  • MCP_API_KEY - Secret key for MCP endpoint authentication

  • PORT - Server port (default: 3000)

Security Notes

⚠️ IMPORTANT: When deploying publicly:

  1. Always set MCP_API_KEY - Never deploy without authentication

  2. Use HTTPS only - Encrypt all traffic

  3. Rotate tokens regularly - Update access tokens periodically

  4. Use environment variables - Never commit secrets to git

  5. Rate limiting - Consider adding rate limiting for production

License

MIT

Available Tools

14 tools
get_conversation_by_userC

Get conversation ID for a specific user

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYesPlatform
userIdYesThe user ID to find conversation for

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. It states 'Get conversation ID', implying a read-only operation, but doesn't disclose behavioral traits like whether it requires authentication, rate limits, error conditions, or what happens if no conversation exists. The description is minimal and lacks necessary context for safe invocation.

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's front-loaded with the core action and resource, making it easy to parse. Every word earns its place, achieving maximum clarity in minimal space.

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 (a lookup tool with 2 required parameters), no annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., a conversation ID string or an object), error handling, or usage context. For a tool with no structured support, more detail is needed to be 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%, with both parameters ('platform' and 'userId') documented in the schema. The description adds no additional meaning beyond what the schema provides, such as explaining the relationship between platform and user ID or format details. Baseline 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 the resource 'conversation ID', specifying it's for a 'specific user'. It distinguishes from siblings like 'get_conversation_messages' (which retrieves messages) and 'get_conversations' (which likely lists multiple conversations), but doesn't explicitly contrast them. The purpose is specific but lacks explicit sibling differentiation.

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 when to use it over 'get_conversations' for a list or 'get_conversation_messages' for content, nor does it specify prerequisites or exclusions. Usage is implied by the name but not explicitly stated.

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

get_conversation_messagesC

Get messages from a specific conversation

ParametersJSON Schema
NameRequiredDescriptionDefault
conversationIdYesThe conversation ID
limitNoNumber of messages to retrieve (default: 25)

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 the action ('Get messages') but lacks details on permissions, rate limits, pagination, or response format. For a read operation with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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 function without unnecessary words. It's appropriately sized and front-loaded, making it easy 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 lack of annotations and output schema, the description is incomplete for a tool with two parameters. It doesn't address behavioral aspects like error handling, message ordering, or what data is returned, leaving the agent with insufficient context for reliable 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%, with clear documentation for both parameters (conversationId and limit). The description adds no additional semantic context beyond implying retrieval from a conversation, which the schema already covers. This meets the baseline 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.

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 ('messages from a specific conversation'), making the purpose immediately understandable. However, it doesn't distinguish this tool from potential sibling tools like 'get_conversations' or 'send_message' that might also involve conversation data, missing full differentiation.

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. With siblings like 'get_conversations' (likely listing conversations) and 'send_message' (likely sending messages), there's no indication of context, prerequisites, or exclusions for selecting this specific retrieval tool.

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

get_conversationsC

Get list of conversations/inbox for Instagram or Facebook. Returns conversation IDs and participant info.

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYesPlatform to get conversations from
folderNoInbox folder (default: inbox)

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 returns 'conversation IDs and participant info,' which is helpful, but lacks details on permissions, rate limits, pagination, error handling, or whether it's read-only. For a tool with zero annotation coverage, this leaves significant gaps in understanding its operational behavior.

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 concise and front-loaded, consisting of a single sentence that directly states the tool's purpose and return value. There is no unnecessary verbiage, and it efficiently communicates core information. However, it could be slightly more structured by separating usage notes from the main purpose.

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 (2 parameters, no output schema, no annotations), the description is adequate but incomplete. It covers the basic purpose and return data, but lacks details on behavioral traits, error cases, and differentiation from siblings. Without annotations or an output schema, more context would improve completeness for effective agent 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?

The input schema has 100% description coverage, clearly documenting both parameters ('platform' and 'folder') with enums and defaults. The description adds no additional semantic context beyond what the schema provides, such as explaining folder differences or platform-specific nuances. Given the high schema coverage, 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 tool's purpose: 'Get list of conversations/inbox for Instagram or Facebook.' It specifies the verb ('Get'), resource ('conversations/inbox'), and target platforms. However, it doesn't explicitly differentiate from sibling tools like 'get_conversation_by_user' or 'get_conversation_messages', which reduces it from 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 Guidelines2/5

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

The description provides minimal guidance on when to use this tool. It mentions the platforms (Instagram/Facebook) and folder types, but offers no explicit advice on when to choose this over alternatives like 'get_conversation_by_user' or 'get_conversation_messages', nor does it specify prerequisites or exclusions. This leaves usage context largely implied.

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

get_instagram_post_detailsB

Get detailed information about a specific Instagram post including carousel children

ParametersJSON Schema
NameRequiredDescriptionDefault
postIdYesThe Instagram post/media ID

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 retrieves information (implying a read-only operation) and mentions 'carousel children' as included details, but it doesn't cover aspects like authentication requirements, rate limits, error handling, or the format of returned data. For a tool with no 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 detailed information') and adds valuable context ('including carousel children'), making every part of the sentence earn its place. No fluff or redundancy is present.

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 low complexity (1 parameter, no nested objects) and high schema coverage, the description is minimally adequate. However, with no annotations and no output schema, it fails to provide complete context—e.g., it doesn't explain what 'detailed information' includes beyond carousel children or how results are structured. This leaves room for improvement in guiding an agent 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, with the parameter 'postId' documented as 'The Instagram post/media ID.' The description doesn't add any semantic details beyond this, such as examples or constraints on the ID format. Since the schema does the heavy lifting, 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 detailed information about a specific Instagram post including carousel children.' It specifies the verb ('Get'), resource ('Instagram post'), and scope ('detailed information...including carousel children'), which distinguishes it from generic 'get' operations. However, it doesn't explicitly differentiate from sibling tools like 'get_posts' or 'get_post_comments', which slightly reduces clarity.

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 sibling tools like 'get_posts' (which might list posts) or 'get_post_comments' (which might focus on comments), nor does it specify prerequisites or exclusions. Without such context, an agent must infer usage based on 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_my_facebook_pageB

Get your Facebook page information

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?

With no annotations, the description carries the full burden of behavioral disclosure. It implies a read operation ('Get') but lacks details on permissions, rate limits, or response format. This is inadequate for a tool that likely involves API calls and user data.

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, clear sentence with no wasted words. It's front-loaded and efficiently conveys the core purpose, 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 lack of annotations and output schema, the description is incomplete. It doesn't explain what 'page information' includes (e.g., fields returned), authentication requirements, or error handling, leaving significant gaps for a tool interacting with a social media platform.

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 no parameter documentation is needed. The description doesn't add parameter details, but that's acceptable here, earning a baseline score for zero-parameter tools.

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 ('your Facebook page information'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_my_instagram_profile' beyond the platform name, missing specific scope details that would warrant 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 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), context (e.g., personal vs. business pages), or comparisons to siblings like 'get_user_profile', leaving the agent to infer usage.

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

get_my_instagram_profileB

Get your own Instagram business account profile

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves profile data, implying a read-only operation, but doesn't specify critical details like authentication needs, rate limits, error conditions, or what data is included in the profile. This leaves significant gaps in understanding how the tool behaves in practice.

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, clear sentence with no wasted words, making it highly efficient and front-loaded. It directly communicates the core functionality without unnecessary elaboration, which is ideal for a simple tool with no parameters.

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 simplicity (0 parameters, no output schema), the description is adequate for basic understanding but incomplete for practical use. It lacks details on authentication, return format, and error handling, which are essential for an agent to invoke it correctly in a real-world context, especially with no annotations to fill these gaps.

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 with 100% schema description coverage, so the schema fully documents the lack of inputs. The description adds value by clarifying that it retrieves 'your own' profile, which provides semantic context beyond the empty schema. However, it doesn't elaborate on implicit parameters like authentication, preventing a perfect 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 ('Get') and resource ('your own Instagram business account profile'), making the purpose immediately understandable. It distinguishes this tool from siblings like 'get_user_profile' by specifying 'your own' profile rather than a general user profile. However, it doesn't explicitly contrast with all siblings like 'get_instagram_post_details' or 'get_posts', keeping it from 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 implies usage context by specifying 'your own' profile, suggesting this tool is for retrieving the authenticated user's business account data rather than arbitrary profiles. However, it lacks explicit guidance on when to use this versus alternatives like 'get_user_profile' or prerequisites such as authentication requirements, leaving some ambiguity for the agent.

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

get_post_commentsC

Get comments on a post

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYesPlatform
postIdYesThe post ID to get comments for
limitNoNumber of comments to retrieve (default: 50)

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 for behavioral disclosure. 'Get comments on a post' implies a read operation but reveals nothing about permissions needed, rate limits, pagination behavior (beyond the limit parameter), error conditions, or what format the comments are returned in. This is inadequate for a tool with 3 parameters and no output 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 maximally concise - a single four-word phrase that communicates the core purpose without any wasted words. It's appropriately sized for a straightforward retrieval tool and front-loads the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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

Given 3 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't address behavioral aspects like authentication requirements, error handling, or return format. For a tool that retrieves social media comments (which can have complex structures and access controls), 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?

Schema description coverage is 100%, so the schema fully documents all parameters. The description adds no additional meaning about parameters beyond what's in the schema - it doesn't explain platform differences, postId format requirements, or how limit interacts with pagination. Baseline 3 is appropriate 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 'Get comments on a post' clearly states the action (get) and resource (comments on a post), making the tool's purpose immediately understandable. However, it doesn't distinguish itself from potential sibling tools like 'get_conversation_messages' or 'reply_to_comment' that might also involve comment retrieval in different contexts.

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. With siblings like 'get_conversation_messages' and 'reply_to_comment' that might handle comments differently, there's no indication of context, prerequisites, or exclusions for this specific comment retrieval tool.

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

get_postsC

Get posts from your Instagram account or Facebook page

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYesPlatform to get posts from
limitNoNumber of posts to retrieve (default: 25)

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 offers minimal behavioral context. It doesn't disclose whether this is a read-only operation (implied by 'Get'), authentication requirements, rate limits, pagination behavior, or what format the posts are returned in. For a tool with no annotations, this leaves significant gaps in understanding how it behaves.

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 wasted words. It's appropriately sized for a simple retrieval tool and gets straight to the point without unnecessary elaboration.

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 no annotations and no output schema, the description is incomplete. It doesn't explain what 'posts' means in this context (recent posts? all posts? specific types?), doesn't mention authentication requirements, and provides no information about return format or structure. For a social media API tool, this leaves too many questions unanswered.

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 thoroughly. The description doesn't add any meaning beyond what the schema provides about platform selection or limit defaults. It doesn't explain the implications of choosing different platforms or how the limit parameter affects results.

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 the resource 'posts', specifying the sources as 'your Instagram account or Facebook page'. It distinguishes from siblings like get_instagram_post_details (specific post details) and get_conversations (messages), but doesn't explicitly differentiate from get_my_facebook_page or get_my_instagram_profile which retrieve profile/page info rather than posts.

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 is provided. It doesn't mention when to choose get_posts over get_instagram_post_details for detailed post info, or when to use it versus get_my_facebook_page for page metadata. The description only states what it does, not when it's appropriate.

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

get_user_profileC

Get profile information for a user on Instagram or Facebook

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYesPlatform
userIdYesThe user ID to get profile for

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 for behavioral disclosure. While 'Get' implies a read operation, it doesn't specify whether this requires authentication, rate limits, privacy restrictions, or what format/profile fields are returned. For a social media API tool with zero annotation coverage, this leaves significant behavioral questions unanswered.

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 gets straight to the point with zero wasted words. It's appropriately sized for a simple retrieval tool and front-loads the essential information without unnecessary elaboration.

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 social media profile retrieval tool with no annotations and no output schema, the description is insufficient. It doesn't explain what profile information is returned, authentication requirements, platform-specific differences, or error conditions. Given the complexity of social media APIs and the lack of structured behavioral information, this description leaves too many practical questions unanswered.

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 mentions 'Instagram or Facebook' which aligns with the platform parameter's enum values, and 'user' which relates to userId. However, with 100% schema description coverage where both parameters are already documented in the schema, the description adds minimal value beyond what's already structured. The baseline of 3 is appropriate when 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 ('Get profile information') and target resource ('for a user on Instagram or Facebook'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'get_my_instagram_profile' or 'get_my_facebook_page', which appear to retrieve profile information for the authenticated user rather than a specified user ID.

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 like 'get_my_instagram_profile' or 'get_my_facebook_page'. It doesn't mention prerequisites, authentication requirements, or any context about when this tool is appropriate versus other profile-related tools in the sibling list.

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

post_to_facebookC

Create a new post on your Facebook page

ParametersJSON Schema
NameRequiredDescriptionDefault
messageNoPost text content
linkNoURL to share (optional)
photoUrlNoURL of photo to post (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 full burden but only states it creates a post without disclosing behavioral traits like required permissions, rate limits, whether it's idempotent, or what happens on failure. 'Create' implies a mutation, but no safety or operational details are given.

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

Conciseness5/5

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

The description is a single, clear sentence with zero waste—it directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to understand at a glance.

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 context on authentication needs, error handling, return values, or how it differs from siblings. Given the complexity and missing structured data, more detail is warranted.

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 parameters are fully documented in the schema. The description adds no additional meaning beyond implying a post can include text, links, or photos, which is already clear from parameter names. 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 ('Create a new post') and target resource ('on your Facebook page'), which distinguishes it from sibling tools like 'post_to_instagram' or 'get_posts'. However, it doesn't specify what type of post (text, link, photo) beyond what's implied by parameters, keeping it from 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 Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'post_to_instagram' or 'send_message', nor any prerequisites such as needing a Facebook page or authentication. The description only states what it does, not when or why to choose it.

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

post_to_instagramC

Create a new post on Instagram (image or video/reel)

ParametersJSON Schema
NameRequiredDescriptionDefault
captionNoPost caption
imageUrlNoURL of image to post (for image posts)
videoUrlNoURL of video to post (creates a Reel)
locationIdNoOptional location ID to tag

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states it creates posts. It lacks behavioral details such as authentication requirements, rate limits, whether posts are public/private, or what happens on success/failure. This is inadequate 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 a single, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to scan and understand 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 mutation tool with no annotations and no output schema, the description is incomplete. It doesn't cover behavioral aspects like authentication, error handling, or response format, leaving significant gaps for an AI 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?

Schema description coverage is 100%, so the schema fully documents all 4 parameters. The description adds minimal value by implying imageUrl vs. videoUrl usage for different post types, but doesn't provide additional semantics beyond what the schema already specifies.

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 ('Create a new post') and resource ('on Instagram'), specifying it can be for images or videos/reels. It distinguishes from siblings like post_to_facebook by platform, but doesn't explicitly differentiate from other Instagram-related tools (e.g., get_posts).

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 is provided. It doesn't mention prerequisites (e.g., authentication), when to choose image vs. video, or how it differs from other Instagram tools like get_posts or get_instagram_post_details.

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

reply_to_commentC

Reply to a comment on a post

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYesPlatform
commentIdYesThe comment ID to reply to
messageYesReply message text

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 the basic action. It doesn't disclose behavioral traits such as permission requirements, rate limits, whether replies are editable, or what happens on failure. For a mutation tool, this is a significant gap 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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to understand at a glance.

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 (a mutation with 3 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects, error handling, or return values, leaving critical gaps for agent invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are well-documented in the schema. The description adds no additional meaning beyond implying 'commentId' and 'message' usage, but doesn't explain parameter interactions or constraints, meeting 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 action ('Reply to') and target ('a comment on a post'), which is specific and unambiguous. However, it doesn't differentiate from sibling tools like 'send_message' or 'send_reaction' that might also involve communication, so it doesn't fully distinguish from alternatives.

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 comment IDs from 'get_post_comments'), exclusions, or comparisons to siblings like 'send_message' for different contexts, leaving usage unclear.

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

send_messageC

Send a message to a user on Instagram or Facebook Messenger. Can send text or media (image, video, audio).

ParametersJSON Schema
NameRequiredDescriptionDefault
platformYesPlatform to send message on
recipientIdYesThe user ID to send the message to
textNoText message content (optional if sending media)
mediaUrlNoURL of media to send (optional)
mediaTypeNoType of media being sent
isHumanAgentNoSet to true if message is from human agent (extends messaging window)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It states the tool sends messages but doesn't disclose behavioral traits like authentication requirements, rate limits, whether messages are reversible, delivery confirmation, or error handling. This is inadequate 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 front-loads the core purpose and key capabilities. Every word earns its place with no redundancy or unnecessary details.

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 behavioral aspects like permissions, side effects, response format, and error conditions, which are critical for proper usage.

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 6 parameters. The description adds minimal value by mentioning platforms and media types, which are already covered by the schema's enum and descriptions. 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 ('send a message'), target ('to a user'), platforms ('Instagram or Facebook Messenger'), and content types ('text or media'). It distinguishes from read-only sibling tools like get_conversation_messages, but doesn't explicitly differentiate from send_reaction or reply_to_comment.

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 send_reaction or reply_to_comment. It mentions platforms and content types but doesn't provide 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.

send_reactionC

Send a reaction to a message on Instagram

ParametersJSON Schema
NameRequiredDescriptionDefault
recipientIdYesThe user ID
messageIdYesThe message ID to react to
reactionYesReaction type (e.g., love, like, haha, wow, sad, angry)

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 the action ('send') but does not clarify permissions required, rate limits, whether the reaction is reversible, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap 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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is 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 tool's complexity (a mutation with 3 parameters), lack of annotations, and no output schema, the description is incomplete. It does not address behavioral aspects like error handling, response format, or usage constraints, which are critical for an agent to invoke the tool correctly in a real-world scenario.

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 three parameters with clear descriptions. The description adds no additional meaning beyond what the schema provides, such as examples of reaction usage or context for recipientId/messageId. Baseline 3 is appropriate when 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 ('send a reaction') and target resource ('to a message on Instagram'), which is specific and unambiguous. However, it does not explicitly differentiate from sibling tools like 'send_message' or 'reply_to_comment', which might involve similar messaging contexts but different actions.

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 (e.g., needing an existing message), exclusions, or comparisons to siblings like 'send_message' or 'reply_to_comment', leaving the agent to infer usage context solely from the tool name and parameters.

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. 14 tool updatesv1.0.0
    • First observedget_conversation_by_user
    • First observedget_conversation_messages
    • First observedget_conversations
    • First observedget_instagram_post_details
    • First observedget_my_facebook_page
    • First observedget_my_instagram_profile
    • First observedget_post_comments
    • First observedget_posts
    • First observedget_user_profile
    • First observedpost_to_facebook
    • First observedpost_to_instagram
    • First observedreply_to_comment
    • First observedsend_message
    • First observedsend_reaction

TDQS

B3.4/5.0
Disambiguation4/5

Most tools have distinct purposes targeting specific resources like conversations, posts, profiles, or actions like posting and messaging. However, get_conversations and get_conversation_by_user could cause confusion as both relate to conversations, though their descriptions clarify one lists conversations and the other gets a specific conversation ID.

Naming Consistency4/5

Tools follow a consistent verb_noun pattern (e.g., get_conversations, post_to_instagram) with clear actions like get, post, reply, and send. Minor deviations exist, such as get_conversation_by_user using 'by_user' instead of a more uniform structure like get_conversation_for_user, but overall naming is predictable and readable.

Tool Count5/5

With 14 tools, the count is well-scoped for managing Instagram and Facebook interactions, covering key areas like messaging, posting, and profile management. Each tool appears to serve a specific function without redundancy, making the set comprehensive yet manageable.

Completeness4/5

The toolset provides strong coverage for core social media operations, including CRUD-like actions for posts, messages, and profiles. Minor gaps exist, such as no tools for deleting posts or managing comments beyond replying, but agents can likely work around these with the available tools for basic workflows.

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

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/osborn1997/instagram-mcp-server'

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