Skip to main content
Glama

Ask the user to fill a form

elicit_form

Trigger a form elicitation with a caller-supplied JSON schema; returns the raw {action, content}. For a plain OK/Cancel question, prefer elicit_confirm. MUST NOT be used to request secrets, credentials, or other sensitive information.

Input Schema

NameRequiredDescriptionDefault
messageYesThe instruction shown to the user above the form fields.
timeoutSecondsNoHow long to wait for the answer, in seconds (default 300, clamped 60-3600) — raise it for forms with several fields.
requestedSchemaYesJSON Schema for the form, restricted to the MCP elicitation requestedSchema subset: a flat object whose properties are strings, numbers/integers, booleans, or enums — no nested objects, arrays of objects, $ref, or allOf. See https://modelcontextprotocol.io/specification/2025-11-25/client/elicitation#requested-schema

Output Schema

NameRequiredDescriptionDefault
actionYesaccept = the user submitted the form; decline = an explicit no; cancel = dismissed unanswered (including timeout); error = the elicitation failed.
contentYesOn accept, the submitted values keyed by requestedSchema property name; null for every other action.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / additionalProperties
      Previous value: -falseNew value: +{}
  2. Changed4 schema fields changed
    • addedInput schema / properties / message / description
      Added value: +"The instruction shown to the user above the form fields."
    • addedInput schema / properties / requestedSchema / description
      Added value: +"JSON Schema for the form, restricted to the MCP elicitation requestedSchema subset: a flat object whose properties are strings, numbers/integers, booleans, or enums — no nested objects, arrays of objects, $ref, or allOf. See https://modelcontextprotocol.io/specification/2025-11-25/client/elicitation#requested-schema"
    • addedInput schema / properties / timeoutSeconds / description
      Added value: +"How long to wait for the answer, in seconds (default 300, clamped 60-3600) — raise it for forms with several fields."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "action": {
      +      "description": "accept = the user submitted the form; decline = an explicit no; cancel = dismissed unanswered (including timeout); error = the elicitation failed.",
      +      "enum": [
      +        "accept",
      +        "decline",
      +        "cancel",
      +        "error"
      +      ],
      +      "type": "string"
      +    },
      +    "content": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": {},
      +          "propertyNames": {
      +            "type": "string"
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "description": "On accept, the submitted values keyed by requestedSchema property name; null for every other action."
      +    }
      +  },
      +  "required": [
      +    "action",
      +    "content"
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only cover openWorld/destructive hints, so the description carries the rest. It discloses the return shape ('raw {action, content}') and a notable behavioral constraint (MUST NOT be used to request secrets or credentials). It doesn't cover auth or what happens on timeout failure.

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?

Two sentences, zero waste, with the core capability front-loaded and the routing/prohibition clauses after it. Every clause earns its place.

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?

An output schema exists, so return values need not be elaborated; the description still notes the raw return shape. Purpose, the primary alternative, and the sensitive-data prohibition are all present, which is sufficient for a 3-param tool with rich schema coverage.

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

Parameters3/5

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

The schema already documents all three parameters at 100% coverage, including the timeout default and clamp range and the requestedSchema subset restriction. The description adds no format or syntax detail beyond what the schema provides, so baseline 3 applies.

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?

States a specific verb+resource ('Trigger a form elicitation with a caller-supplied JSON schema') and names the sibling it is not for ('For a plain OK/Cancel question, prefer elicit_confirm'). An agent can distinguish it from elicit_confirm without opening either schema.

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?

Explicitly routes the common OK/Cancel case to elicit_confirm and states a hard exclusion (no secrets/credentials). It does not differentiate against the other form-like siblings (elicit_selection, elicit_proposal, elicit_display), so it stops short of full routing guidance.

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