The allowed form-schema vocabulary depends on the MCP protocol version. Check the fields of requestedSchema against that vocabulary rather than assuming a general Tool JSON Schema can be copied into an elicitation form unchanged.
Requirement
Section titled “Requirement”In MCP 2025-06-18, a form requestedSchema has no $schema, no array or titled enum properties, and default only on boolean properties.
Details
Section titled “Details”Rule ID: mcp.elicitation.form-schema.protocol-shape
Owner: mcp
Surface: ElicitRequest · Path: requestedSchema
Kind: structural
Requirement level: must
Status: internal · Enforcement: internal
Protocol version applicability
Section titled “Protocol version applicability”2024-11-05 |
2025-03-26 |
2025-06-18 |
2025-11-25 |
2026-07-28 |
|---|---|---|---|---|
| not-applicable | not-applicable | applies | not-applicable | not-applicable |
Required by
Section titled “Required by”- MCP Description 0.9.0, Section 12.3
- 12. Elicitation Declarations: req-elicitation-form-vocabulary
Based on
Section titled “Based on”- Tier 1 — MCP schema.ts and normative specification text: MCP 2025-06-18 schema.ts, ElicitRequest requestedSchema and PrimitiveSchemaDefinition (default only on BooleanSchema; EnumSchema with enum and enumNames)
- Tier 1 — MCP schema.ts and normative specification text: MCP 2025-11-25 schema.ts, requestedSchema $schema, default on all primitive schemas, titled and multi-select enum schemas
Examples
Section titled “Examples”Invalid example
Section titled “Invalid example”Source: expected-invalid/elicitation-form-schema-2025-06-18.json · Selected: /prompts/0/elicitations/0/requestedSchema
{ "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "colors": { "type": "array", "items": { "type": "string", "enum": [ "red", "blue" ] } }, "label": { "type": "string", "default": "main" } }}Rule Source Code
Section titled “Rule Source Code”elicitation.yaml at immutable tag v0.9.0-rc.3.