Skip to main content
Glama

Wait for selection

well_wait_for_selection
Read-only

Read the user's card click, holding the turn open until it lands. Call it in the SAME turn, right 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), well_list_burn_exemptions (kind "exemptions"), well_list_recurring_contexts (kind "recurring_contexts"), well_list_cash_scope (kind "cash_scope"), well_list_connectors (kind "connect_ack" for the connect step, "bank_ack" for the bank step), well_list_counterparties (kind "categorize_ack" — its Continue and its Keep for later both write it), well_list_missing_invoice_owners (kind "assign_ack" — its Continue writes it), well_preview_invoice_fetch (kind "deploy_ack" — its Deploy, its Continue and its Keep for later all write it), well_show_company_candidates (kind "company_pick" — its Use this company mints the company workspace, switches into it and writes the ack in one call; its Keep for later writes the same ack with the outcome the click carried and moves no pin), well_show_retargetable_connectors (kind "retarget_ack" — its Confirm and its Keep for later both write it, with the outcome the click carried), well_list_member_candidates (kind "invite_ack" — its Send and its Keep for later both write it, with the outcome the click carried), or well_propose_next_steps (kind "next_step": a row click writes it; on "selected", take selection.next_step.prompt as the user's own message and start that skill in the same turn, loading it with well_get_skill). It waits up to 60s for the click. "selected" — continue the flow. "no_selection_yet" — call it again at once, at most 5 calls in this turn; after the fifth, end the turn on the card in one line, and the user's click then prefills the reply that resumes the flow.

  • 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), the exempted category keys or the recurring context keys plus the workspace_id they belong to, or the acknowledgement plus the workspace_id it was made in and, on a card whose buttons say different things, the outcome the click carried. already_set: true means it was recorded since the card was drawn but before this call (the user had already clicked). Continue the flow with it.

Only a click recorded SINCE the card was drawn is reported. An answer left over from an earlier conversation stays in the session and is never handed back, so this tool always waits for the click the card in front of the user is asking for.

  • status "no_selection_yet": nothing has been recorded since the card was drawn and no click landed within the wait (default 60s, clamped 5-60s). This is a NORMAL result, not an error. Call this tool again at once, up to 5 calls in one turn. After the fifth, end the turn on the card in one line; the user's click then 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 conversation 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.

A burn-exemption answer belongs to the workspace it was made in and rides back as selection.workspace_id, and it carries no months: a category is or is not burn for the business, so the same answer holds over any window. An EMPTY selection.exempt_categories on status "selected" means the user exempted NOTHING — act on it, do not re-ask. A switch to another workspace drops it; a change of the selected months does not.

A recurring-contexts answer follows the same rules as a burn-exemption answer: it belongs to the workspace it was made in, carries no months, and an EMPTY selection.recurring_contexts on status "selected" means the user counts NOTHING as recurring — act on it, do not re-ask.

A cash-scope answer follows those same rules, and its empty case is the one to read carefully: an EMPTY selection.counted_account_types on status "selected" means the user counts NOTHING as cash. That is a resolution, not a scope of size zero — say there is no cash position left to report and END the run, rather than carrying an empty scope into a total the renderer cannot draw.

Kind "cash_scope" is the reader's ANSWER — the account types they ticked, and nothing else. It is not well_render_cash_forecast's cash_scope field, which is the fuller policy an answer feeds into (the counted types plus the ownership and exclusion counts the caller measured).

