A Tool’s elicitation step must agree with the named elicitation declaration and its requested form. Accepted form content must satisfy that schema, while declined or cancelled responses have different content rules. Check the reference, request, and response together.
Requirement
Section titled “Requirement”An elicitation step matches the Tool’s named Elicitation Declaration, and its response content is present exactly when an accepted form response requires it and validates against the requested schema.
Details
Section titled “Details”Rule ID: mcpdesc.tool.interaction.elicitation-consistency
Owner: mcpdesc
Surface: Tool interaction example · Path: steps
Kind: mcpdesc-semantic
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 |
|---|---|---|---|---|
| applies | applies | applies | applies | applies |
Required by
Section titled “Required by”- MCP Description 0.9.0, Section 9.4
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, interface ElicitResult, content (present for accepted form responses)
Examples
Section titled “Examples”Valid example
Section titled “Valid example”Source: expected-valid/named-tool-interaction-examples.json · Selected: /tools/0/interactionExamples
{ "approved-release": { "input": { "version": "2.0.0" }, "steps": [ { "type": "roots", "request": {}, "response": { "roots": [ { "uri": "file:///workspace/example", "name": "Example workspace" } ] } }, { "type": "sampling", "request": { "messages": [ { "role": "user", "content": { "type": "text", "text": "Summarize the release plan." } } ], "tools": [ { "name": "diff_summary", "description": "Summarize pending release changes.", "inputSchema": { "type": "object", "properties": { "branch": { "type": "string" } }, "required": [ "branch" ] } } ], "toolChoice": { "mode": "auto" }, "maxTokens": 180 }, "response": { "role": "assistant", "content": { "type": "text", "text": "Run smoke tests and confirm the changelog before publishing version 2.0.0." }, "model": "claude-3-sonnet-20240229", "stopReason": "endTurn" } }, { "type": "elicitation", "declaration": "confirm", "request": { "mode": "form", "message": "Approve this release?", "requestedSchema": { "type": "object", "properties": { "approved": { "type": "boolean" } }, "required": [ "approved" ] } }, "response": { "action": "accept", "content": { "approved": true } } } ], "result": { "content": [ { "type": "text", "text": "Release preparation completed." } ], "structuredContent": { "status": "prepared" } } }}Invalid example
Section titled “Invalid example”Source: expected-invalid/invalid-tool-interaction-example-semantics.json · Selected: /tools/0/interactionExamples/broken/steps/0
{ "type": "elicitation", "declaration": "missing", "request": { "mode": "url", "message": "Authorize publication.", "url": "https://mcp.example.com/release/connect" }, "response": { "action": "accept", "content": { "approved": true } }}Rule Source Code
Section titled “Rule Source Code”interaction.yaml at immutable tag v0.9.0-rc.3.