Skip to main content
Glama

wait_for_build

Read-onlyIdempotent

Waits for an Odoo.sh project branch build to finish, optionally for a specific commit after a push, returning build status and next steps if it times out.

Instructions

Wait for a build of a branch of a project to finish, for timeout seconds at most: the build of that number, or the latest one. With commit, the first 7 to 64 digits of a hash, the build of that commit, once the branch has one: give it right after a push, when the latest build is still the previous one. A build that has not finished in time is not an error: finished is false, and next_step says to call again.

Returns: the build as last seen, or none while the branch has no build of commit, finished, the timeout applied, timeout_capped, true when it was lowered, and next_step, set while the build has not finished. Touches: reads only Bounds: timeout seconds, 30 by default and 50 at most, longer when Odoo.sh is slow to answer for the branch or for a commit's build; six requests to Odoo.sh and one socket, more when the socket drops, and one request every 3 seconds while a commit has no build.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
branchYes
commitNo
projectYes
timeoutNo
build_idNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
buildYes
timeoutYes
finishedYes
next_stepYes
timeout_cappedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.4.0

TDQS

A4.1/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, openWorld, non-destructive), yet the description still adds substantial behavior: timeout defaults and hard cap (30/50, longer when Odoo.sh is slow), request budget (six requests, one socket, one request every 3 seconds while waiting on a commit), and the `timeout_capped` outcome. This is well beyond what annotations provide.

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

Conciseness3/5

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

Purpose is front-loaded and there is no filler, but the opening sentence is a dense run-on ('the build of that number, or the latest one... the build of that commit, once the branch has one') that forces re-reading. The value is there; the structure could be substantially tightened.

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?

An output schema exists, so return fields need not be restated, yet the description usefully adds the polling/interruption contract (finished=false, next_step, timeout_capped). Bounds and rate-limit behavior are covered. Minor gaps around the project/branch parameters and the build_id-vs-latest ambiguity keep it from a 5.

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 description coverage is 0%, so the description must carry parameter meaning, and it largely does: `timeout` (30 default, 50 max), `commit` (first 7-64 digits of a hash, selected once the branch has a build), and `build_id` (a specific build number or the latest). `project` and `branch` are left undifferentiated, keeping it from a 5.

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?

The description states a specific verb and resource up front: waiting for a build of a branch/project to finish, bounded by a timeout, with commit/build_id variants. It is clearly distinguishable from the read-only siblings get_build/list_builds by its blocking/polling semantics, though it never names an alternative tool.

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 a concrete usage scenario ('give it right after a push, when the latest build is still the previous one') and clarifies the polling contract: an unfinished build is not an error, `finished` is false, and `next_step` instructs the agent to call again. It stops short of explicitly contrasting with get_build or stating when not to use it.

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