An acknowledgement belongs to the workspace it was made in, and rides back as selection.workspace_id. On kinds "categorize_ack", "deploy_ack", "retarget_ack", "company_pick" and "invite_ack" it also carries selection.outcome: "done" means the user carried the step out, "keep_for_later" means they set it aside. Both end the step, so continue the flow either way and say in half a sentence which one it was. 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 conversation 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), "exemptions" (the burn-exemption card's Continue), "recurring_contexts" (the recurring-contexts card's Continue), "cash_scope" (the cash-scope card's Continue), "accounting_settings_ack" (the accounting-settings card's Confirm), "connect_ack" / "bank_ack" (the connect card's Continue), "categorize_ack" (the categorize card's Continue or Keep for later), "assign_ack" (the owner-assignment card's Continue), "deploy_ack" (the collect-agents card's Deploy, Continue or Keep for later), "company_pick" (the company-candidates card's Use this company or Keep for later), "invite_ack" (the invite-members card's Send or Keep for later), "retarget_ack" (the connector-retarget card's Confirm or Keep for later), "next_step" (a row click on the next-steps card).
timeout_sNoHow long to wait, in seconds. Default 60, clamped to 5-60.
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.
waiting_noticeNoOne short line the person reads while this call holds the turn open, IN THE LANGUAGE THEY ARE WRITING IN. Say what you are waiting for them to do on the card, in your own words, not what the server is doing: they are the one holding the flow. Omitted falls back to an English line, which a reader working in another language may not read, so write it whenever you know their language.
conversation_idNoThe conversation id returned by the previous Well result, in its meta under well/conversation_id, in its structuredContent, or in its JSON text block. Pass it back on every call in the same conversation, including a call a card makes, so the chosen workspace and the earlier answers still apply. It decides the conversation on its own: nothing the host states about the session replaces it. Omit it only on the first call of a conversation.

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 click had already been recorded since the card was drawn, before this call started — no wait happened.
conversation_idNoThe conversation this result belongs to. Pass it back as the conversation_id argument on every later Well call in the same conversation.
resolved_workspaceNoThe workspace that answered, when the caller named none and the token authorizes several.
conversation_id_noteNoPresent only when the server opened a fresh lane, stating that no choice recorded earlier was read.
conversation_id_sourceNoWhere the conversation id came from: the host's own request meta, the caller's argument, or a fresh lane the server opened.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / conversation_id
      Added value: +{
      +  "description": "The conversation id returned by the previous Well result, in its meta under well/conversation_id, in its structuredContent, or in its JSON text block. Pass it back on every call in the same conversation, including a call a card makes, so the chosen workspace and the earlier answers still apply. It decides the conversation on its own: nothing the host states about the session replaces it. Omit it only on the first call of a conversation.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / conversation_id
      Added value: +{
      +  "description": "The conversation this result belongs to. Pass it back as the conversation_id argument on every later Well call in the same conversation.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / conversation_id_note
      Added value: +{
      +  "description": "Present only when the server opened a fresh lane, stating that no choice recorded earlier was read.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / conversation_id_source
      Added value: +{
      +  "description": "Where the conversation id came from: the host's own request meta, the caller's argument, or a fresh lane the server opened.",
      +  "enum": [
      +    "host_meta",
      +    "argument",
      +    "minted"
      +  ],
      +  "type": "string"
      +}
  2. Changed4 schema fields changed
    • changedInput schema / properties / kind / description
      Previous value: -"Which card click to wait for: \"workspace\" (the workspace picker's Use), \"periods\" (the month picker's Validate), \"counterparties\" (the missing-invoices card's Continue), \"exemptions\" (the burn-exemption card's Continue), \"recurring_contexts\" (the recurring-contexts card's Continue), \"connect_ack\" / \"bank_ack\" (the connect card's Continue), \"categorize_ack\" (the categorize card's Continue or Keep for later), \"assign_ack\" (the owner-assignment card's Continue), \"deploy_ack\" (the collect-agents card's Deploy, Continue or Keep for later), \"company_pick\" (the company-candidates card's Use this company or Keep for later), \"invite_ack\" (the invite-members card's Send or Keep for later), \"retarget_ack\" (the connector-retarget card's Confirm or Keep for later), \"next_step\" (a row click on the next-steps card)."New value: +"Which card click to wait for: \"workspace\" (the workspace picker's Use), \"periods\" (the month picker's Validate), \"counterparties\" (the missing-invoices card's Continue), \"exemptions\" (the burn-exemption card's Continue), \"recurring_contexts\" (the recurring-contexts card's Continue), \"cash_scope\" (the cash-scope card's Continue), \"accounting_settings_ack\" (the accounting-settings card's Confirm), \"connect_ack\" / \"bank_ack\" (the connect card's Continue), \"categorize_ack\" (the categorize card's Continue or Keep for later), \"assign_ack\" (the owner-assignment card's Continue), \"deploy_ack\" (the collect-agents card's Deploy, Continue or Keep for later), \"company_pick\" (the company-candidates card's Use this company or Keep for later), \"invite_ack\" (the invite-members card's Send or Keep for later), \"retarget_ack\" (the connector-retarget card's Confirm or Keep for later), \"next_step\" (a row click on the next-steps card)."
    • changedInput schema / properties / kind / enum
      Previous value: -[
      -  "workspace",
      -  "periods",
      -  "counterparties",
      -  "exemptions",
      -  "recurring_contexts",
      -  "connect_ack",
      -  "bank_ack",
      -  "categorize_ack",
      -  "deploy_ack",
      -  "assign_ack",
      -  "accounting_settings_ack",
      -  "next_step",
      -  "company_pick",
      -  "retarget_ack",
      -  "invite_ack"
      -]New value: +[
      +  "workspace",
      +  "periods",
      +  "counterparties",
      +  "exemptions",
      +  "recurring_contexts",
      +  "cash_scope",
      +  "connect_ack",
      +  "bank_ack",
      +  "categorize_ack",
      +  "deploy_ack",
      +  "assign_ack",
      +  "accounting_settings_ack",
      +  "next_step",
      +  "company_pick",
      +  "retarget_ack",
      +  "invite_ack"
      +]
    • changedOutput schema / properties / kind / enum
      Previous value: -[
      -  "workspace",
      -  "periods",
      -  "counterparties",
      -  "exemptions",
      -  "recurring_contexts",
      -  "connect_ack",
      -  "bank_ack",
      -  "categorize_ack",
      -  "deploy_ack",
      -  "assign_ack",
      -  "accounting_settings_ack",
      -  "next_step",
      -  "company_pick",
      -  "retarget_ack",
      -  "invite_ack"
      -]New value: +[
      +  "workspace",
      +  "periods",
      +  "counterparties",
      +  "exemptions",
      +  "recurring_contexts",
      +  "cash_scope",
      +  "connect_ack",
      +  "bank_ack",
      +  "categorize_ack",
      +  "deploy_ack",
      +  "assign_ack",
      +  "accounting_settings_ack",
      +  "next_step",
      +  "company_pick",
      +  "retarget_ack",
      +  "invite_ack"
      +]
    • addedOutput schema / properties / selection / properties / counted_account_types
      Added value: +{
      +  "description": "The account types the user counts as cash on kind \"cash_scope\". An EMPTY array is the answer \"nothing counts as cash\", not an absent one — it ends the run rather than reporting a zero total.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  3. Changed3 schema fields changed
    • changedInput schema / properties / kind / description
      Previous value: -"Which card click to wait for: \"workspace\" (the workspace picker's Use), \"periods\" (the month picker's Validate), \"counterparties\" (the missing-invoices card's Continue), \"exemptions\" (the burn-exemption card's Continue), \"recurring_contexts\" (the recurring-contexts card's Continue), \"connect_ack\" / \"bank_ack\" (the connect card's Continue), \"categorize_ack\" (the categorize card's Continue or Keep for later), \"assign_ack\" (the owner-assignment card's Continue), \"deploy_ack\" (the collect-agents card's Deploy, Continue or Keep for later), \"company_pick\" (the company-candidates card's Use this company), \"retarget_ack\" (the connector-retarget card's Confirm or Keep for later), \"next_step\" (a row click on the next-steps card)."New value: +"Which card click to wait for: \"workspace\" (the workspace picker's Use), \"periods\" (the month picker's Validate), \"counterparties\" (the missing-invoices card's Continue), \"exemptions\" (the burn-exemption card's Continue), \"recurring_contexts\" (the recurring-contexts card's Continue), \"connect_ack\" / \"bank_ack\" (the connect card's Continue), \"categorize_ack\" (the categorize card's Continue or Keep for later), \"assign_ack\" (the owner-assignment card's Continue), \"deploy_ack\" (the collect-agents card's Deploy, Continue or Keep for later), \"company_pick\" (the company-candidates card's Use this company or Keep for later), \"invite_ack\" (the invite-members card's Send or Keep for later), \"retarget_ack\" (the connector-retarget card's Confirm or Keep for later), \"next_step\" (a row click on the next-steps card)."
    • changedInput schema / properties / kind / enum
      Previous value: -[
      -  "workspace",
      -  "periods",
      -  "counterparties",
      -  "exemptions",
      -  "recurring_contexts",
      -  "connect_ack",
      -  "bank_ack",
      -  "categorize_ack",
      -  "deploy_ack",
      -  "assign_ack",
      -  "accounting_settings_ack",
      -  "next_step",
      -  "company_pick",
      -  "retarget_ack"
      -]New value: +[
      +  "workspace",
      +  "periods",
      +  "counterparties",
      +  "exemptions",
      +  "recurring_contexts",
      +  "connect_ack",
      +  "bank_ack",
      +  "categorize_ack",
      +  "deploy_ack",
      +  "assign_ack",
      +  "accounting_settings_ack",
      +  "next_step",
      +  "company_pick",
      +  "retarget_ack",
      +  "invite_ack"
      +]
    • changedOutput schema / properties / kind / enum
      Previous value: -[
      -  "workspace",
      -  "periods",
      -  "counterparties",
      -  "exemptions",
      -  "recurring_contexts",
      -  "connect_ack",
      -  "bank_ack",
      -  "categorize_ack",
      -  "deploy_ack",
      -  "assign_ack",
      -  "accounting_settings_ack",
      -  "next_step",
      -  "company_pick",
      -  "retarget_ack"
      -]New value: +[
      +  "workspace",
      +  "periods",
      +  "counterparties",
      +  "exemptions",
      +  "recurring_contexts",
      +  "connect_ack",
      +  "bank_ack",
      +  "categorize_ack",
      +  "deploy_ack",
      +  "assign_ack",
      +  "accounting_settings_ack",
      +  "next_step",
      +  "company_pick",
      +  "retarget_ack",
      +  "invite_ack"
      +]
  4. Changed5 schema fields changed
    • changedInput schema / properties / kind / description
      Previous value: -"Which card click to wait for: \"workspace\" (the workspace picker's Use), \"periods\" (the month picker's Validate), \"counterparties\" (the missing-invoices card's Continue), \"exemptions\" (the burn-exemption card's Continue), \"connect_ack\" / \"bank_ack\" (the connect card's Continue), \"categorize_ack\" (the categorize card's Continue or Keep for later), \"assign_ack\" (the owner-assignment card's Continue), \"deploy_ack\" (the collect-agents card's Deploy, Continue or Keep for later), \"next_step\" (a row click on the next-steps card)."New value: +"Which card click to wait for: \"workspace\" (the workspace picker's Use), \"periods\" (the month picker's Validate), \"counterparties\" (the missing-invoices card's Continue), \"exemptions\" (the burn-exemption card's Continue), \"recurring_contexts\" (the recurring-contexts card's Continue), \"connect_ack\" / \"bank_ack\" (the connect card's Continue), \"categorize_ack\" (the categorize card's Continue or Keep for later), \"assign_ack\" (the owner-assignment card's Continue), \"deploy_ack\" (the collect-agents card's Deploy, Continue or Keep for later), \"company_pick\" (the company-candidates card's Use this company), \"retarget_ack\" (the connector-retarget card's Confirm or Keep for later), \"next_step\" (a row click on the next-steps card)."
    • changedInput schema / properties / kind / enum
      Previous value: -[
      -  "workspace",
      -  "periods",
      -  "counterparties",
      -  "exemptions",
      -  "connect_ack",
      -  "bank_ack",
      -  "categorize_ack",
      -  "deploy_ack",
      -  "assign_ack",
      -  "next_step"
      -]New value: +[
      +  "workspace",
      +  "periods",
      +  "counterparties",
      +  "exemptions",
      +  "recurring_contexts",
      +  "connect_ack",
      +  "bank_ack",
      +  "categorize_ack",
      +  "deploy_ack",
      +  "assign_ack",
      +  "accounting_settings_ack",
      +  "next_step",
      +  "company_pick",
      +  "retarget_ack"
      +]
    • addedInput schema / properties / waiting_notice
      Added value: +{
      +  "description": "One short line the person reads while this call holds the turn open, IN THE LANGUAGE THEY ARE WRITING IN. Say what you are waiting for them to do on the card, in your own words, not what the server is doing: they are the one holding the flow. Omitted falls back to an English line, which a reader working in another language may not read, so write it whenever you know their language.",
      +  "maxLength": 120,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedOutput schema / properties / kind / enum
      Previous value: -[
      -  "workspace",
      -  "periods",
      -  "counterparties",
      -  "exemptions",
      -  "connect_ack",
      -  "bank_ack",
      -  "categorize_ack",
      -  "deploy_ack",
      -  "assign_ack",
      -  "next_step"
      -]New value: +[
      +  "workspace",
      +  "periods",
      +  "counterparties",
      +  "exemptions",
      +  "recurring_contexts",
      +  "connect_ack",
      +  "bank_ack",
      +  "categorize_ack",
      +  "deploy_ack",
      +  "assign_ack",
      +  "accounting_settings_ack",
      +  "next_step",
      +  "company_pick",
      +  "retarget_ack"
      +]
    • addedOutput schema / properties / selection / properties / recurring_contexts
      Added value: +{
      +  "description": "The billing context keys the user counts as recurring on kind \"recurring_contexts\". An EMPTY array is the answer \"nothing is recurring\", not an absent one.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  5. Changed4 schema fields changed
    • changedInput schema / properties / kind / description
      Previous value: -"Which card click to wait for: \"workspace\" (the workspace picker's Use), \"periods\" (the month picker's Validate), \"counterparties\" (the missing-invoices card's Continue), \"exemptions\" (the burn-exemption card's Continue), \"connect_ack\" / \"bank_ack\" (the connect card's Continue), \"categorize_ack\" (the categorize card's Continue or Keep for later), \"assign_ack\" (the owner-assignment card's Continue), \"deploy_ack\" (the collect-agents card's Deploy, Continue or Keep for later)."New value: +"Which card click to wait for: \"workspace\" (the workspace picker's Use), \"periods\" (the month picker's Validate), \"counterparties\" (the missing-invoices card's Continue), \"exemptions\" (the burn-exemption card's Continue), \"connect_ack\" / \"bank_ack\" (the connect card's Continue), \"categorize_ack\" (the categorize card's Continue or Keep for later), \"assign_ack\" (the owner-assignment card's Continue), \"deploy_ack\" (the collect-agents card's Deploy, Continue or Keep for later), \"next_step\" (a row click on the next-steps card)."
    • changedInput schema / properties / kind / enum
      Previous value: -[
      -  "workspace",
      -  "periods",
      -  "counterparties",
      -  "exemptions",
      -  "connect_ack",
      -  "bank_ack",
      -  "categorize_ack",
      -  "deploy_ack",
      -  "assign_ack"
      -]New value: +[
      +  "workspace",
      +  "periods",
      +  "counterparties",
      +  "exemptions",
      +  "connect_ack",
      +  "bank_ack",
      +  "categorize_ack",
      +  "deploy_ack",
      +  "assign_ack",
      +  "next_step"
      +]
    • changedOutput schema / properties / kind / enum
      Previous value: -[
      -  "workspace",
      -  "periods",
      -  "counterparties",
      -  "exemptions",
      -  "connect_ack",
      -  "bank_ack",
      -  "categorize_ack",
      -  "deploy_ack",
      -  "assign_ack"
      -]New value: +[
      +  "workspace",
      +  "periods",
      +  "counterparties",
      +  "exemptions",
      +  "connect_ack",
      +  "bank_ack",
      +  "categorize_ack",
      +  "deploy_ack",
      +  "assign_ack",
      +  "next_step"
      +]
    • addedOutput schema / properties / selection / properties / next_step
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "The row the user picked on kind \"next_step\".",
      +  "properties": {
      +    "prompt": {
      +      "description": "The sentence the picked row carried, to be treated as the user's own message.",
      +      "type": "string"
      +    },
      +    "skill": {
      +      "description": "The slug of the skill the picked row offers.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "skill",
      +    "prompt"
      +  ],
      +  "type": "object"
      +}
  6. Changed6 schema fields changed
    • changedInput schema / properties / kind / description
      Previous value: -"Which card click to wait for: \"workspace\" (the workspace picker's Use), \"periods\" (the month picker's Validate), \"counterparties\" (the missing-invoices card's Continue), \"exemptions\" (the burn-exemption card's Continue), \"connect_ack\" / \"bank_ack\" (the connect card's Continue)."New value: +"Which card click to wait for: \"workspace\" (the workspace picker's Use), \"periods\" (the month picker's Validate), \"counterparties\" (the missing-invoices card's Continue), \"exemptions\" (the burn-exemption card's Continue), \"connect_ack\" / \"bank_ack\" (the connect card's Continue), \"categorize_ack\" (the categorize card's Continue or Keep for later), \"assign_ack\" (the owner-assignment card's Continue), \"deploy_ack\" (the collect-agents card's Deploy, Continue or Keep for later)."
    • changedInput schema / properties / kind / enum
      Previous value: -[
      -  "workspace",
      -  "periods",
      -  "counterparties",
      -  "exemptions",
      -  "connect_ack",
      -  "bank_ack"
      -]New value: +[
      +  "workspace",
      +  "periods",
      +  "counterparties",
      +  "exemptions",
      +  "connect_ack",
      +  "bank_ack",
      +  "categorize_ack",
      +  "deploy_ack",
      +  "assign_ack"
      +]
    • changedInput schema / properties / timeout_s / description
      Previous value: -"How long to wait, in seconds. Default 10, clamped to 5-90."New value: +"How long to wait, in seconds. Default 60, clamped to 5-60."
    • changedOutput schema / properties / already_set / description
      Previous value: -"True when the selection was already recorded before this call started — no wait happened."New value: +"True when the click had already been recorded since the card was drawn, before this call started — no wait happened."
    • changedOutput schema / properties / kind / enum
      Previous value: -[
      -  "workspace",
      -  "periods",
      -  "counterparties",
      -  "exemptions",
      -  "connect_ack",
      -  "bank_ack"
      -]New value: +[
      +  "workspace",
      +  "periods",
      +  "counterparties",
      +  "exemptions",
      +  "connect_ack",
      +  "bank_ack",
      +  "categorize_ack",
      +  "deploy_ack",
      +  "assign_ack"
      +]
    • addedOutput schema / properties / selection / properties / outcome
      Added value: +{
      +  "description": "What the acknowledging click said about the step: \"done\" when the user carried it out, \"keep_for_later\" when they set it aside on purpose. Both end the step and continue the flow. Absent on a card whose one action confirms and nothing else.",
      +  "enum": [
      +    "done",
      +    "keep_for_later"
      +  ],
      +  "type": "string"
      +}
  7. Changed4 schema fields changed
    • changedInput schema / properties / kind / description
      Previous value: -"Which 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)."New value: +"Which card click to wait for: \"workspace\" (the workspace picker's Use), \"periods\" (the month picker's Validate), \"counterparties\" (the missing-invoices card's Continue), \"exemptions\" (the burn-exemption card's Continue), \"connect_ack\" / \"bank_ack\" (the connect card's Continue)."
    • changedInput schema / properties / kind / enum
      Previous value: -[
      -  "workspace",
      -  "periods",
      -  "counterparties",
      -  "connect_ack",
      -  "bank_ack"
      -]New value: +[
      +  "workspace",
      +  "periods",
      +  "counterparties",
      +  "exemptions",
      +  "connect_ack",
      +  "bank_ack"
      +]
    • changedOutput schema / properties / kind / enum
      Previous value: -[
      -  "workspace",
      -  "periods",
      -  "counterparties",
      -  "connect_ack",
      -  "bank_ack"
      -]New value: +[
      +  "workspace",
      +  "periods",
      +  "counterparties",
      +  "exemptions",
      +  "connect_ack",
      +  "bank_ack"
      +]
    • addedOutput schema / properties / selection / properties / exempt_categories
      Added value: +{
      +  "description": "The category keys the user marked as NOT burn on kind \"exemptions\". An EMPTY array is the answer \"nothing is exempt\", not an absent one — status \"selected\" is what says the user answered.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  8. Changed2 schema fields changed
    • changedInput schema / properties / workspace_id / description
      Previous value: -"Target workspace. Omit to use the only authorized workspace, or (for read tools) to query all authorized workspaces grouped by workspace. Required for write tools when the token authorizes more than one workspace."New value: +"Target 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."
    • addedOutput schema / properties / resolved_workspace
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "The workspace that answered, when the caller named none and the token authorizes several.",
      +  "properties": {
      +    "name": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "workspace_id": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "workspace_id",
      +    "name"
      +  ],
      +  "type": "object"
      +}
  9. Changed6 schema fields changed
    • changedInput schema / properties / kind / description
      Previous value: -"Which card click to wait for: \"workspace\" (the workspace picker's Use), \"periods\" (the month picker's Validate), \"connect_ack\" / \"bank_ack\" (the connect card's Continue)."New value: +"Which 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)."
    • changedInput schema / properties / kind / enum
      Previous value: -[
      -  "workspace",
      -  "periods",
      -  "connect_ack",
      -  "bank_ack"
      -]New value: +[
      +  "workspace",
      +  "periods",
      +  "counterparties",
      +  "connect_ack",
      +  "bank_ack"
      +]
    • changedOutput schema / properties / kind / enum
      Previous value: -[
      -  "workspace",
      -  "periods",
      -  "connect_ack",
      -  "bank_ack"
      -]New value: +[
      +  "workspace",
      +  "periods",
      +  "counterparties",
      +  "connect_ack",
      +  "bank_ack"
      +]
    • addedOutput schema / properties / selection / properties / counterparties
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "company_id": {
      +        "type": "string"
      +      },
      +      "matched_connector_service_id": {
      +        "description": "The matched provider's connector service id; absent when the picked row matched no provider.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "company_id"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / selection / properties / periods / description
      Added value: +"The picked months on kind \"periods\"; the months the picked counterparties were listed for on kind \"counterparties\" — empty when the pick names none and so applies to every month read."
    • addedOutput schema / properties / selection / properties / workspace_id / description
      Added value: +"The pinned workspace on kind \"workspace\"; the workspace the picked counterparties belong to; the workspace the acknowledgement was made in."
  10. Added

TDQS

A4.8/5.0
Behavior5/5

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

The description goes far beyond the readOnlyHint and destructiveHint annotations: it discloses the 60s wait, the clamping, the no-stale-click guarantee, the workspace/period drop rules, the meaning of empty selection arrays, and the explicit closing statement 'This tool reads and waits — it changes nothing.' No behavioral surprise is hidden.

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?

The description is front-loaded and organized into readable sections, but it is much longer than necessary. Scoping rules for counterparties, exemptions, recurring contexts, cash scope, and acknowledgements repeat the same workspace/period concepts multiple times, making the text harder to scan than the underlying logic warrants.

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?

For a tool with many kinds and edge cases, the description is exhaustive: it covers statuses, selection payload shapes, empty-selection semantics, workspace scoping, acknowledgement outcomes, next_step skill handoff, and timeout behavior. Despite having an output schema, the description still explains the return semantics in enough detail to act correctly.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds substantial meaning beyond the schema: it explains workspace_id targeting and fallback behavior, waiting_notice localization and fallback, conversation_id propagation rules, and the semantic distinctions among ack kinds and outcomes. This is not a repetition of the schema; it is operational guidance.

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 verb and object: 'Read the user's card click, holding the turn open until it lands.' It then enumerates the exact predecessor tools and kinds, so an agent can distinguish this wait/read tool from the many well_list_* and well_show_* siblings without opening schemas.

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 says when to call the tool: 'Call it in the SAME turn, right after the tool whose card asks the user to click,' and then maps each predecessor to its kind. It also specifies the no_selection_yet retry policy, the five-call limit, and the end-turn fallback, leaving no ambiguity about invocation context.

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.

Resources