﻿---
title: "Preserve fields on open results with a warning"
description: "An open MCP result can carry fields that its protocol version does not define. Those values are preserved without assigning them later-version meaning, and a warning identifies the"
source: "https://mcpdesc.org/docs/rules/0.9.0-rc.3/mcp/result-additional-properties-preserve/"
---

An open MCP result can carry fields that its protocol version does not define. Those values are preserved without assigning them later-version meaning, and a warning identifies the affected version. Review the field or split protocol variants if the warning is not intended.

## Requirement

A field that an open MCP result type allows but the MCP protocol version does not define is accepted and preserved without meaning, with a warning attributed to that protocol version.

## Details

**Rule ID:** `mcp.result.additional-properties.preserve`  
**Owner:** mcp  
**Surface:** Result  
**Kind:** preservation  
**Requirement level:** may  
**Status:** internal · **Enforcement:** internal

## 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

* **MCP Description 0.9.0, Section 3.6 (Carried MCP Values)**  
  * 3\. Document Structure: [req-carried-open-preserve](https://mcpdesc.org/docs/specification/0.9.0-rc.3/document-structure#req-carried-open-preserve)

## Based on

* **Tier 1 — MCP schema.ts and normative specification text:** MCP 2024-11-05 to 2026-07-28 schema.ts, interface Result (index signature \[key: string\]: unknown, inherited by every result type)  
  * [validation/mcp-schemas/2024-11-05/schema.ts#L42-L48](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/schema/2024-11-05/schema.ts#L42-L48)
  * [validation/mcp-schemas/2025-03-26/schema.ts#L61-L67](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/schema/2025-03-26/schema.ts#L61-L67)
  * [validation/mcp-schemas/2025-06-18/schema.ts#L60-L69](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/schema/2025-06-18/schema.ts#L60-L69)
  * [validation/mcp-schemas/2025-11-25/schema.ts#L88-L97](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/schema/2025-11-25/schema.ts#L88-L97)
  * [validation/mcp-schemas/2026-07-28/schema.ts#L218-L236](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/schema/2026-07-28/schema.ts#L218-L236)
* **Tier 1 — MCP schema.ts and normative specification text:** MCP 2024-11-05 to 2025-11-25 schema.ts, CreateMessageResult, ElicitResult, and ListRootsResult extend Result  
  * [validation/mcp-schemas/2024-11-05/schema.ts#L793-L805](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/schema/2024-11-05/schema.ts#L793-L805)
  * [validation/mcp-schemas/2025-03-26/schema.ts#L899-L911](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/schema/2025-03-26/schema.ts#L899-L911)
  * [validation/mcp-schemas/2025-06-18/schema.ts#L1067-L1081](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/schema/2025-06-18/schema.ts#L1067-L1081)
  * [validation/mcp-schemas/2025-11-25/schema.ts#L1649-L1674](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/schema/2025-11-25/schema.ts#L1649-L1674)
  * [validation/mcp-schemas/2025-06-18/schema.ts#L1538-L1557](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/schema/2025-06-18/schema.ts#L1538-L1557)
  * [validation/mcp-schemas/2025-11-25/schema.ts#L2466-L2486](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/schema/2025-11-25/schema.ts#L2466-L2486)
  * [validation/mcp-schemas/2024-11-05/schema.ts#L1032-L1039](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/schema/2024-11-05/schema.ts#L1032-L1039)
  * [validation/mcp-schemas/2025-03-26/schema.ts#L1173-L1180](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/schema/2025-03-26/schema.ts#L1173-L1180)
  * [validation/mcp-schemas/2025-06-18/schema.ts#L1404-L1413](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/schema/2025-06-18/schema.ts#L1404-L1413)
  * [validation/mcp-schemas/2025-11-25/schema.ts#L2100-L2109](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/schema/2025-11-25/schema.ts#L2100-L2109)

## Notes

The warnings of this rule for a document equal the union of its warnings for each protocol-version-specific Effective Protocol View (scripts/test-views.mjs).

## Examples

### Accepted with a warning

Source: [expected-warning/open-result-unknown-properties.json](https://github.com/mcpdesc/mcpdesc-specification/blob/v0.9.0-rc.3/spec/draft/fixtures/expected-warning/open-result-unknown-properties.json) · Selected: `/tools/0/examples/traced/result`

```json
{
  "content": [
    {
      "type": "text",
      "text": "found"
    }
  ],
  "vendorTrace": {
    "id": "a1"
  }
}
```

### Accepted with a warning

Source: [expected-warning/open-results-shared-across-protocol-versions.json](https://github.com/mcpdesc/mcpdesc-specification/blob/v0.9.0-rc.3/spec/draft/fixtures/expected-warning/open-results-shared-across-protocol-versions.json) · Selected: `/prompts/0/examples/default/result`

```json
{
  "resultType": "complete",
  "messages": [
    {
      "role": "assistant",
      "content": {
        "type": "text",
        "text": "Hello."
      }
    }
  ]
}
```

### Accepted with a warning

Source: [expected-warning/open-step-responses-before-2026.json](https://github.com/mcpdesc/mcpdesc-specification/blob/v0.9.0-rc.3/spec/draft/fixtures/expected-warning/open-step-responses-before-2026.json) · Selected: `/tools/0/interactionExamples/approved/steps/0/response`

```json
{
  "roots": [
    {
      "uri": "file:///workspace/example",
      "_meta": {
        "trace": "root1"
      }
    }
  ],
  "_meta": {
    "trace": "r1"
  },
  "acmeTrace": {
    "id": "a1"
  }
}
```

### Accepted with a warning

Source: [expected-warning/component-protocol-scope.json](https://github.com/mcpdesc/mcpdesc-specification/blob/v0.9.0-rc.3/spec/draft/fixtures/expected-warning/component-protocol-scope.json) · Selected: `/components/resourceExamples/current/result`

```json
{
  "resultType": "complete",
  "ttlMs": 60,
  "cacheScope": "private",
  "contents": [
    {
      "uri": "data://status",
      "text": "ready"
    }
  ]
}
```

## Rule Source Code

[result.yaml](https://github.com/mcpdesc/mcpdesc-specification/blob/v0.9.0-rc.3/spec/draft/validation/rules/result.yaml) at immutable tag [v0.9.0-rc.3](https://github.com/mcpdesc/mcpdesc-specification/blob/v0.9.0-rc.3/spec/draft).
