Skip to content
{mcpdesc}

Match example results to every applicable version

A completed example result must contain the fields each applicable MCP protocol version requires, with valid values. Check the result’s full effective scope, not only the newest version. Fields permitted but undefined on open result types are handled separately as warnings.

An example result contains every field that each applicable MCP protocol version requires, and every field a protocol version defines has a valid value.

Rule ID: mcpdesc.example.result.protocol-fidelity
Owner: mcpdesc
Surface: Example result
Kind: mcpdesc-semantic
Requirement level: Not specified in the rule record
Status: internal · Enforcement: internal

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

Fields an MCP protocol version does not define are governed by mcp.result.additional-properties.preserve (accepted with a warning). When present, resultType must be “complete”, ttlMs non-negative, and cacheScope “public” or “private” in every applicable protocol version (document schema).

Source: expected-valid/named-tool-examples.json · Selected: /tools/0/examples

{
"paris.complete": {
"input": {
"city": "Paris"
},
"result": {
"resultType": "complete",
"content": [
{
"type": "text",
"text": "Paris: 21.5 C"
},
{
"type": "image",
"data": "aW1hZ2U=",
"mimeType": "image/png"
},
{
"type": "audio",
"data": "YXVkaW8=",
"mimeType": "audio/wav"
},
{
"type": "resource",
"resource": {
"uri": "weather://paris/report",
"mimeType": "text/plain",
"text": "Clear"
}
},
{
"type": "resource_link",
"uri": "weather://paris/map",
"name": "Paris map",
"mimeType": "image/png"
}
],
"structuredContent": {
"temperature": 21.5
},
"isError": false
}
}
}

Source: expected-valid/named-resource-examples.json · Selected: /resources/0/examples

{
"two-files": {
"result": {
"contents": [
{
"uri": "file:///project/src/",
"mimeType": "inode/directory",
"text": "main.rs\nlib.rs\n"
},
{
"uri": "file:///project/src/main.rs",
"mimeType": "text/x-rust",
"text": "fn main() {}\n",
"_meta": {
"captured": true
}
},
{
"uri": "file:///project/src/lib.rs",
"mimeType": "text/x-rust",
"text": "pub fn answer() -> u8 { 42 }\n"
}
],
"_meta": {
"snapshot": "example"
}
}
}
}

Source: expected-warning/legacy-result-meta.json · Selected: /resources/0/examples/with-result-meta/result

{
"contents": [
{
"uri": "test://legacy",
"text": "legacy"
}
],
"_meta": {
"trace": "r1"
}
}

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

{
"resultType": "complete",
"content": [
{
"type": "text",
"text": "Paris: 18 C"
}
]
}

Source: expected-invalid/invalid-prompt-example-semantics.json · Selected: /prompts/0/examples/unknown-and-missing/result

{
"messages": [
{
"role": "user",
"content": {
"type": "text",
"text": "Summarize Paris."
}
}
]
}

Source: expected-invalid/invalid-completion-example-semantics.json · Selected: /prompts/3/completionExamples/missing-result-type/result

{
"completion": {
"values": [
"Ada"
],
"hasMore": false
}
}

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