Skip to main content
Glama
pauloFroes

mcp-meta-inbox

by pauloFroes

mcp-meta-inbox

MCP server that wraps the Meta Messenger Platform, Instagram Messaging and comment moderation APIs (Graph API v25.0) as semantic tools for LLM agents.

Read your Page inbox, reply to students, and moderate comments on Facebook posts and Instagram media — from natural language.

Works with Claude Code, Codex, Claude Desktop, Cursor, VS Code, Windsurf, and any MCP-compatible client.

Companion to mcp-meta-marketing, which covers ads. They do not share a token — see Why not the Marketing API token.


Quick Start

claude mcp add meta-inbox -s user \
  -e META_PAGE_ACCESS_TOKEN=your-page-token \
  -e META_PAGE_ID=your-page-id \
  -- npx -y github:pauloFroes/mcp-meta-inbox

Then just ask in natural language:

Don't have a Page token yet? See How to get your Page Access Token below.

Related MCP server: facebook-pages-mcp

What you can do

Work the inbox:

"Who messaged the Page today and what did they ask?"
"Summarize the last 20 conversations and flag the ones still unanswered"
"Read thread t_1997631717587281 and draft a reply about the course schedule"
"Mark Sandro's conversation as seen"

Moderate comments:

"List the comments on my latest Instagram post"
"Which comments are questions nobody answered?"
"Reply to that comment asking about the price"
"Hide the spam comment on last week's Facebook post"
"Answer that public question privately instead"

Availability at a glance

Surface

Read

Write

Requirement

Messenger inbox

Page token

Facebook comments

Page token

Instagram comments

Page token

Instagram Direct

Advanced Access to instagram_manage_messages (App Review)

Instagram Direct is gated by Meta, not by this server. Without Advanced Access the API answers a /conversations?platform=instagram call with a ~27s timeout (error_subcode: 2534084) explaining that too many threads belong to people with no role on the app. Instagram comments are unaffected and work today. The tools are shipped anyway so they start working the moment App Review clears — and check_access tells you where you stand.

Available Tools

Diagnostics

Tool

Description

check_access

Report token type, expiry, messaging scopes, and which capabilities actually answer right now

Inbox

Tool

Description

list_conversations

List inbox threads with participants, unread count and last-message snippet

get_conversation

Read one thread in full — participants plus recent messages

list_messages

List messages inside a thread

get_message

Read a single message, including attachments

send_message

Send a DM as the Page (text or image)

send_sender_action

Mark seen, or toggle the typing indicator

Posts and comments

Tool

Description

list_posts

List Facebook Page posts or Instagram media

list_comments

List comments on a post/media, or replies to a comment

get_comment

Read one comment with its moderation flags

create_comment

Post a top-level comment (Facebook only)

reply_to_comment

Reply publicly as the Page (routes Facebook vs Instagram automatically)

update_comment

Edit a comment the Page authored (Facebook only)

hide_comment

Hide/unhide a comment — reversible moderation

delete_comment

Delete a comment permanently (irreversible)

private_reply

Answer a public comment with a private DM to its author

Platform asymmetries worth knowing

These are Meta's limits, surfaced as clear tool errors rather than opaque failures:

Operation

Facebook

Instagram

Reply to a comment

POST /{id}/comments

POST /{id}/replies

Edit your own comment

⛔ not supported by the API — delete and re-post

New top-level comment

⛔ replies only

Hide a comment

is_hidden

hide

Messaging windows

The two ways to DM someone have different clocks, and confusing them is how a stale inbox comes to look like a work queue right up until every send fails.

Clock starts at

Window

send_message, no tag

the person's last message

24 hours

send_message, tag: HUMAN_AGENT

the person's last message

7 days

private_reply

the comment

7 days, once per comment

The 24-hour limit is Meta's standard messaging window — "Businesses have up to 24 hours to respond to a user" (Messenger Platform policy). It is not a WhatsApp-only rule.

