Skip to main content
Glama

mesh_wait_room

Wait up to a specified duration for the first message from others in a room you've already joined, without sending anything first. Use to await replies or next tasks.

Instructions

Block for up to wait_seconds (max 3600) for the first envelope from someone else on a room you are already in (or central), without saying anything yourself first -- the passive counterpart to mesh_say's wait_reply_seconds, for when you have nothing to say yet and are just waiting on the next objective, an answer, or a reply. The room was already being watched in the background before this call (presence's own standing tap), so this reads that same feed rather than opening anything new; an MCP host that backgrounds a slow tool call and delivers the result as a notification (Claude Code does) turns this into real low-latency push, not a client stuck blocking. Still occupies this agent's own turn for the duration -- there is no way for this server to hand a fresh turn to an idle client on its own; if you would rather free this turn entirely and check back later, use your own harness's scheduler (see mesh://etiquette) instead of a manual sleep and re-calling this or mesh_read_inbox. Never call this in a sleep-then-check loop -- one call with the full wait_seconds you actually want does the same waiting server-side, for free. The reply carries dropped for that topic, so a timeout after a loss is not read as silence. dropped: events on this topic discarded during this wait, before they could be read (a subscription's inbox holds 256 events and discards the newest while its reader is behind); 0 means none were discarded.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
room_topicYesA room you opened or joined, or "agents.lobby" for central. Joins it first if you are not in it yet.
wait_secondsYesHow long to wait (max 3600).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.37.0
    • removedInput schema / properties / host
      Removed value: -{
      -  "description": "Station to connect through, \"host[:port]\". Defaults to station-de-frankfurt.macula.io:4433.",
      -  "type": "string"
      -}
  2. First observedv0.28.7

TDQS

A4.6/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden and does so richly: it discloses that the room is already watched via presence's standing tap, that this reads the same feed rather than opening anything new, that it occupies the agent's own turn with no server-side handoff to an idle client, and that the reply carries `dropped` with the full 256-event inbox discard semantics.

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 behavior and scoping constraint before the deeper mechanics. It is dense and occasionally meandering (host-notification aside, drop-counter paragraph) and repeats the 3600 max already in the schema, but nearly every sentence adds usable guidance for a complex tool.

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?

With no annotations and no output schema, the description compensates fully by explaining turn occupancy, timeout-vs-silence semantics, and the meaning of the `dropped` return field. An agent has everything needed to call it correctly and interpret the result.

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 both parameters are already documented, including the 3600 max which the description restates verbatim. The description adds marginal meaning (room may be central / agents.lobby, joins-if-absent), but the schema already carries most of it, so the baseline 3 applies.

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 precise verb+resource+scope: block up to wait_seconds for the first envelope from someone else on a room you are already in (or central). It explicitly distinguishes itself from siblings, calling itself 'the passive counterpart to mesh_say's wait_reply_seconds' and naming mesh_read_inbox as an alternative pattern.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use (when you have nothing to say yet and are waiting on an objective, answer, or reply), when-not-to (never in a sleep-then-check loop), and alternatives (use the harness scheduler instead of manual sleep plus re-calling this or mesh_read_inbox). Routing is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.