Skip to main content
Glama

Reply to the user

reply_to_user

Answers the user, as the app's setting allows (see get_app, agent_replies): draft saves a suggested reply the team sends or discards in the inbox; send sends it right away (the user gets it in the app, as a push, and by email if unread), only when the user's message is the last one; off refuses. Write as the team, plainly, without promises the team hasn't made. The chat shows Markdown: write short chat-style Markdown (bold for the one thing to tap or remember, a numbered list for steps, code for exact names, settings and values, links as text); no headings in short replies, no tables or images.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
textYesThe reply, in Markdown (shown formatted in the app, the inbox and emails). With options: the question.
optionsNoAnswer buttons under the reply (one tap answers; the user can still type). Users answer buttons far more often than they type: use them for a quick choice, e.g. ["Too expensive", "Want to try more", "Payment problem"].
conversation_idYesThe conversation's id (from list_conversations or get_user).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
sentYestrue: the user got it; false: saved as a draft for the team.
app_idNoSend mode: the app.
statusNoDraft mode: what happens next.
draft_idNoDraft mode: the draft's id.
message_idNoSend mode: the message's id.
conversation_idYesThe conversation.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / conversation_id / description
      Added value: +"The conversation's id (from list_conversations or get_user)."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "app_id": {
      +      "description": "Send mode: the app.",
      +      "format": "uuid",
      +      "type": "string"
      +    },
      +    "conversation_id": {
      +      "description": "The conversation.",
      +      "format": "uuid",
      +      "type": "string"
      +    },
      +    "draft_id": {
      +      "description": "Draft mode: the draft's id.",
      +      "format": "uuid",
      +      "type": "string"
      +    },
      +    "message_id": {
      +      "description": "Send mode: the message's id.",
      +      "format": "uuid",
      +      "type": "string"
      +    },
      +    "sent": {
      +      "description": "true: the user got it; false: saved as a draft for the team.",
      +      "type": "boolean"
      +    },
      +    "status": {
      +      "description": "Draft mode: what happens next.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "conversation_id",
      +    "sent"
      +  ],
      +  "type": "object"
      +}
  2. Added

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only say this is a non-read-only, non-destructive write; the description carries far more: mode semantics tied to an app setting, delivery channels (in-app, push, email if unread), the last-message precondition, and voice/formatting constraints. It fully discloses the behavioral surface an agent needs, with no contradiction of the annotations.

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?

Dense but front-loaded: the mode behavior that governs invocation (draft/send/off, last-message rule) comes first, with style rules trailing. The formatting inventory is long, but each item is actionable instruction rather than filler.

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 mutation tool with an output schema, the description covers the mode-conditional behavior, the gating precondition, delivery behavior, and content conventions — everything needed to call it correctly. Return values are covered by the output schema, so nothing material 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?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains that `text` is chat-style Markdown with concrete conventions (bold for the single key action, numbered lists for steps, backticks for exact values) and that with options the text should be the question. This exceeds the schema's generic Markdown note.

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+resource ('Answers the user') and immediately qualifies it with the three mode-dependent behaviors (draft/send/off), so an agent knows exactly what the call does. It also names get_app as the dependency that determines which mode is active, distinguishing it from generic write siblings like add_note.

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 explicit when/when-not conditions: 'send' only works 'when the user's message is the last one', and 'off' refuses outright. What is missing is an explicit alternative (e.g. add_note / send_feedback) for cases where replying is not the right action, but the conditional gating is unusually 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.

Resources