Pass tag only when it honestly describes the message: HUMAN_AGENT (a human answering the person's own question), ACCOUNT_UPDATE, CONFIRMED_EVENT_UPDATE, POST_PURCHASE_UPDATE. Sending off-purpose is a policy violation, and HUMAN_AGENT also needs the Human Agent feature approved for the app — without it Meta rejects the call.

Because private_reply is measured from the comment rather than from a message, it is usually the only live channel: a comment posted this morning is reachable for a week, while an inbox thread that went quiet yesterday is already closed.

Installation

You need two environment variables (a third is optional):

Variable

Required

Description

META_PAGE_ACCESS_TOKEN

yes

Page token issued to a person who administers the Page (how to get one)

META_PAGE_ID

yes

Numeric Page ID — Meta Business Suite → Page → About

META_IG_USER_ID

no

Instagram Business account ID. Auto-discovered from the Page when omitted

Claude Code

Three installation scopes are available:

Scope

Flag

Config file

Use case

local

-s local

.mcp.json

This project only (default)

project

-s project

.claude/mcp.json

Shared with team via git

user

-s user

~/.claude/mcp.json

All your projects

Quick setup (inline env vars):

claude mcp add meta-inbox -s user \
  -e META_PAGE_ACCESS_TOKEN=your-page-token \
  -e META_PAGE_ID=your-page-id \
  -- npx -y github:pauloFroes/mcp-meta-inbox

Persistent setup (.env file):

Add to your .mcp.json:

{
  "meta-inbox": {
    "command": "npx",
    "args": ["-y", "github:pauloFroes/mcp-meta-inbox"],
    "env": {
      "META_PAGE_ACCESS_TOKEN": "${META_PAGE_ACCESS_TOKEN}",
      "META_PAGE_ID": "${META_PAGE_ID}",
      "META_IG_USER_ID": "${META_IG_USER_ID}"
    }
  }
}

Then define the values in your .env file. See .env.example.

Codex

[mcp_servers.meta-inbox]
command = "npx"
args = ["-y", "github:pauloFroes/mcp-meta-inbox"]
env_vars = ["META_PAGE_ACCESS_TOKEN", "META_PAGE_ID", "META_IG_USER_ID"]

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "meta-inbox": {
      "command": "npx",
      "args": ["-y", "github:pauloFroes/mcp-meta-inbox"],
      "env": {
        "META_PAGE_ACCESS_TOKEN": "your-page-token",
        "META_PAGE_ID": "your-page-id"
      }
    }
  }
}

Cursor

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "meta-inbox": {
      "command": "npx",
      "args": ["-y", "github:pauloFroes/mcp-meta-inbox"],
      "env": {
        "META_PAGE_ACCESS_TOKEN": "your-page-token",
        "META_PAGE_ID": "your-page-id"
      }
    }
  }
}

VS Code

Add to .vscode/mcp.json in your project:

{
  "servers": {
    "meta-inbox": {
      "command": "npx",
      "args": ["-y", "github:pauloFroes/mcp-meta-inbox"],
      "env": {
        "META_PAGE_ACCESS_TOKEN": "your-page-token",
        "META_PAGE_ID": "your-page-id"
      }
    }
  }
}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "meta-inbox": {
      "command": "npx",
      "args": ["-y", "github:pauloFroes/mcp-meta-inbox"],
      "env": {
        "META_PAGE_ACCESS_TOKEN": "your-page-token",
        "META_PAGE_ID": "your-page-id"
      }
    }
  }
}

Why not the Marketing API token

If you already run mcp-meta-marketing, the obvious move is to reuse its META_ACCESS_TOKEN. It does not work here.

That token is normally a System User token. The Conversations API rejects System User tokens — but it does not say so. It answers:

{"error":{"message":"An unexpected error has occurred. Please retry your request later.",
          "type":"OAuthException","code":2,"is_transient":true}}

…which reads like a transient server fault and is identical across API versions. Retrying never helps. The inbox needs a Page token that was requested by a person with the MODERATE task on the Page.

This server refuses to start if it finds META_ACCESS_TOKEN but no META_PAGE_ACCESS_TOKEN, and prints how to fix it. Run check_access any time you're unsure which kind of token you're holding.

Instagram comments happen to work with either token. Everything else needs the Page token, so this server standardizes on it.

How to get your Page Access Token

Requires an existing Meta App with the Messenger and Instagram use cases added, and a Business Portfolio that owns the Page.

  1. Go to developers.facebook.com → your app → Use cases

  2. Open "Interact with customers on Messenger from Meta"Customize

  3. In the left menu, pick Messenger API settings

  4. Under 2. Generate access tokens, connect your Page if it isn't listed

  5. Click Generate on the Page row → tick the acknowledgement → Copy

The token is shown only once. It never expires (expires_at: 0 in the Access Token Debugger) unless you revoke it or lose the admin role.

Do not generate this from business.facebook.com → System Users — that produces a System User token, which the inbox rejects. See the section above.

