Skip to main content
Glama

Reach MCP — LinkedIn for AI agents

reply_comment

Post a reply to an existing LinkedIn comment. Pass the comment_id (URN) returned by scrape_post as comment_urn — it is used directly as threadUrn. Use to answer a specific comment (comment_urn from scrape_my_posts or scrape_post); for a new comment on the post itself use comment_post. Counts against the daily comments quota.

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": {
      "account_id": "<account_id>",
      "comment_urn": "<comment_urn>",
      "text": "<text>"
    },
    "name": "reply_comment"
  }
}

Input Schema

NameRequiredDescriptionDefault
textYesReply text.
page_idNoAct as this company page instead of the member: page_id (or vanity name) from list_managed_pages. The account must be an admin of the page with a role that allows the action. Omit to act as the member.
mentionsNoPeople to @mention. Write each name in text exactly as given here, without '@' (the full name, or the first name alone for a short mention); it becomes a link to the profile. Without this, '@Name' in the text would stay plain text, so a comment with '@Name' and no mention for it is refused before anything is sent: pass the mention, or drop the '@'. The result's mentions field says whether LinkedIn kept them: applied, not_applied (mentions_not_applied lists the names left as plain text; the comment is posted all the same, do not post it again) or unverified.
account_idYesReach id of the LinkedIn account to act on, from list_accounts.
comment_urnYesURN of the comment to reply to (comment_id from scrape-post).
idempotency_keyNoOptional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours.

Output Schema

NameRequiredDescriptionDefault
repliedNo
mentionsNoOnly when mentions were passed: whether LinkedIn kept them as links.
mentions_not_appliedNoNames LinkedIn left as plain text. The comment is posted: do not post it again.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / mentions
      Added value: +{
      +  "description": "People to @mention. Write each name in text exactly as given here, without '@' (the full name, or the first name alone for a short mention); it becomes a link to the profile. Without this, '@Name' in the text would stay plain text, so a comment with '@Name' and no mention for it is refused before anything is sent: pass the mention, or drop the '@'. The result's mentions field says whether LinkedIn kept them: applied, not_applied (mentions_not_applied lists the names left as plain text; the comment is posted all the same, do not post it again) or unverified.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "linkedin_id": {
      +        "description": "fsd_profile id (e.g. actor_linkedin_id, linkedin_id from scrape_post), vanity name or profile URL.",
      +        "type": "string"
      +      },
      +      "name": {
      +        "description": "The name as written in text, e.g. 'Jane Doe' or 'Jane'.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "name",
      +      "linkedin_id"
      +    ],
      +    "type": "object"
      +  },
      +  "maxItems": 20,
      +  "type": "array"
      +}
    • addedOutput schema / properties / mentions
      Added value: +{
      +  "description": "Only when mentions were passed: whether LinkedIn kept them as links.",
      +  "enum": [
      +    "applied",
      +    "not_applied",
      +    "unverified"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / mentions_not_applied
      Added value: +{
      +  "description": "Names LinkedIn left as plain text. The comment is posted: do not post it again.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / page_id
      Added value: +{
      +  "description": "Act as this company page instead of the member: page_id (or vanity name) from list_managed_pages. The account must be an admin of the page with a role that allows the action. Omit to act as the member.",
      +  "type": "string"
      +}
  3. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only declare that this is a non-read-only, non-destructive, open-world write. The description adds context those annotations do not carry: the call counts against the daily comments quota, and comment_urn is used directly as threadUrn. It could go further on what happens after posting, but the attached output schema relieves it of that duty.

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?

Three dense sentences, front-loaded with the purpose and then the sibling routing. Slightly repetitive in naming scrape_post twice, but no sentence is wasted.

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 write tool with six parameters, an output schema, and full schema coverage, the description covers the essentials: what it does, which sibling to use instead, where the required URN comes from, and a quota constraint. The mentions and page_id behaviors are documented in the schema, so omitting them here is 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 description coverage is 100%, so the baseline is 3. The description still adds meaning by explaining the provenance and server-side use of comment_urn ('comment_id returned by scrape_post … used directly as threadUrn'), which the schema alone does not say.

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 ('Post a reply to an existing LinkedIn comment'), and immediately distinguishes it from the sibling that creates top-level comments by naming comment_post. An agent can tell reply_comment apart from comment_post without opening either schema.

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?

Gives explicit when-to-use guidance ('Use to answer a specific comment') and names the alternative with its condition ('for a new comment on the post itself use comment_post'). It also points to where the comment_urn value comes from (scrape_my_posts or scrape_post), so the agent is not left guessing.

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