Skip to main content
Glama

Wait for Nofax human response

nofax_wait_for_response
Idempotent

Long-polls a durable approval or choice request for up to 240 seconds, returning a terminal response or pending status. Repeat with the same requestId while pending and do not continue the guarded action.

Instructions

Long-poll a durable Nofax request for up to 240 seconds. If the result is pending, you MUST call this tool again with the same requestId. Repeat indefinitely until a terminal response is returned or the user explicitly changes/cancels the goal. Do not continue the guarded action while pending.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "requestId": "<requestId>"
    },
    "name": "nofax_wait_for_response"
  }
}

Input Schema

NameRequiredDescriptionDefault
requestIdYesDurable request handle returned by a nofax_request_* tool.
waitSecondsNoMaximum seconds to long-poll during this call; defaults to 240. A timeout still returns pending, never approval.

Output Schema

NameRequiredDescriptionDefault
textNoHuman free-text refinement when the terminal decision is refine.
statusYesWhether the human request is still pending or has reached a terminal response.
decisionNoTerminal human decision when resolved, such as allow, deny, refine, or an explicit choice value.
mustWaitNoPresent and true while the request remains pending.
requestIdYesDurable Nofax request handle.
instructionYesSafety-preserving instruction describing what the caller may do next.
confirmationStatusNoConfirmation notification failed after an explicit human decision was durably recorded; this is never itself approval.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.2.49
    • addedOutput schema / properties / confirmationStatus
      Added value: +{
      +  "const": "failed",
      +  "description": "Confirmation notification failed after an explicit human decision was durably recorded; this is never itself approval.",
      +  "type": "string"
      +}
  2. Changed3 schema fields changedv0.2.7
    • addedInput schema / properties / requestId / description
      Added value: +"Durable request handle returned by a nofax_request_* tool."
    • addedInput schema / properties / waitSeconds / description
      Added value: +"Maximum seconds to long-poll during this call; defaults to 240. A timeout still returns pending, never approval."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": false,
      +  "properties": {
      +    "decision": {
      +      "description": "Terminal human decision when resolved, such as allow, deny, refine, or an explicit choice value.",
      +      "maxLength": 80,
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "instruction": {
      +      "description": "Safety-preserving instruction describing what the caller may do next.",
      +      "minLength": 1,
      +      "type": "string"
      +    },
      +    "mustWait": {
      +      "description": "Present and true while the request remains pending.",
      +      "type": "boolean"
      +    },
      +    "requestId": {
      +      "description": "Durable Nofax request handle.",
      +      "maxLength": 84,
      +      "minLength": 24,
      +      "type": "string"
      +    },
      +    "status": {
      +      "description": "Whether the human request is still pending or has reached a terminal response.",
      +      "enum": [
      +        "pending",
      +        "resolved"
      +      ],
      +      "type": "string"
      +    },
      +    "text": {
      +      "description": "Human free-text refinement when the terminal decision is refine.",
      +      "maxLength": 2000,
      +      "minLength": 1,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "status",
      +    "requestId",
      +    "instruction"
      +  ],
      +  "type": "object"
      +}
  3. First observedv0.2.1

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses the long-poll behavior, the mandatory continuation loop, the pending state, and the safety constraint not to proceed while waiting. These are the key behavioral traits an agent needs to use the tool correctly.

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

Conciseness5/5

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

The description is front-loaded and efficient. Every sentence provides actionable information about polling, repetition, or safety, with no wasted text.

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 output schema and annotations, the description contains what an agent needs: how long to wait, what pending means, how to continue, and what not to do while waiting. Return-shape details are appropriately left to the output schema.

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 coverage is 100%, so the schema already documents requestId and waitSeconds. The description adds meaningful continuation semantics by stressing that repeated calls must use the same requestId, though it does not add much detail on waitSeconds beyond the schema.

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 states a specific verb and resource: long-polling a durable Nofax request. It also makes the scope clear with the 240-second limit and pending/terminal outcome, distinguishing it from siblings that merely fetch or list requests.

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 explicit operational guidance: if pending, call again with the same requestId, repeat indefinitely until terminal, and do not continue the guarded action while pending. It does not explicitly compare this tool against siblings such as nofax_get_request, so it falls short of a full when-to-use/alternative routing statement.

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