Verify what you got:

curl -s "https://graph.facebook.com/v25.0/debug_token?input_token=$TOKEN&access_token=$TOKEN"

You want "type": "PAGE", "expires_at": 0, and a user_id that is your personal profile — not a System User.

Instagram Direct: requesting Advanced Access

Reading Instagram DMs from people who have no role on your app requires Advanced Access to instagram_manage_messages, which only App Review grants. In your app → Use cases → the Instagram or Messenger use case → Permissions and features → the permission row → ActionsAdd to app review. Expect to supply a working prototype and a screencast.

Nothing else in this server depends on it.

Safety notes

Six tools write to the outside world. send_message and private_reply message a real person; create_comment, reply_to_comment and update_comment publish publicly under the Page's name; delete_comment is irreversible. They are annotated (readOnlyHint / destructiveHint) so MCP clients can gate them, but you should still confirm the recipient and the exact text with a human before firing them.

hide_comment is the reversible alternative to delete_comment for moderation.

License

MIT

Available Tools

16 tools
check_accessCheck AccessA
Read-only

Diagnose the configured token: its type, whether it never expires, which messaging scopes it carries, and which of the four capabilities (Messenger inbox, Instagram Direct, Facebook comments, Instagram comments) actually answer right now. Run this first when any other tool fails — it separates a wrong token type from a missing Advanced Access grant.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds value by detailing what is diagnosed (token type, expiry, scopes, four capabilities). No contradictions.

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, each earning its place. First sentence defines diagnostics, second gives usage context. No 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?

For a 0-parameter diagnostic tool with no output schema, the description adequately covers purpose and usage. It could mention the output format or how to interpret results, but the stated purpose is sufficient.

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

Parameters4/5

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

No parameters in input schema, so baseline 4 per rubric. Description does not need to add parameter info; it focuses on tool behavior.

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 diagnoses the configured token, enumerating specific attributes (type, expiry, scopes, capabilities). This distinguishes it from sibling tools like get_conversation or send_message, which are for conversation or messaging actions.

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?

Explicit guidance: 'Run this first when any other tool fails' and explains it separates token type issues from Advanced Access grants. No alternatives listed, but the context is clear for when to use.

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

create_commentCreate CommentA

Post a new top-level comment on your own Facebook post. This publishes publicly under the Page's name — confirm the text with a human first. Instagram does not allow creating top-level comments via the API; use reply_to_comment there.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesComment text.
object_idYesFacebook post ID to comment on.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations provide readOnlyHint=false, destructiveHint=false, etc. The description adds important context: the comment publishes publicly under the Page's name and requires human confirmation. It also discloses the Instagram limitation. This adds value beyond annotations, though it could mention rate limits or auth requirements.

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

Conciseness5/5

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

Two concise sentences that front-load the core purpose and then add critical usage and exclusion details. Every sentence contributes meaningfully with no redundancy.

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

Completeness5/5

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

Given only two simple parameters and no output schema, the description covers purpose, behavioral implications, platform restrictions, and safety guidance. It is fully sufficient for an agent to decide when and how to invoke this tool correctly.

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

Parameters4/5

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

Schema coverage is 100% with clear descriptions for both parameters. The description adds context that object_id refers to a Facebook post and message is the comment text. While it doesn't add new parameter details beyond schema, the usage context ('own Facebook post') enriches understanding.

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 new top-level comment') and the specific resource ('your own Facebook post'). It uniquely distinguishes from sibling tools like reply_to_comment by specifying top-level versus reply, and notes the Instagram restriction.

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?

Explicitly tells when to use (on own Facebook post) and when not to (Instagram does not allow top-level comments). Includes a safety guideline to confirm text with a human first, providing clear context for appropriate usage.

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

delete_commentDelete CommentA
DestructiveIdempotent

Permanently delete a comment. IRREVERSIBLE — the comment cannot be restored. Confirm with a human before calling. Prefer hide_comment when the intent is moderation rather than removal.

ParametersJSON Schema
NameRequiredDescriptionDefault
comment_idYesComment ID to delete.

TDQS

A4.7/5.0
Behavior5/5

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

Discloses irreversibility ('IRREVERSIBLE — cannot be restored') which extends the destructiveHint annotation. No contradiction.

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

Conciseness5/5

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

Three sentences, each essential: purpose, warning, alternative. No fluff.

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

Completeness5/5

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

