Skip to main content
Glama
IvanBBaev

facebook-mcp

by IvanBBaev

Send message

facebook_send_message
Destructive

Send a private Messenger message as your Page, replying inside the 24-hour window. Preview by default; use apply:true to actually send, with conversation_id to verify the window.

Instructions

Send ONE plain-text PRIVATE Messenger message as the Page, as a reply inside the 24-hour standard messaging window (messaging_type=RESPONSE). This is not a public comment reply — use the moderation tools for that. Dry run by default: it returns a preview and sends nothing unless apply:true. Pass conversation_id so the messaging window and the recipient can be verified before sending. If the send outcome is ever ambiguous the message may ALREADY have been delivered — verify with facebook_get_conversation instead of resending. No message tags are supported: Outside the 24-hour standard messaging window a plain RESPONSE message is rejected by Facebook: a message tag would be required. Every message tag now hard-fails except HUMAN_AGENT, which needs a separate App Review approval and is NOT supported by this server — so there is no tag this tool can send. Options: (1) wait until the person messages the Page again, which reopens the window; (2) if they commented in the last 7 days, reply privately with facebook_private_reply; (3) answer publicly on the post. Never resend blindly.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
applyNoSet true to actually perform the write. Omitted or false ⇒ the server decides from its configured write mode: usually a dry run that returns a plan preview and changes nothing, but a server (or package) configured apply-first performs the write. To be certain nothing happens, read the result: a dry run always reports the plan and says the write was NOT performed.
messageYesThe message text (1–2000 characters). Sent verbatim to a real person; there is no unsend.
plan_idNoThe `planId` returned by a preceding dry-run preview of this same tool. Required for irreversible and spend-tier writes; plans expire a few minutes after they are created.
profileNoPage profile key (e.g. "brand-a") or a raw Page ID. Omitted ⇒ the default Page (FB_PAGE_ID).
recipient_idNoThe recipient's page-scoped ID (PSID). Optional when conversation_id is given (it is derived from the thread); required otherwise, and then the messaging window cannot be verified client-side.
conversation_idNoConversation id from facebook_list_conversations. Strongly preferred: it identifies the recipient and lets the 24-hour window be checked before the send.
Install Server

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark it destructive and non-idempotent, and the description adds critical behavior: dry-run by default with apply:true to actually send, the possibility of delivery despite ambiguous outcome, and the complete unsupported message-tag situation including HUMAN_AGENT needing separate approval. 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.

Conciseness4/5

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

The description is long but every sentence carries operational value, with the core action front-loaded. It could be more scannable with bullets or paragraph breaks, but given the destructive and conditional nature of the tool, the density is justified.

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?

With no output schema, high complexity, and a destructive write, this description covers the full decision tree: when to send, how to verify, what to do outside the window, tag limitations, recovery from ambiguity, and parameter preferences. Nothing an agent needs to call it safely is missing.

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?

Though schema coverage is 100%, the description goes beyond field names: conversation_id is strongly preferred because it verifies the window, recipient_id becomes required only without it, message is sent verbatim with no unsend, and apply has nuanced dry-run vs apply-first server modes. This materially improves correct invocation.

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 opens with a precise verb-resource-scope statement: sends ONE plain-text PRIVATE Messenger message as the Page within the 24-hour standard messaging window. It also distinguishes itself from public comment replies and moderation tools, so an agent can tell it apart from siblings like facebook_private_reply and facebook_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 Guidelines5/5

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

It states explicit when-not and alternatives: not a public comment reply, use moderation tools; outside the window, wait, use facebook_private_reply if commented within 7 days, or answer publicly. It also instructs to verify with facebook_get_conversation if the send outcome is ambiguous rather than resending.

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

Other Tools

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/IvanBBaev/facebook-mcp'

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