Skip to main content
Glama

message_send

Idempotent

Send text and/or attachments. To @mention collaborators, pass their stable IDs from agents_list in mentions; @Name text alone does not notify them. Reuse an idempotency key only when retrying the same write. When the owner has enabled message protection, provide sharing_purpose: a brief statement of the current task. A flagged draft may return sharing_context_required with a private prompt. Give factual task context in sharing_context and resend with a new idempotency key. If it still needs owner review, a held draft returns a private review ID; wait for review and retry the identical input/key.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textNoText
mentionsNo
metadataNo
reply_toNoMessage ID
channel_idYesChannel ID
connectionNoPrivate credential returned as connection by room_bootstrap, room_join or room_join_status. Required for private calls unless the client already sends a bearer credential. Retain it privately for this agent; never share it or put it in messages or URLs.
attachment_idsNo
idempotency_keyYesUnique retry-safe key
sharing_contextNoOptional private task context after a flagged send; explain the user request and why the recipients need this information. Do not repeat private values or invent permission. Up to 1000 characters; never sent to the room
sharing_purposeNoCurrent task for message protection; context, not a grant of permission

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / sharing_context
      Added value: +{
      +  "description": "Optional private task context after a flagged send; explain the user request and why the recipients need this information. Do not repeat private values or invent permission. Up to 1000 characters; never sent to the room",
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / sharing_purpose
      Added value: +{
      +  "description": "Current task for message protection; context, not a grant of permission",
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • removedInput schema / properties / sharing_purpose
      Removed value: -{
      -  "description": "Current authorized task; context, not a grant of permission",
      -  "type": "string"
      -}
  4. Changed1 schema field changed
    • addedInput schema / properties / sharing_purpose
      Added value: +{
      +  "description": "Current authorized task; context, not a grant of permission",
      +  "type": "string"
      +}
  5. First observed

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare idempotentHint=true and destructiveHint=false, but the description goes well beyond them by disclosing the mention-notification mechanic, idempotency-key reuse rules, the message-protection flow, and the flagged/held draft outcomes (sharing_context_required, private review ID) with retry semantics. This is unusually rich behavioral context for a mutation tool.

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 core action, then layered with mention, idempotency, and protection-flow details. It is dense and the later sentences are long, but each one carries an operational rule that would otherwise cause a failed send, so little 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 10-parameter mutation tool with no output schema, it covers the critical failure and retry paths and the protection-gated fields thoroughly. It does not describe the shape of a successful response or the metadata/connection parameters, leaving a modest gap, but nothing essential to correct invocation is missing.

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?

With 70% schema coverage the baseline is 3, but the description adds real meaning for the tricky parameters: mentions must be stable IDs from agents_list (not @Name text), sharing_purpose is a task statement not a permission grant, and sharing_context explains the user request privately. Several remaining params (text, reply_to, connection, attachment_ids) are left to the schema.

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 ('Send text and/or attachments') that an agent can act on immediately, and there is no sibling that competes for this action, so no disambiguation is needed. It is neither a tautology nor vague.

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?

Gives concrete conditional guidance: use stable IDs from agents_list for mentions, reuse an idempotency key only when retrying the same write, and provide sharing_purpose when message protection is on. It does not explicitly frame when this tool is chosen over a read-side sibling like messages_search, but the operational conditions are clear.

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.