For a simple tool with one parameter and rich annotations, the description covers purpose, behavior, and alternatives completely.

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?

Only one parameter (comment_id) with 100% schema coverage. Description adds 'to delete' but schema already defines it adequately. No additional syntax or constraints added.

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?

Clear verb+resource (permanently delete a comment). Distinguishes from sibling hide_comment by specifying an alternative use case.

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?

Explicitly states when to use this tool (delete) vs hide_comment (moderation). Requires human confirmation before calling.

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

get_commentGet CommentA
Read-only

Read a single comment by ID, with its author, timestamp and moderation flags (can_hide / can_remove on Facebook, hidden on Instagram). Call this before hiding or deleting so the decision is made on the real text.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoComma-separated fields. Platform-specific default.
platformNoWhich platform the ID belongs to. Leave unset to auto-detect from the ID shape: Facebook IDs are compound ("{page}_{object}"), Instagram IDs are a flat run of digits.
comment_idYesComment ID.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows it's safe. The description adds value by detailing the returned data (author, timestamp, moderation flags) and noting platform-specific differences in flags (can_hide/can_remove vs. hidden). No contradictions.

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

Conciseness5/5

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

Two sentences, each earning its place: first states the core action and returned data, second provides critical usage guidance. No filler 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?

No output schema exists, but the description compensates by naming specific return fields (author, timestamp, moderation flags). However, it omits any mention of error states (e.g., comment not found) or whether additional fields are returned. Still adequate for a simple read 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?

Schema description coverage is 100%, so each parameter is already documented in the schema. The tool description does not add further meaning beyond the schema; it merely references the auto-detection behavior already described in the platform parameter's schema description. Thus baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Explicitly states it reads a single comment by ID and returns author, timestamp, and moderation flags. Clearly distinguishes from sibling tools like list_comments, hide_comment, and delete_comment by specifying it's the read-before-modification step.

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?

Provides explicit guidance: 'Call this before hiding or deleting so the decision is made on the real text.' Also explains platform auto-detection behavior, giving clear context on when to use and what not to skip.

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

get_conversationGet ConversationA
Read-only

Read one thread in full: participants plus the most recent messages with sender, body text, attachments and timestamps. This is the tool to call before replying to someone, so the reply has context.

ParametersJSON Schema
NameRequiredDescriptionDefault
message_limitNoHow many recent messages to include (default: 20).
conversation_idYesThread ID from list_conversations (looks like "t_1234567890").

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds no behavioral surprises and does not contradict annotations. It describes what is returned but not any limits or edge cases.

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 no redundancy. First sentence states purpose, second provides usage guidance. Every word earns its place.

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

Completeness4/5

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

For a simple read-only tool with good annotations and complete schema, the description adequately covers what the tool returns and when to use it. Could mention output format but not necessary given openWorldHint.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are already documented. Description adds no extra parameter-specific meaning beyond the schema; it only contextualizes the use case.

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?

Clear verb ('read') and resource ('thread') with specific details about content (participants, recent messages with sender, body text, attachments, timestamps). Distinguishes from siblings like get_message by implying full thread context.

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?

Explicitly states when to use: 'before replying to someone, so the reply has context.' Does not mention when not to use or alternatives, but context is clear.

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

get_messageGet MessageA
Read-only

Read a single message by ID, including attachments and shared media. Useful when a thread listing shows an attachment you need the URL for.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoComma-separated fields. Default: id,created_time,from,to,message,attachments,shares,sticker
message_idYesMessage ID (looks like "m_AbC123...").

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds minor context about attachments and shared media, but does not disclose potential rate limits or authorization requirements.

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

Conciseness5/5

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

Two sentences, concise and front-loaded with no extraneous information.

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

Completeness5/5

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

The description is complete for a simple read tool with full schema coverage; hints at return content (attachments, shared media) despite no output schema.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. Description adds value by clarifying the message_id format (looks like 'm_AbC123...') and the default fields for the fields parameter.

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 'Read a single message by ID, including attachments and shared media,' specifying the verb and resource, and distinguishing it from sibling tools like list_messages or get_conversation.

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?

Provides a concrete usage scenario: 'Useful when a thread listing shows an attachment you need the URL for,' giving context but without explicit when-not or alternative tools.

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

hide_commentHide CommentA
Idempotent

Hide or unhide someone else's comment. A hidden comment stays visible to its author and their friends but disappears for everyone else — the reversible alternative to delete_comment for spam or abuse.

