Skip to main content
Glama

Reply To Comment

reply_to_inbox_comment
Destructive

Post a public reply to a comment, from the account the comment was left on. Works where the comment's capabilities.canReply is true, on Facebook, Instagram, Threads, YouTube, Bluesky, Mastodon and LinkedIn. This sends text to a real person from the account: show the user the exact text and the item it answers, and get their yes before calling. Each call posts a new reply, so after an error or timeout read get_inbox_comment before trying again. A 403 with code inbox_reconnect_required means the account lacks the platform permission for this channel or action (some channels still wait on platform review) or its token expired: tell the user to reconnect the account in AdaptlyPost and do not retry. 404 inbox_item_not_found means the id is unknown in this workspace. 429 inbox_rate_limited means the platform rate limited the call: wait a while before trying again. 503 inbox_platform_error means the platform failed: try again later. Needs the inbox.reply permission, which Admin and Editor hold (403 permission_denied otherwise), and an active plan.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "id": "<id>",
      "text": "<text>"
    },
    "name": "reply_to_inbox_comment"
  }
}

Input Schema

NameRequiredDescriptionDefault
idYesThe comment id, from list_inbox_comments
textYesThe text to send. Each platform has its own comment limit, tighter than the schema on most: LinkedIn 1250 characters, Threads 500, Bluesky 300, Mastodon 500, Facebook 8000, Instagram 2200, while YouTube takes the full length. Empty or too long text answers 400 inbox_reply_invalid, whose message names the limit
workspaceIdNoWorkspace to act in: an id from list_workspaces. Omit to act in the workspace list_workspaces marks current. Use the same workspaceId for every call about the same workspace, since ids from one workspace (accounts, posts, uploads) do not exist in another

Output Schema

NameRequiredDescriptionDefault
resultYesThe new reply. An InboxComment: id, accountId, platform, accountName, postId (the AdaptlyPost post id, null when the post was not published through AdaptlyPost), platformPostId, postText, postPermalink, platformCommentId, parentPlatformCommentId (null for a top-level comment), isReply, author { id, name, username, avatarUrl }, text, permalink, likeCount, createdAt, status (UNREAD, READ or DONE), isHidden, isOwn, replied (the account has a reply under it, sent from AdaptlyPost or the platform app), repliedAt, likedByAccount and capabilities { canReply, canHide, canDelete, canLike }.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / text / description
      Previous value: -"The text to send. The limit is the platform's comment limit: LinkedIn 1250 characters, Threads 500, Bluesky 300, Mastodon 500, YouTube 10000, Facebook 8000, Instagram 2200. Empty or too long text answers 400 inbox_reply_invalid, whose message names the limit"New value: +"The text to send. Each platform has its own comment limit, tighter than the schema on most: LinkedIn 1250 characters, Threads 500, Bluesky 300, Mastodon 500, Facebook 8000, Instagram 2200, while YouTube takes the full length. Empty or too long text answers 400 inbox_reply_invalid, whose message names the limit"
  2. Changed4 schema fields changed
    • addedOutput schema / properties / result / additionalProperties
      Added value: +true
    • addedOutput schema / properties / result / properties
      Added value: +{
      +  "accountId": {
      +    "description": "The account `id` from GET /social-accounts",
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "accountName": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "author": {
      +    "anyOf": [
      +      {
      +        "additionalProperties": true,
      +        "properties": {
      +          "avatarUrl": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "id": {
      +            "description": "The platform user id",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "name": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "username": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ]
      +  },
      +  "capabilities": {
      +    "anyOf": [
      +      {
      +        "additionalProperties": true,
      +        "properties": {
      +          "canDelete": {
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "canHide": {
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "canLike": {
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          },
      +          "canReply": {
      +            "type": [
      +              "boolean",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ]
      +  },
      +  "createdAt": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "id": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "isHidden": {
      +    "type": [
      +      "boolean",
      +      "null"
      +    ]
      +  },
      +  "isOwn": {
      +    "type": [
      +      "boolean",
      +      "null"
      +    ]
      +  },
      +  "isReply": {
      +    "type": [
      +      "boolean",
      +      "null"
      +    ]
      +  },
      +  "likeCount": {
      +    "type": [
      +      "number",
      +      "null"
      +    ]
      +  },
      +  "likedByAccount": {
      +    "type": [
      +      "boolean",
      +      "null"
      +    ]
      +  },
      +  "parentPlatformCommentId": {
      +    "description": "Null for a top-level comment",
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "permalink": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "platform": {
      +    "description": "One of: FACEBOOK, INSTAGRAM, THREADS, TIKTOK, TWITTER, BLUESKY, LINKEDIN, PINTEREST, YOUTUBE, MASTODON, TELEGRAM, GOOGLE_BUSINESS, TUMBLR, WORDPRESS",
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "platformCommentId": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "platformPostId": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "postId": {
      +    "description": "The AdaptlyPost post id, null when the post was not published through AdaptlyPost",
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "postPermalink": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "postText": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "replied": {
      +    "description": "True when your account has a reply under it, sent from AdaptlyPost or from the platform's own app",
      +    "type": [
      +      "boolean",
      +      "null"
      +    ]
      +  },
      +  "repliedAt": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "status": {
      +    "description": "One of: UNREAD, READ, DONE",
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "text": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  }
      +}
    • addedOutput schema / properties / result / type
      Added value: +"object"
    • addedOutput schema / required
      Added value: +[
      +  "result"
      +]
  3. Added

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructive, non-idempotent, open-world behavior, and the description adds real value on top: each call posts a new reply, confirmation is required, specific error codes are mapped to causes and remedies, and the inbox.reply permission with Admin/Editor roles is named. The only notable omissions are how the resulting reply id comes back and whether the reply can be deleted afterwards, which keeps it just shy of a 5.

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?

Front-loaded with the action and scope, then confirmation policy, then error handling in a scannable sequence. It is long, but nearly every clause carries operational information; only the channel enumeration borders on padding given the schema repeats the platform names.

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 the risky parts of a destructive, non-idempotent write: required confirmation, permission and plan gates, and the full error taxonomy. Return-value details can be safely omitted since an output schema exists.

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% and the schema already carries the per-platform character limits, the id source and workspaceId guidance, so the description adds little parameter-level meaning. Baseline 3 applies where structured fields do the heavy lifting.

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?

Names a specific verb and resource ("Post a public reply to a comment") and pins down the acting identity ("from the account the comment was left on"). That scope separates it from siblings like reply_to_inbox_mention, reply_to_inbox_review and delete_inbox_comment without needing to look at their schemas.

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?

States the precondition for use (capabilities.canReply is true) and the supported channels, plus an explicit human confirmation step before calling. It also routes the agent to get_inbox_comment after an error or timeout and to account reconnection on 403, so the when-to-use and recovery paths are spelled out.

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.

Resources