Skip to main content
Glama

Reply to Conversation

reply_to_conversation
Destructive

Sends a reply in an existing LinkedIn messaging thread, including recruiter InMail, using the thread ID and optional dry-run verification before sending.

Instructions

Reply inside an existing LinkedIn messaging thread, InMail included.

Opens /messaging/thread/<thread_id>/ and types into that thread's own reply composer, so the message lands in the same conversation. This is the path for answering a recruiter InMail, whose sender may have no Message action on their profile. Get the thread_id from get_inbox, search_conversations or get_conversation.

The thread is verified before anything is typed: the page must land on exactly the requested thread and stay there, and the composer must be the page's one visible editor, inside the thread's main region, with one submit button in its own form. Any doubt fails closed. Quick-reply buttons an InMail shows ("Yes, interested...", "No thanks...") are never clicked; a thread that offers only those has no composer and returns composer_unavailable. A draft already in the composer is left untouched and returns composer_occupied. A status of enter_to_send_enabled means LinkedIn's "Press Enter to Send" preference hides the Send button; relay the returned instructions as for send_message. The dry run reports it too. No Voyager or other private API is used. This is a write operation when confirm_send is True.

Input Schema

NameRequiredDescriptionDefault
messageYesMessage text, read as send_message reads it: LF, CRLF and CR all end a line, empty lines are kept, and the whole message is trimmed. Tab, other control characters, DEL, U+0085, U+2028 and U+2029 are refused.
thread_idYesLinkedIn messaging thread ID, or a /messaging/thread/<id>/ reference as another tool returned it
confirm_sendYesMust be True to send. False is a dry run that verifies the thread and composer, types nothing, and says who the reply would go to.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv4.29.0

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the destructiveHint/openWorldHint annotations, the description discloses the verification gate (page must land on exactly the requested thread, composer must be the single visible editor in the main region with one submit button in its own form), the fail-closed policy, named failure statuses, and the fact that an existing draft is left untouched. It also scopes destructiveness precisely: it is a write operation only when confirm_send is True, which refines rather than repeats the destructiveHint annotation.

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?

Content is front-loaded with purpose first, then the verification and failure behavior, and nearly every sentence carries operational information. It is dense and long for a single tool, with some artifacts (double spaces, backticked status values) that slightly impede scanning, but there is no filler or repetition of the schema.

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 destructive, browser-driven write tool this covers what an agent needs: prerequisites (thread_id sources), safety gating, dry-run semantics, and enumerated failure outcomes. An output schema exists, so return-shape detail is correctly omitted while status meanings that affect the agent's next action are still explained.

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 a step above by adding acquisition guidance for thread_id (where to get it) and by clarifying that confirm_send=False is a dry run that still verifies the thread and composer, types nothing, and reports the recipient. Message formatting rules are left entirely to the schema, which is appropriate.

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 opening sentence states a specific verb and resource (reply inside an existing LinkedIn messaging thread) and immediately extends scope (InMail included). It also distinguishes itself from the profile-based path by explaining that the InMail sender may have no Message action, which is the concrete reason this tool exists separately from send_message.

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 tells the agent where the required thread_id comes from (get_inbox, search_conversations, get_conversation) and gives explicit when-not conditions: quick-reply-only threads return composer_unavailable, threads with an existing draft return composer_occupied, and quick-reply buttons are never clicked. It also points to send_message for the enter_to_send_enabled case, so the alternative path is named rather than left to inference.

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