ParametersJSON Schema
NameRequiredDescriptionDefault
hideNotrue hides the comment, false unhides it.
platformNoWhich platform the ID belongs to. Leave unset to auto-detect from the ID shape: Facebook IDs are compound ("{page}_{object}"), Instagram IDs are a flat run of digits.
comment_idYesComment ID to hide or unhide.

TDQS

A4.4/5.0
Behavior4/5

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

Describes visibility behavior (visible to author and friends, hidden from others) and reversibility, adding context beyond annotations which already indicate non-destructive, idempotent, non-read-only nature. Does not mention authentication or rate limits but is sufficient.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose and key distinction, every word adds value.

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 good annotations, high schema coverage, and clear description, it is mostly complete. No output schema, but tool likely returns simple success; minor gap but acceptable.

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

Parameters3/5

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

Schema coverage is 100% and description adds minimal extra: explains platform auto-detection logic slightly different from schema but already present. Baseline 3 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?

Clear verb 'hide or unhide' with specific resource 'someone else's comment'. Distinguishes itself from sibling delete_comment by highlighting reversible nature.

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?

Explicitly states it is the reversible alternative to delete_comment for spam/abuse, providing clear context on when to use vs. delete_comment.

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

list_commentsList CommentsA
Read-only

List comments on a post (Facebook) or media (Instagram), including each author's ID — which doubles as the DM recipient ID for send_message or private_reply. Instagram results nest their replies; Facebook top-level comments carry a comment_count you can drill into by passing the comment ID back in as object_id. Passing a comment ID works on Instagram too — the tool falls back to the /replies edge and reports which edge answered. Works on both platforms with a plain Page token.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoItems per page (default: 25)
orderNoFacebook only. Default is chronological.
fieldsNoComma-separated fields. Platform-specific default.
platformNoWhich platform the ID belongs to. Leave unset to auto-detect from the ID shape: Facebook IDs are compound ("{page}_{object}"), Instagram IDs are a flat run of digits.
max_pagesNoPages to auto-follow (default: 1)
object_idYesPost ID, media ID, or a comment ID to read its replies.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark read-only and non-destructive. The description adds platform-specific nesting behavior, comment_count usage, and fallback to /replies edge, providing transparency beyond annotations without contradiction.

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 with the main purpose. It uses three sentences to cover key details without redundancy, though it could be slightly trimmed without losing value.

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?

With 6 parameters and no output schema, the description covers platform behavior, reply drilling, and use of IDs. It misses return format details, but the openWorldHint and lack of output schema make this acceptable.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds meaning: object_id can be a post/media or comment ID, author ID doubles as DM recipient, and platform-specific defaults. This enriches beyond schema, earning a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists comments on posts or media for Facebook/Instagram, including author IDs. It distinguishes from siblings like get_comment or create_comment by specifying the scope and dual platform support.

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

Usage Guidelines4/5

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

The description gives context on when to use: to retrieve comments and author IDs for messaging, and to drill into replies by passing a comment ID. It doesn't explicitly state when not to use, but the sibling list implies alternatives for different actions.

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

list_conversationsList ConversationsA
Read-only

List inbox threads for the Page, newest activity first. Returns thread ID, participants, message count, unread count and a snippet of the last message. Use the returned thread ID with get_conversation or list_messages. Instagram Direct additionally requires Advanced Access to instagram_manage_messages (App Review). Without it Meta answers with a ~27s timeout, subcode 2534084. Instagram comments are NOT affected.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoItems per page (default: 25)
fieldsNoComma-separated fields. Default: id,updated_time,message_count,unread_count,snippet,participants
platformNoInbox to read. "messenger" is Facebook Page messages. "instagram" is Instagram Direct. Instagram Direct additionally requires Advanced Access to instagram_manage_messages (App Review). Without it Meta answers with a ~27s timeout, subcode 2534084. Instagram comments are NOT affected.messenger
max_pagesNoHow many pages to auto-follow (default: 1). Raise to sweep older threads.

TDQS

A5/5.0
Behavior5/5

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

Disclosures beyond annotations: return fields, pagination (max_pages), auth requirement for Instagram, specific error subcode and timeout. No contradiction with annotations (readOnlyHint, destructiveHint).

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?

Concise two primary sentences plus one clarifying Instagram detail. Front-loaded with purpose and return info. Every sentence earns its place without fluff.

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

Completeness5/5

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

