Skip to content
{mcpdesc}

Preserve fields on open results with a warning

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.

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.

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

2024-11-05 2025-03-26 2025-06-18 2025-11-25 2026-07-28
applies applies applies applies applies

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).

Source: expected-warning/open-result-unknown-properties.json · Selected: /tools/0/examples/traced/result

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

Source: expected-warning/open-results-shared-across-protocol-versions.json · Selected: /prompts/0/examples/default/result

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

Source: expected-warning/open-step-responses-before-2026.json · Selected: /tools/0/interactionExamples/approved/steps/0/response

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

Source: expected-warning/component-protocol-scope.json · Selected: /components/resourceExamples/current/result

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

result.yaml at immutable tag v0.9.0-rc.3.