Skip to main content
Glama

wait_until

Destructive

Run an idempotent command repeatedly until a structured stdout/stderr/JSON condition matches or a timeout/attempt limit is reached, replacing model-side polling loops.

Instructions

Run an idempotent command repeatedly until a structured stdout/stderr/JSON condition matches or a timeout/attempt limit is reached. Replaces model-side polling loops.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
cwdNo.
runnerNodefault
commandYes
deviceIdNo
conditionNo
timeoutMsNo
deviceNameNo
idempotentNo
intervalMsNo
maxAttemptsNo
maxOutputBytesNo
commandTimeoutMsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.8.0

TDQS

B3.1/5.0
Behavior3/5

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

Adds real context beyond annotations: it explains retry-until-condition semantics and that timeout and attempt limits bound execution. However it asserts the command is 'idempotent' while the schema's idempotent parameter defaults to false and annotations declare destructiveHint=true; it doesn't warn that repeated execution of a non-idempotent command is destructive.

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?

Two tight, front-loaded sentences with no filler. The poll-until semantics come before the comparison clause, making it efficient and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter, destructive, open-world tool with nested condition logic and no output schema, two sentences are far from sufficient. It omits condition syntax, retry/backoff behavior, per-attempt vs overall timeout interaction, and safety implications of repeated execution.

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

Parameters2/5

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

Schema description coverage is 0% across 12 parameters, including a nested condition object with 7 sub-fields (stdoutRegex, jsonPathEquals, jsonPathExists, etc.). The description explains no parameter semantics at all, leaving the central 'condition' object undocumented in prose.

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?

States a specific verb and resource: repeatedly running a command until a structured stdout/stderr/JSON condition matches or timeout/attempt limit. The clause 'Replaces model-side polling loops' distinguishes it from plain shell_run, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

'Replaces model-side polling loops' gives a usage rationale but no explicit when-to-use/when-not or comparison against alternatives like shell_run, start_process, or dev_pipeline_wait. The agent must infer the selection criteria.

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

Deploy Server

Other Tools