For a read-only list tool with full schema coverage and clear annotations, description sufficiently covers return values, pagination, platform specifics, and auth nuances. No output schema but description lists returned fields adequate for selection.

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

Parameters5/5

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

Adds significant meaning beyond schema: platform parameter explains messenger vs Instagram differences and auth nuance; max_pages explains auto-follow; limit and fields are clarified. Schema coverage 100% but description enriches all.

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?

Description explicitly states 'List inbox threads for the Page, newest activity first.' and lists returned fields. It distinguishes from siblings by directing to use returned thread ID with get_conversation or list_messages.

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?

Provides clear when-to-use: 'Use the returned thread ID with get_conversation or list_messages.' Also clarifies Instagram Direct's Advanced Access requirement and timeout behavior, helping the agent decide platform parameter.

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

list_messagesList MessagesA
Read-only

List messages inside a thread without the surrounding conversation metadata. Use get_conversation instead when you also want the participant list.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoItems per page (default: 25)
fieldsNoComma-separated fields. Default: id,created_time,from,to,message,attachments
max_pagesNoPages to auto-follow (default: 1)
conversation_idYesThread ID (looks like "t_1234567890").

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare read-only and non-destructive. Description adds that it does not include surrounding conversation metadata, which is useful context. No contradictions, but could elaborate on pagination 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?

Two sentences, no fluff. Purpose and usage guidance front-loaded efficiently.

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?

Adequately covers purpose, usage, and key behavior. With no output schema, could mention return format, but with good annotations and schema, it's largely 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 covers all 4 parameters with descriptions (100% coverage). Description adds no extra meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Explicitly states 'List messages inside a thread' and distinguishes from get_conversation by noting it omits surrounding metadata. Clear verb+resource+scope.

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?

Directly provides when to use this tool and explicitly names the alternative get_conversation for when participant list is needed.

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

list_postsList PostsA
Read-only

List published posts on the Facebook Page, or media on the linked Instagram account. Returns each post's ID, caption/message, timestamp and engagement counts. Use the returned ID with list_comments to moderate its comment thread.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoItems per page (default: 25)
fieldsNoComma-separated fields. Defaults differ per platform: Facebook uses id,message,created_time,permalink_url,comments.summary(true); Instagram uses id,caption,timestamp,permalink,media_type,comments_count,like_count.
platformNoWhich surface to list.facebook
max_pagesNoPages to auto-follow (default: 1)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, openWorldHint, destructiveHint. The description adds value by specifying return fields, platform-specific defaults, and 'auto-follow' pagination behavior. No contradictions.

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?

Three sentences, all essential: purpose, return values, and usage guidance. No fluff. Front-loaded with the main action.

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

Completeness4/5

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

For a tool with 4 parameters and no output schema, the description covers return values, platform differences, and a sibling tool reference. It lacks explicit pagination details beyond 'auto-follow', but annotations compensate for safety.

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

Parameters3/5

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

Schema coverage is 100%, so the parameters are well-documented. The description does not add new semantic meaning beyond repeating 'Items per page' and 'Pages to auto-follow' which are already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists published posts on Facebook Page or media on Instagram account, specifies returned fields (ID, caption/message, timestamp, engagement counts), and distinguishes from sibling tool list_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 provides a clear follow-up action ('Use the returned ID with list_comments to moderate its comment thread'), implying context for use. It does not explicitly list exclusions, but the guidance is adequate.

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

private_replyPrivate Reply to CommentA

Answer a public comment with a private direct message to its author. Meta allows exactly one private reply per comment, and only within 7 days of the comment. This is the supported way to move a public question into the inbox. It messages a real person — confirm with a human first. Instagram private replies need the same Advanced Access as Instagram Direct.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesPrivate message text.
comment_idYesComment ID whose author should receive the DM.

TDQS

A4.7/5.0
Behavior5/5

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

Discloses constraints beyond annotations: one private reply per comment, 7-day window, need for Advanced Access for Instagram. Warns that it messages a real person. No contradiction with annotations.

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?

Four sentences, each adds value: definition, constraints, use case, warnings. Front-loaded with primary purpose. No redundancy.

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

Completeness5/5

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

For a simple tool with two parameters and no output schema, the description covers purpose, constraints, usage guidance, behavioral warnings, and auth requirements fully. No gaps.

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

Parameters3/5

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

