Skip to main content
Glama

Wait for selection

well_wait_for_selection
Read-only

Read the user's card click — returns instantly if they already clicked; otherwise waits briefly. Call it after the tool whose card asks the user to click: well_list_workspaces (kind "workspace"), well_list_periods (kind "periods"), well_list_missing_invoices (kind "counterparties" — its card is the only one that records a counterparty pick), or well_list_connectors (kind "connect_ack" for the connect step, "bank_ack" for the bank step).

  • status "selected": the choice is recorded. selection carries it — the pinned workspace_id and workspace_queue, the picked periods, the picked counterparties (each { company_id, matched_connector_service_id } plus the workspace_id they belong to and the periods they were listed for), or the acknowledgement plus the workspace_id it was made in. already_set: true means it was recorded before this call (the user had already clicked). Continue the flow with it.

  • status "no_selection_yet": nothing is recorded and no click landed within the wait (default 10s, clamped 5-90s). This is a NORMAL result, not an error — end your turn by asking the user to click the card; the click prefills the reply that resumes the flow.

A counterparty pick belongs to the workspace AND the months it was made against, and it carries those months in selection.periods. A switch to another workspace, a change of the selected months, or a fresh well_list_missing_invoices card drops it. So kind "counterparties" never hands back a pick made against another month — with that pick dropped, the call waits for the new click instead. A pick recorded BEFORE this call is reported only when it was made in the workspace this call targets, so pass workspace_id to ask about a workspace the connection is not switched to. A pick that lands DURING the wait rides back with the workspace it was made in — compare selection.workspace_id before you act on it.

An acknowledgement belongs to the workspace it was made in, and rides back as selection.workspace_id. A switch to another workspace drops it. An ack recorded BEFORE this call is reported only when it was made in the workspace this call targets, so pass workspace_id to ask about a workspace the connection is not switched to. A click that lands DURING the wait is reported with its own workspace, which can be another card's — compare selection.workspace_id before you act on it.

This tool reads and waits — it changes nothing.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindYesWhich card click to wait for: "workspace" (the workspace picker's Use), "periods" (the month picker's Validate), "counterparties" (the missing-invoices card's Continue), "connect_ack" / "bank_ack" (the connect card's Continue).
timeout_sNoHow long to wait, in seconds. Default 10, clamped to 5-90.
workspace_idNoTarget workspace. This read reports one workspace's own data. Omit it and the token's primary workspace answers, which may not be the one you mean; the result names the workspace that did.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
hintNo
kindNo
errorNo
statusNo
successYes
selectionNoThe value the click wrote. Present only when status is "selected".
already_setNoTrue when the selection was already recorded before this call started — no wait happened.
resolved_workspaceNoThe workspace that answered, when the caller named none and the token authorizes several.

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description explicitly states 'This tool reads and waits — it changes nothing.' It discloses nuanced behaviors such as picks being dropped on workspace/month changes, 'already_set: true' semantics, and that a 'no_selection_yet' status is a normal result rather than an error. This gives the agent a clear behavioral model beyond the structured 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?

The description is front-loaded with the core purpose and pairing rules, then presents detailed semantic nuances in clearly separated paragraphs. It is long and contains some parallel repetition (e.g., the workspace-dropping behavior for both counterparties and acks), but the structure makes each segment trackable and relevant, so it remains more organized than bloated.

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?

Given the tool's complexity and the existence of an output schema, the description covers everything needed to invoke it correctly: when to call it, which kind pairs with which tool, how to interpret statuses, workspace scoping caveats, timeout behavior, and that no_selection_yet is a normal outcome requiring user follow-up. No critical operational gap remains.

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?

The input schema already covers all parameters with descriptions (100% coverage), so the baseline is 3. The description adds significant flow-level meaning, e.g., what each kind means in context, how workspace_id scopes the reported data, and how timeout_s default/clamp works. This goes beyond the schema but is somewhat redundant with schema text in places.

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?

The description opens with a specific action, 'Read the user's card click', and clarifies the behavior in both states: 'returns instantly if they already clicked; otherwise waits briefly.' It also distinguishes the tool from sibling list tools by naming exactly which list tool produces which card click (well_list_workspaces, well_list_periods, well_list_missing_invoices, well_list_connectors), so an agent can tell it apart from those siblings.

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?

It explicitly instructs when to use the tool: 'Call it after the tool whose card asks the user to click', then maps each kind to a specific sibling tool. It also provides guidance for the 'no_selection_yet' outcome: 'end your turn by asking the user to click the card', and for workspace-sensitive cases tells the agent to pass workspace_id and compare selection.workspace_id.

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.

TDQS

A4.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: CRUD for companies, people, and invoices; financial analytics (cash, cost, runway, holdings); connector management and invocation; schema discovery; querying; reconciliation; and contact channel management. No two tools could be confused for the same action.

Naming Consistency5/5

All tools follow the `well_verb_noun` pattern with consistent verb choices (create, get, list, update, delete, add, remove, run, resolve, query, invoke). The naming is predictable and makes the tool's purpose immediately clear.

Tool Count4/5

With 26 tools, the set is slightly above the ideal 3-15 range, but every tool earns its place given the breadth of the domain (CRM, invoicing, financial analytics, reconciliation, connector management). The count is well-scoped and not excessive.

Completeness4/5

The tool surface covers core CRUD, financial KPIs, reconciliation, and connector management. Minor gaps exist (e.g., no direct tool to update contact channels or manage accounts), but the query and schema tools allow agents to work around them, and the primary workflows are fully supported.

Resources