Skip to main content
Glama

Diagnose the host's elicitation support

elicit_doctor

Report the connected host's elicitation/sampling/roots support. initialize.request/response echo the handshake verbatim; support holds Elicitly's derived booleans; deprecations flags client features (sampling, roots, logging) moved to Deprecated in the MCP 2026-07-28 spec (SEP-2577); probeElicitation adds a live form-elicitation round-trip under probes.elicitationForm. Client-features background: https://modelcontextprotocol.io/docs/learn/client-concepts. Pass share: true to contribute the report to Elicitly's public Support Matrix evidence queue — stored: this report plus the optional productName / productVersion / notes (the host product's name and version, which the report cannot see from inside, and any unusual setup); the report itself contains no elicitation payloads or conversation content. The result then carries shared: true|false.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
notesNoWith share: anything unusual about the setup worth recording with the evidence.
shareNoContribute this report to Elicitly's public Support Matrix evidence queue. Stored: the report plus productName / productVersion / notes; no elicitation payloads or conversation content.
productNameNoWith share: the host product's name as the user sees it (e.g. "Claude Desktop") — the report cannot detect this from inside.
productVersionNoWith share: the host product's version, if known.
probeElicitationNoAlso fire one live form-elicitation round-trip (the user may see a dialog) and report the outcome under probes.elicitationForm. Default false: passive capability report only, no prompt.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
probesNoPresent only when probeElicitation was true: the live round-trip's attempted/action/latencyMs/verdict.
sharedNoPresent when share: true was passed — whether the report landed in the evidence queue.
supportYesElicitly's derived support booleans, inferred from the advertised capabilities.
initializeYesThe MCP initialize handshake echoed verbatim: { request: { clientInfo, capabilities }, response: { protocolVersion, capabilities, serverInfo } }.
shareErrorNoPresent when sharing was requested but failed: a one-line error summary.
deprecationsYesSpec-level deprecation advisories (MCP 2026-07-28, SEP-2577) for the client features the report surfaces.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed6 schema fields changed
    • addedInput schema / properties / notes / description
      Added value: +"With share: anything unusual about the setup worth recording with the evidence."
    • addedInput schema / properties / probeElicitation / description
      Added value: +"Also fire one live form-elicitation round-trip (the user may see a dialog) and report the outcome under probes.elicitationForm. Default false: passive capability report only, no prompt."
    • addedInput schema / properties / productName / description
      Added value: +"With share: the host product's name as the user sees it (e.g. \"Claude Desktop\") — the report cannot detect this from inside."
    • addedInput schema / properties / productVersion / description
      Added value: +"With share: the host product's version, if known."
    • addedInput schema / properties / share / description
      Added value: +"Contribute this report to Elicitly's public Support Matrix evidence queue. Stored: the report plus productName / productVersion / notes; no elicitation payloads or conversation content."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "deprecations": {
      +      "description": "Spec-level deprecation advisories (MCP 2026-07-28, SEP-2577) for the client features the report surfaces.",
      +      "items": {
      +        "additionalProperties": {},
      +        "propertyNames": {
      +          "type": "string"
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "initialize": {
      +      "additionalProperties": {},
      +      "description": "The MCP initialize handshake echoed verbatim: { request: { clientInfo, capabilities }, response: { protocolVersion, capabilities, serverInfo } }.",
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "probes": {
      +      "additionalProperties": false,
      +      "description": "Present only when probeElicitation was true: the live round-trip's attempted/action/latencyMs/verdict.",
      +      "properties": {
      +        "elicitationForm": {
      +          "additionalProperties": {},
      +          "propertyNames": {
      +            "type": "string"
      +          },
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "elicitationForm"
      +      ],
      +      "type": "object"
      +    },
      +    "shareError": {
      +      "description": "Present when sharing was requested but failed: a one-line error summary.",
      +      "type": "string"
      +    },
      +    "shared": {
      +      "description": "Present when share: true was passed — whether the report landed in the evidence queue.",
      +      "type": "boolean"
      +    },
      +    "support": {
      +      "additionalProperties": false,
      +      "description": "Elicitly's derived support booleans, inferred from the advertised capabilities.",
      +      "properties": {
      +        "elicitation": {
      +          "type": "boolean"
      +        },
      +        "elicitationForm": {
      +          "type": "boolean"
      +        },
      +        "elicitationUrl": {
      +          "type": "boolean"
      +        },
      +        "roots": {
      +          "type": "boolean"
      +        },
      +        "sampling": {
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "elicitation",
      +        "elicitationForm",
      +        "elicitationUrl",
      +        "sampling",
      +        "roots"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "initialize",
      +    "support",
      +    "deprecations"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4/5.0
Behavior5/5

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

Annotations are minimal (openWorldHint false, destructiveHint false, no readOnlyHint), so the description carries the transparency burden and meets it thoroughly: it discloses the user-visible dialog side effect of probeElicitation, the external write when share: true (public evidence queue), a privacy guarantee ('no elicitation payloads or conversation content'), and an intrinsic limitation (the report cannot see productName/version from inside). The public-queue write sits slightly at odds with a hard closed-world reading of openWorldHint: false, but it's an explicit opt-in, so not a contradiction.

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?

Front-loaded with the purpose sentence and every sentence carries load — handshake echo, derived booleans, deprecations, probe behavior, privacy, and the share flow. But it is one dense, jargon-laden run-on paragraph (SEP-2577, Elicitly-derived booleans, probes.elicitationForm) that would scan far better split into two or three structured sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists and all five parameters are documented, the description covers the essential operational context: what the report contains, when a dialog appears, what gets stored externally, what doesn't, and where background material lives (linked docs). Minor gap: it doesn't say how the derived booleans should be interpreted or what practical consequences the deprecations flag carry, leaving that to the output schema.

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?

Schema coverage is 100% and each parameter's schema description is already rich (share's storage semantics, probeElicitation's dialog warning, productName's example). The main description largely restates that content; the only genuinely new tidbit is that the result carries shared: true|false. Baseline 3 applies when the schema does the heavy lifting.

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?

Opens with a specific verb+resource pair: 'Report the connected host's elicitation/sampling/roots support.' That single sentence makes the diagnostic purpose unambiguous and immediately sets it apart from the eleven sibling tools, which manipulate an elicitation flow (approve, cancel, confirm, form) rather than inspect host capabilities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance relative to siblings; the agent must infer from the 'report' verb that this is the diagnostic tool. Within the tool it does clarify mode choice — passive by default vs the live probeElicitation round-trip and when share: true is appropriate — but it never names an alternative ('for liveness use elicit_ping') or an exclusion condition.

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.1/5.0
Disambiguation3/5

Most tools have distinct roles in the elicitation lifecycle, but elicit_approval's form mode heavily overlaps with elicit_form, and elicit_confirm is explicitly a wrapper over elicit_form, creating real selection ambiguity. Status, await, result, cancel, and history are clearly separated, so the confusion is limited to a couple of closely related tools.

Naming Consistency4/5

All tools share the elicit_ prefix and use snake_case, which makes the namespace predictable and easy to scan. However, the second token mixes nouns (approval, form, proposal, status) with verbs (await, cancel, confirm, ping), and elicit_doctor is a non-obvious metaphor, so the pattern is not perfectly uniform.

Tool Count5/5

Twelve tools is within the ideal scope for a specialized elicitation server: creation variants, status polling, blocking wait, result retrieval, cancellation, history, and diagnostic helpers all have a place. The count feels purposeful rather than padded, and it fits the domain without becoming unwieldy.

Completeness4/5

The lifecycle is well covered: agents can create varied elicitations, check status, block on decisions, fetch results, cancel pending requests, and review history, plus diagnostic and connectivity tools. The main gap is the inability to update or extend a pending elicitation after creation, but agents can work around this by canceling and recreating.

Resources