Schema coverage is 100% and both parameters are adequately described in schema. Description adds no extra meaning beyond what is already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Answer a public comment with a private direct message to its author.' Uses specific verb and resource, and distinguishes from sibling tools like reply_to_comment (public reply) and send_message (generic DM).

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?

Explicitly states when to use: 'supported way to move a public question into the inbox', and includes specific constraints: exactly one per comment, within 7 days. Warns to confirm with a human first.

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

reply_to_commentReply to CommentA

Reply publicly to a comment, as the Page. Facebook and Instagram use different endpoints for this and the tool routes automatically. This publishes publicly — confirm the text with a human first. To answer someone privately instead, use private_reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesReply text.
platformNoWhich platform the ID belongs to. Leave unset to auto-detect from the ID shape: Facebook IDs are compound ("{page}_{object}"), Instagram IDs are a flat run of digits.
comment_idYesComment ID to reply to.

TDQS

A4.4/5.0
Behavior4/5

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

Discloses that replies are public and that routing between Facebook/Instagram endpoints is automatic. Annotations already note non-readonly and non-idempotent, so description adds value without contradiction.

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?

Three efficient sentences, focused, front-loaded with purpose. No superfluous content.

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?

Covers purpose, usage, and behavioral notes well. Lacks mention of return value (e.g., reply ID or object), but schema coverage compensates partially.

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 adequately. The description adds only minor context about auto-detection of platform, not significantly improving semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool replies publicly to a comment as the Page. It explicitly distinguishes from the sibling tool private_reply by name.

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?

Provides clear guidance: use for public replies, warns that it publishes publicly, advises human confirmation, and suggests private_reply for private responses.

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

send_messageSend MessageA

Send a direct message from the Page to a person, on Messenger or Instagram Direct. This publishes to a real person's inbox — confirm the recipient and the text with a human before calling it. Meta only allows a free-form reply within 24 hours of that person's last message; outside that window the call fails and a message tag or paid channel is required. Instagram Direct additionally requires Advanced Access to instagram_manage_messages (App Review). Without it Meta answers with a ~27s timeout, subcode 2534084. Instagram comments are NOT affected.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesMessage body to send.
image_urlNoOptional publicly reachable image URL to send instead of text.
recipient_idYesThe recipient's Page-scoped ID (PSID) on Messenger, or IGSID on Instagram. Take it from the participant entry in get_conversation, or from the comment author in list_comments.

TDQS

A4.9/5.0
Behavior5/5

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

Goes beyond annotations by disclosing that it publishes to a real person's inbox, the 24-hour window constraint, and Instagram's Advanced Access requirement. Annotations already indicate write operation (not read-only) but description adds crucial failure context.

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?

Well-structured with main action first, then safety warning, then constraints, then Instagram specifics. Every sentence adds value, though it could be slightly more concise; still efficient for the information density.

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

Completeness5/5

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

Thorough coverage of a complex tool (two channels, permissions, time windows, failure modes) despite no output schema. Addresses all necessary context for an agent to use safely and correctly.

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

Parameters5/5

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

Adds value beyond 100% schema coverage by explaining how to obtain recipient_id (from get_conversation or list_comments) and implying mutual exclusivity of text and image_url. Schema descriptions are present but description provides practical sourcing and usage context.

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?

Clearly states the action (send), the resource (direct message), and the channels (Messenger or Instagram Direct). Distinguishes from siblings like private_reply and comment-related tools by explicitly saying 'Instagram comments are NOT affected.'

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?

Provides explicit when-to-use (within 24-hour window), when-not-to-use (outside window requires message tag or paid channel), and safety advice (confirm with human). Also details Instagram Direct permissions and failure mode (timeout, subcode).

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

send_sender_actionSend Sender ActionA
Idempotent

Mark a conversation as seen, or show/hide the typing indicator. Cosmetic and safe: it posts no content. Useful before a slow reply so the person sees the Page is responding.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesWhich indicator to send.
recipient_idYesRecipient PSID (Messenger) or IGSID (Instagram).

TDQS

A4.5/5.0
Behavior5/5

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

Annotations indicate non-readonly, non-destructive, idempotent. The description adds 'Cosmetic and safe: it posts no content', clarifying behavior beyond annotations. No contradictions.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose and immediate context. Every sentence adds value with no redundancy.

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

Completeness5/5

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

For a simple side-effect tool with no output schema, the description plus annotations provide sufficient context. It explains safety, idempotency, and typical use case.

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?

