Skip to main content
Glama

Reply to a comment or message

reply_to_comment
Destructive

Posts a reply to an inbox conversation (a post comment thread or DM). Find the conversation_id with list_inbox_conversations. Instagram and Facebook DMs only work inside Meta's 7-day messaging window — replies to older DM threads are rejected. Comment threads and YouTube video comments have no window. Instagram DMs can also carry up to ten images or one PDF.

Input Schema

NameRequiredDescriptionDefault
bodyNoThe reply text. Required unless attachments are given. Keep it under 1000 bytes when sending attachments.
attachmentsNoInstagram DMs only. Up to ten images, or a single PDF on its own. They're sent first, as their own message, and the text follows. Each item needs a type and exactly one of url or attachment_id.
workspace_idNoOptional. Auto-resolved from the conversation when omitted; pass it if you already have it to skip the extra lookup.
conversation_idYesThe id returned by list_inbox_conversations for the thread to reply to.
idempotency_keyNoOptional client-generated key (e.g., a UUID) to make retries safe. Identical calls with the same key within 10 minutes return the original result instead of running the write twice.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / attachments
      Added value: +{
      +  "description": "Instagram DMs only. Up to ten images, or a single PDF on its own. They're sent first, as their own message, and the text follows. Each item needs a type and exactly one of url or attachment_id.",
      +  "items": {
      +    "properties": {
      +      "attachment_id": {
      +        "description": "A Meta attachment id. Images only.",
      +        "type": "string"
      +      },
      +      "title": {
      +        "description": "Display name shown in the inbox.",
      +        "type": "string"
      +      },
      +      "type": {
      +        "enum": [
      +          "image",
      +          "file"
      +        ],
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "Public https URL Meta can fetch. Images: PNG, JPEG or GIF up to 8 MB. Files: PDF up to 25 MB.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / body / description
      Previous value: -"The reply text. Must be non-empty."New value: +"The reply text. Required unless attachments are given. Keep it under 1000 bytes when sending attachments."
    • changedInput schema / required
      Previous value: -[
      -  "conversation_id",
      -  "body"
      -]New value: +[
      +  "conversation_id"
      +]
  2. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=true and openWorldHint=true, so the mutation profile is known; the description adds genuinely new behavioral facts — that replies to DM threads older than 7 days are rejected outright, and the per-platform attachment ceiling. It does not spell out the consequence of destructiveHint (the reply becomes publicly visible on the post, and there is no delete path mentioned here), which is the main remaining gap for a write 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?

Four sentences, front-loaded with the verb and scope, then sequencing constraint, then platform caveats. Each sentence adds a distinct fact — sibling routing, DM window, no-window platforms, attachment ceiling — with no restated boilerplate.

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 5-parameter write tool with no output schema, the description covers the essentials: where the required id comes from, which platforms are gated by a time window, and what payload limits exist. Remaining details (attachment structure, idempotency window, workspace auto-resolution) are fully carried by the rich schema, so nothing an agent needs is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter — body, attachments, workspace_id, conversation_id, idempotency_key — is already documented in the schema, including attachment ordering and idempotency retry semantics. The description's only parameter-adjacent contribution is restating the conversation_id source and the IG attachment limits, both of which the schema already covers. Baseline 3 applies.

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 specific verb plus resource — "Posts a reply to an inbox conversation" — and immediately disambiguates the two resource types it covers (post comment thread vs. DM). An agent can distinguish this from list_inbox_conversations, get_conversation_messages, or like_message without opening any schema.

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

Usage Guidelines4/5

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

It gives a concrete prerequisite and routes the agent to the sibling that supplies it: "Find the conversation_id with list_inbox_conversations." It also states platform-specific eligibility (7-day Meta window for IG/FB DMs, no window for comment threads and YouTube), which tells the agent when the call can succeed or fail. It stops short of naming alternatives for adjacent actions (e.g., reading a thread before replying), so it is not a full when/when-not map.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.