Skip to main content
Glama

Message: Mark read

message_mark_read

Mark one exact message read. Resolve chat_id then message_id; do not pass person/user ID as 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. 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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=false, idempotentHint=false, destructiveHint=false, and openWorldHint=true, so the safety profile is mostly established. The description adds some behavioral context by labeling this as a mutation tool and warning that providers may only guarantee message uniqueness inside a chat, but it does not address side effects, rate limits, or auth requirements.

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

Conciseness3/5

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

The description is front-loaded with a clear purpose and is organized into Chat ID and Message ID sections, but it is verbose and largely duplicates the schema property descriptions. Phrases like 'Never pass: person name, user_id, message_id' and 'Never pass: message text, chat_id, message ID without its chat context' are repetitive and could be tightened.

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 simple state-changing tool, the description covers the key complexity: how to obtain and pair chat_id and message_id, and common mistakes to avoid. It does not explain the return value or broader side effects, but the annotations supply the safety and mutability signals, making this adequate for a correctly scoped call.

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, but the description adds a useful resolution order ('Resolve chat_id then message_id') and reinforces the exact-ID requirement with explicit 'never pass' examples. It does repeat much of what is in the schema, but the added workflow guidance helps the agent call the tool correctly.

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, 'Mark one exact message read,' names a specific verb, resource, and scope, and the emphasis on 'exact' distinguishes it from bulk operations or unread-marking. Provider-related examples and 'chat/conversation ID' further clarify it is for chat messages rather than email, despite email_mark_read existing among siblings.

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?

The description gives clear guidance on how to call the tool: resolve chat_id first, then message_id, and never pass person/user IDs as chat_id. It also tells the agent where to obtain valid IDs. It does not explicitly name alternatives or exclusions, but the context is detailed enough to avoid the most common misuse.

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.