In MCP 2026-07-28, sampling, elicitation, and roots responses are closed input responses rather than open results. Remove undefined fields; _meta is defined only for the sampling response. Earlier versions’ open-result behavior does not carry forward to these types.
Requirement
Section titled “Requirement”In MCP 2026-07-28, sampling, elicitation, and roots responses are input responses, not results, and accept only the fields their types define.
Details
Section titled “Details”Rule ID: mcp.input-response.closed
Owner: mcp
Surface: InputResponse
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 | not-applicable | not-applicable | applies |
Required by
Section titled “Required by”- MCP Description 0.9.0, Sections 3.6 and 9.4
- 3. Document Structure: req-carried-closed-reject
Based on
Section titled “Based on”- Tier 1 — MCP schema.ts and normative specification text: MCP 2026-07-28 schema.ts, type InputResponse (CreateMessageResult, ListRootsResult, ElicitResult); none extends Result; only CreateMessageResult defines _meta, through SamplingMessage
Examples
Section titled “Examples”Invalid example
Section titled “Invalid example”Source: expected-invalid/closed-step-responses-2026.json · Selected: /tools/0/interactionExamples/approved/steps/0/response
{ "roots": [ { "uri": "file:///workspace/example" } ], "_meta": { "trace": "r1" }}Rule Source Code
Section titled “Rule Source Code”result.yaml at immutable tag v0.9.0-rc.3.