Input schema covers both parameters with descriptions (100% coverage). The description's mention of 'mark seen or typing' maps to the action enum but adds no new parameter semantics beyond what schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool sends sender actions like 'mark seen' or typing indicators, distinguishing it from sending actual messages. It uses specific verbs ('mark', 'show/hide') and identifies the resource ('conversation').

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 a usage scenario ('useful before a slow reply') and implies it's safe/no content. However, it does not explicitly contrast with sibling tools like send_message or list when not to use it.

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

update_commentUpdate CommentA
Idempotent

Edit the text of a comment the Page authored. FACEBOOK ONLY — the Instagram Graph API has no edit operation for comments, so an Instagram reply can only be deleted and re-posted. This tool rejects Instagram IDs rather than failing opaquely.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesNew comment text, replacing the old one.
platformNoWhich platform the ID belongs to. Leave unset to auto-detect from the ID shape: Facebook IDs are compound ("{page}_{object}"), Instagram IDs are a flat run of digits.
comment_idYesFacebook comment ID authored by the Page.

TDQS

A4.8/5.0
Behavior5/5

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

Annotations indicate a mutation (readOnlyHint=false) that is idempotent and non-destructive; description confirms an edit operation. Additionally, description adds the behavior of rejecting Instagram IDs instead of failing silently, which is valuable beyond annotation fields.

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

Conciseness5/5

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

Two sentences, no wasted words. First sentence immediately states purpose, second adds critical platform constraint. Efficient and front-loaded.

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 sibling tools like delete_comment, create_comment, etc., the description adequately distinguishes update_comment. It has no output schema, so return values are not described, which is acceptable for a mutation tool. Could mention if it returns the updated comment object, but not necessary for completeness.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds context about platform auto-detection from ID shape, which is not in the schema but aids agent understanding. However, it doesn't elaborate on the message parameter beyond the schema description.

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?

Description clearly states 'Edit the text of a comment the Page authored.' The verb 'edit' maps directly to the tool name, and the resource is specified as comment text. It also implicitly distinguishes from sibling tools like delete_comment or create_comment.

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?

Explicitly states 'FACEBOOK ONLY' and explains that Instagram has no edit operation, so this tool rejects Instagram IDs. This gives clear when-to-use and when-not-to-use guidance, including behavior on invalid input.

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. 16 tool updatesv1.0.0
    • First observedcheck_access
    • First observedcreate_comment
    • First observeddelete_comment
    • First observedget_comment
    • First observedget_conversation
    • First observedget_message
    • First observedhide_comment
    • First observedlist_comments
    • First observedlist_conversations
    • First observedlist_messages
    • First observedlist_posts
    • First observedprivate_reply
    • First observedreply_to_comment
    • First observedsend_message
    • First observedsend_sender_action
    • First observedupdate_comment

TDQS

A4.4/5.0
Disambiguation5/5

Each tool targets a distinct resource/action: conversations, messages, comments, posts, or access diagnostics. Potential confusion between private_reply and reply_to_comment is resolved by clear descriptions stating public vs private.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case (e.g., get_conversation, send_message, list_comments). No naming convention violations.

Tool Count5/5

16 tools cover the full scope of social media inbox management without being excessive. Each tool serves a specific need, and the count is well-scoped for the domain.

Completeness4/5

Covers CRUD for comments and messages, plus conversation listing and access diagnostics. Minor gaps exist (e.g., no tool for deleting conversations or creating Instagram posts), but core workflows are fully supported.

Maintenance

ActivitySlowing
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
    A
    quality
    C
    maintenance
    MCP server for Facebook Pages organic analytics and management using Meta Graph API v25.0. Enables AI assistants to read page insights, posts, comments, and publish content via natural language.
    9
    37
    MIT
  • F
    license
    A
    quality
    B
    maintenance
    Local MCP server for operating Instagram, Meta Ads, and Facebook Page from Claude Code via Meta's Graph API. Provides 20 tools for publishing, campaign management, and insights.
    20
    -
  • A
    license
    A
    quality
    B
    maintenance
    A Facebook/Messenger MCP server that lets AI agents read and engage with profiles, pages, posts, comments, groups, Messenger conversations, notifications, and events using the user's existing browser session cookies — no Graph API app, tokens, or browser automation required. It supports multi-account and Page switching, write operations (posting, commenting, messaging) with per-identity limits and cooldowns, and honest error reporting where Meta has decommissioned cookie-era endpoints.
    41
    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/pauloFroes/mcp-meta-inbox'

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