Skip to main content
Glama

Wait for a text reply

wait_for_reply
Read-onlyIdempotent

Wait for the human to send something back to this session — texts and voicemail transcripts arrive here. Long-polls up to wait_s (max 30s); returns {events, cursor}. Pass the returned cursor next time to only see new events. An empty events list just means nothing yet — poll again if you are still waiting.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "session_token": "<session_token>"
    },
    "name": "wait_for_reply"
  }
}

Input Schema

NameRequiredDescriptionDefault
cursorNoThe cursor from the previous result; 0 the first time.
wait_sNoHow long to wait for something to arrive, 0 to 30 seconds.
session_tokenYesThe session_token from an earlier result. It keeps every call and text in one thread on their phone.

Output Schema

NameRequiredDescriptionDefault
cursorYesPass back as cursor next time to see only newer events.
eventsYesNew events since the cursor; empty means nothing yet.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / cursor / description
      Added value: +"The cursor from the previous result; 0 the first time."
    • addedInput schema / properties / session_token / description
      Added value: +"The session_token from an earlier result. It keeps every call and text in one thread on their phone."
    • addedInput schema / properties / wait_s / description
      Added value: +"How long to wait for something to arrive, 0 to 30 seconds."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$defs": {
      +    "ReplyEvent": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "created_at": {
      +          "description": "When it arrived (ISO 8601, UTC).",
      +          "title": "Created At",
      +          "type": "string"
      +        },
      +        "id": {
      +          "description": "Event id; the cursor moves past it.",
      +          "title": "Id",
      +          "type": "integer"
      +        },
      +        "payload": {
      +          "additionalProperties": true,
      +          "description": "The event's content, e.g. the message body.",
      +          "title": "Payload",
      +          "type": "object"
      +        },
      +        "type": {
      +          "description": "What arrived, e.g. a text or a voicemail.",
      +          "title": "Type",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "type",
      +        "payload",
      +        "created_at"
      +      ],
      +      "title": "ReplyEvent",
      +      "type": "object"
      +    }
      +  },
      +  "additionalProperties": true,
      +  "properties": {
      +    "cursor": {
      +      "description": "Pass back as cursor next time to see only newer events.",
      +      "title": "Cursor",
      +      "type": "integer"
      +    },
      +    "events": {
      +      "description": "New events since the cursor; empty means nothing yet.",
      +      "items": {
      +        "$ref": "#/$defs/ReplyEvent"
      +      },
      +      "title": "Events",
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "events",
      +    "cursor"
      +  ],
      +  "title": "RepliesResult",
      +  "type": "object"
      +}
  2. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds real behavioral context beyond that: it is a long-poll bounded at 30 seconds, including the default behavior, and the events-plus-cursor return contract. It omits failure behavior such as session expiry or what happens on timeout.

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

Conciseness5/5

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

Four short sentences, front-loaded with what the tool does and followed by the polling mechanics and the empty-result caveat. Every sentence carries a distinct, actionable fact with no filler.

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?

With an output schema present, the description need not explain return values, and it still sketches the events/cursor shape and the re-poll contract for a simple read-only tool. The absence of error or session-expiry guidance is the only remaining gap for a blocking wait operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are already documented, including the cursor default and the 0-30 second range for wait_s. The description restates cursor carry-over and the 30s cap without adding format or edge-case detail beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Wait for the human to send something back to this session" states a specific verb and resource, and names the payload type (texts and voicemail transcripts). It does not distinguish itself from the sibling poll_result, so an agent cannot tell from this text alone whether polling for a result differs from waiting for a reply.

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?

It gives concrete operational guidance: pass the returned cursor on the next call, and an empty events list simply means nothing has arrived yet, so poll again. It stops short of naming alternatives or stating when not to use it (e.g., versus poll_result or say).

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.