Skip to main content
Glama

Request human approval

elicit_approval

Request human approval before proceeding. Async: returns immediately with a pending request that a human decides later on the hosted review page (block with elicit_await, fetch the outcome with elicit_result); for a synchronous in-session form answered by the connected host, use elicit_form instead. Two modes, at least one of context / requestedSchema is required: (1) json mode — pass context, a read-only payload the reviewer approves or declines as-is; optionally also pass displayTemplate, a LiquidJS template that customizes how context is rendered on the review page (instead of the default raw JSON view); (2) form mode — pass requestedSchema, a JSON Schema restricted to the MCP elicitation requestedSchema subset (MCP 2025-11-25): a flat object whose properties are strings, numbers/integers, booleans, or single/multi-select enums (no nested objects, arrays of objects, $ref, or allOf) — the reviewer fills in these fields on the review page and submits them back as the submitted data. Both may be passed together: context (optionally rendered via displayTemplate) is then displayed as read-only context above the form (it is NOT merged into or used to pre-fill the form fields, which are seeded only from requestedSchema defaults). Per the MCP elicitation spec, form mode MUST NOT be used to request secrets, credentials, or other sensitive information from the reviewer.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
labelsNoRelabel or localize the action buttons (submit, decline). Each label is trimmed, 1-40 characters; unknown keys are rejected. Button placement and styling stay fixed.
contextNojson mode: a read-only JSON payload the reviewer approves or declines as-is. Echoed back verbatim in elicit_result. Rendered as raw JSON unless `displayTemplate` is given.
messageYesThe prompt shown to the reviewer at the top of the review page — say what needs approving and why.
displayTemplateNoOptional LiquidJS template that customizes how `context` is rendered on the review page. `context` is exposed to the template under the `context` key (e.g. {{ context.recordId }}).
requestedSchemaNoform mode: JSON Schema in the MCP elicitation requestedSchema subset (flat object of string / number / integer / boolean / enum properties — no nested objects, arrays of objects, $ref, or allOf). The reviewer fills these fields on the review page; property `default`s seed the form.
expiresInSecondsNoHow long the request stays decidable, in seconds (default 3600, clamped 60-604800 — 1 minute to 7 days).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
statusYesAlways `pending` at creation.
expiresAtYesWhen the request stops being decidable (timestamp).
reviewUrlYesURL of the hosted review page where a human decides this request.
elicitationIdYesUnique id of the created request — pass it to elicit_await / elicit_status / elicit_result / elicit_cancel.
elicitationDeliveredYesTrue when the request was also pushed to the connected client as a url-mode elicitation; when false, surface `reviewUrl` to the human yourself.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / additionalProperties
      Previous value: -falseNew value: +{}
  2. Changed1 schema field changed
    • changedInput schema / properties / displayTemplate / maxLength
      Previous value: -20000New value: +32768
  3. Changed8 schema fields changed
    • addedInput schema / properties / context / description
      Added value: +"json mode: a read-only JSON payload the reviewer approves or declines as-is. Echoed back verbatim in elicit_result. Rendered as raw JSON unless `displayTemplate` is given."
    • addedInput schema / properties / expiresInSeconds / description
      Added value: +"How long the request stays decidable, in seconds (default 3600, clamped 60-604800 — 1 minute to 7 days)."
    • addedInput schema / properties / labels / description
      Added value: +"Relabel or localize the action buttons (submit, decline). Each label is trimmed, 1-40 characters; unknown keys are rejected. Button placement and styling stay fixed."
    • addedInput schema / properties / labels / properties / decline / description
      Added value: +"Replacement label for the decline button."
    • addedInput schema / properties / labels / properties / submit / description
      Added value: +"Replacement label for the submit button."
    • addedInput schema / properties / message / description
      Added value: +"The prompt shown to the reviewer at the top of the review page — say what needs approving and why."
    • addedInput schema / properties / requestedSchema / description
      Added value: +"form mode: JSON Schema in the MCP elicitation requestedSchema subset (flat object of string / number / integer / boolean / enum properties — no nested objects, arrays of objects, $ref, or allOf). The reviewer fills these fields on the review page; property `default`s seed the form."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "elicitationDelivered": {
      +      "description": "True when the request was also pushed to the connected client as a url-mode elicitation; when false, surface `reviewUrl` to the human yourself.",
      +      "type": "boolean"
      +    },
      +    "elicitationId": {
      +      "description": "Unique id of the created request — pass it to elicit_await / elicit_status / elicit_result / elicit_cancel.",
      +      "type": "string"
      +    },
      +    "expiresAt": {
      +      "description": "When the request stops being decidable (timestamp).",
      +      "type": "string"
      +    },
      +    "reviewUrl": {
      +      "description": "URL of the hosted review page where a human decides this request.",
      +      "type": "string"
      +    },
      +    "status": {
      +      "const": "pending",
      +      "description": "Always `pending` at creation.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "elicitationId",
      +    "status",
      +    "reviewUrl",
      +    "expiresAt",
      +    "elicitationDelivered"
      +  ],
      +  "type": "object"
      +}
  4. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources