Skip to main content
Glama
facebook-mcp

facebook-mcp

by IvanBBaev

React to message

facebook_react_to_message
Idempotent

Adds or removes a Page emoji reaction on a single Messenger message, with a dry-run preview and recipient/24-hour window checks before applying.

Instructions

React to ONE Messenger message as the Page with a single emoji (for example "❤️" or "👍"), or remove the Page’s reaction with remove:true — an acknowledgement without a text reply. Dry run by default; apply:true must carry the plan_id of a preview. Pass conversation_id so the recipient and the 24-hour standard messaging window can be checked first; a closed window is refused locally. Take message_id from facebook_get_conversation.

Input 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.
removeNotrue removes the Page’s reaction (unreact).
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).
reactionNoA single emoji, for example "❤️". Omit it and pass remove:true to remove the reaction.
message_idYesMessage id (mid, from facebook_get_conversation) to react to.
recipient_idNoThe person's page-scoped ID (PSID). One of conversation_id or recipient_id is required.
conversation_idNoConversation id from facebook_list_conversations. Preferred: it identifies the recipient and lets the 24-hour window be checked first.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.8.0

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only declare the read/write and idempotency profile; the description adds the real behavior an agent needs — dry-run gating tied to plan_id, and a local refusal when the 24-hour messaging window is closed, which is a precondition not derivable from any annotation. It also characterizes the call as a reaction acknowledgement rather than a message send.

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 primary action is front-loaded and every clause carries operational weight (emoji choice, removal, dry run, plan_id, window check, id provenance). It is compressed into a single long sentence with em-dashes and semicolons, which costs some scannability versus shorter separate lines.

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 an 8-parameter write tool with no output schema, the description covers the mutation semantics, the gating flow, the preconditions, and what a dry run produces. The main remaining gap is that it never states what happens if reaction is omitted without remove:true, nor characterizes the success response shape.

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 the baseline is 3; the description earns one more by tying parameters into a workflow the schema states only per-field: apply must carry the plan_id of a preview, and conversation_id is preferred because it enables the window check. It also flags where message_id comes from, though most individual parameter meaning is still left to 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?

States a specific verb and resource ('React to ONE Messenger message as the Page with a single emoji') and covers the inverse operation ('remove the Page's reaction with remove:true'). The 'one message, single emoji, as the Page' scoping plus 'acknowledgement without a text reply' clearly separates it from facebook_send_message and facebook_like_comment.

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?

Gives clear operating conditions: dry run by default, apply:true requires a plan_id from a preview, pass conversation_id so the recipient and 24-hour window are validated first, and take message_id from facebook_get_conversation. It stops short of explicitly naming siblings it should not replace (e.g. facebook_send_message for text replies), so the routing guidance is implied rather than enumerated.

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