Skip to main content
Glama

Message: Forward

message_forward
Destructive

Forward an existing message to another EXISTING chat. Resolve source chat + message and destination chat independently. target_chat_id is a chat ID, never recipient user_id/name. Chat ID: Exact provider chat/conversation ID. LinkedIn chat IDs may also be visible in /messaging/thread/{chat_id}/ URLs. Obtain with: provider list conversations/inbox chats -> chat.id Never pass: person name, user_id, message_id. Message ID: Exact message id inside a specific chat. In V2 always keep chat_id together with message_id because providers may only guarantee uniqueness inside the chat. Obtain with: provider read/list conversation messages -> message.id Never pass: message text, chat_id, message ID without its chat context for mutation tools.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
chat_idYesExact chat/conversation ID from a conversation/chat listing or resolver. A person name/user_id is NOT a chat_id. Chat ID: Exact provider chat/conversation ID. LinkedIn chat IDs may also be visible in /messaging/thread/{chat_id}/ URLs. Obtain with: provider list conversations/inbox chats -> chat.id Never pass: person name, user_id, message_id.
account_idNoOptional Nilyo connection ID (unipile_account_id from list_connected_accounts). Omit when the user has one account for this provider. When several exist, Nilyo never guesses: list them (display name, identifier, provider user ID), choose the one the user named or ask, and pass its ID here.
message_idYesExact message ID returned inside the specified chat. Keep it paired with chat_id for all V2 message mutations/reactions. Message ID: Exact message id inside a specific chat. In V2 always keep chat_id together with message_id because providers may only guarantee uniqueness inside the chat. Obtain with: provider read/list conversation messages -> message.id Never pass: message text, chat_id, message ID without its chat context for mutation tools.
target_chat_idYesExact destination chat ID from message_resolve_chat/list conversations. Never pass a person name/user_id. Chat ID: Exact provider chat/conversation ID. LinkedIn chat IDs may also be visible in /messaging/thread/{chat_id}/ URLs. Obtain with: provider list conversations/inbox chats -> chat.id Never pass: person name, user_id, message_id.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare this as a destructive, non-read-only mutation, and the description adds behavioral context by emphasizing the 'EXISTING chat' requirement and that providers may only guarantee message-ID uniqueness within a chat, so chat_id must be kept paired with message_id. This goes beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The top-level description is heavily redundant with the parameter descriptions, repeating the same Chat ID and Message ID paragraphs almost verbatim. While the front-loaded opening sentence is strong, the repetition across description and schema bloats the definition and makes it less scannable.

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 mutation tool with no output schema, the description covers the essential invocation concerns: where to get chat/message IDs, how to pair them, and what values to avoid. It is sufficiently complete for an agent to resolve and pass the three required parameters correctly.

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 baseline is 3, but the description adds meaningful guidance beyond the schema: it explicitly forbids passing user names/user_ids for chat parameters, requires chat_id/message_id pairing, and instructs where to obtain IDs. This real-world resolution guidance is valuable for an agent selecting correct parameter values.

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 'Forward an existing message to another EXISTING chat,' naming the specific verb, resource, and the key constraint that both source and destination chats must already exist. It further disambiguates from sibling messaging tools by stressing that target_chat_id is a chat ID, never a recipient user_id/name.

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?

Clear context is provided: resolve source chat/message and destination chat independently, and obtain IDs from conversation/message listing resolvers. It warns against passing person names, user_ids, or bare message IDs, but it does not explicitly name alternative tools like messaging_send_message or linkedin_send_message for when forwarding is not appropriate.

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.