Form properties, required names, enum labels, defaults, and bounds must agree with one another. Correct references to absent properties and contradictory constraints. Passing JSON Schema’s outer shape checks does not prove that the declared form is internally consistent.
Requirement
Section titled “Requirement”A form requestedSchema is internally consistent: required names declared properties, enumNames match enum values, defaults lie within enums, and minimum bounds do not exceed maximum bounds.
Details
Section titled “Details”Rule ID: mcpdesc.elicitation.form-schema.consistency
Owner: mcpdesc
Surface: Elicitation Declaration · Path: requestedSchema
Kind: mcpdesc-semantic
Requirement level: must
Protocol versions: independent of the MCP protocol version
Status: internal · Enforcement: internal
Required by
Section titled “Required by”- MCP Description 0.9.0, Section 12.3
- 12. Elicitation Declarations: req-elicitation-form-required
-
- Elicitation Declarations: req-elicitation-form-enum-names
-
- Elicitation Declarations: req-elicitation-form-defaults
-
- Elicitation Declarations: req-elicitation-form-ranges
Based on
Section titled “Based on”- Tier 1 — MCP schema.ts and normative specification text: MCP 2025-06-18 to 2026-07-28 schema.ts, PrimitiveSchemaDefinition and EnumSchema (enumNames are display names for enum values)
- validation/mcp-schemas/2025-06-18/schema.ts#L1479-L1486
- validation/mcp-schemas/2025-11-25/schema.ts#L2228-L2235
- validation/mcp-schemas/2026-07-28/schema.ts#L2861-L2868
- validation/mcp-schemas/2025-06-18/schema.ts#L1527-L1536
- validation/mcp-schemas/2025-11-25/schema.ts#L2463-L2464
- validation/mcp-schemas/2026-07-28/schema.ts#L3117-L3118
Examples
Section titled “Examples”Valid example
Section titled “Valid example”Source: expected-valid/elicitation-declarations.json · Selected: /tools/0/elicitations
[ { "name": "choose_assignee", "mode": "form", "message": "Who should own this issue?", "requestedSchema": { "type": "object", "properties": { "assignee": { "type": "string", "title": "Assignee", "minLength": 1 } }, "required": [ "assignee" ] } }, { "name": "authorize_tracker", "mode": "url", "message": "Authorize access to the issue tracker.", "when": "The current authorization grant is insufficient.", "url": "https://auth.example.com/authorize", "protocolVersions": [ "2025-11-25", "2026-07-28" ] }, { "name": "choose_labels", "mode": "form", "message": "Choose labels for this issue.", "requestedSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "labels": { "type": "array", "title": "Labels", "items": { "type": "string", "enum": [ "bug", "feature" ] }, "default": [ "bug" ] } } }, "protocolVersions": [ "2025-11-25", "2026-07-28" ] }]Invalid example
Section titled “Invalid example”Source: expected-invalid/elicitation-form-semantics.json · Selected: /prompts/0/elicitations/0/requestedSchema/required
[ "missing"]Invalid example
Section titled “Invalid example”Source: expected-invalid/elicitation-form-invalid-range.json · Selected: /prompts/0/elicitations/0/requestedSchema/properties/count
{ "type": "integer", "minimum": 10, "maximum": 1}Rule Source Code
Section titled “Rule Source Code”elicitation.yaml at immutable tag v0.9.0-rc.3.