A recognized reserved metadata key has a specific context and value shape. A key valid on one message or object may be invalid on another. Check the containing object and protocol version rather than moving the same key unchanged into every _meta object.
Requirement
Section titled “Requirement”A reserved _meta key appears only in the message context, and with the value, that the MCP protocol version defines for it.
Details
Section titled “Details”Rule ID: mcp.meta.reserved-key-context
Owner: mcp
Surface: _meta
Kind: 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 |
|---|---|---|---|---|
| not-applicable | not-applicable | applies | applies | applies |
Required by
Section titled “Required by”- MCP Description 0.9.0, Section 3.5
- 3. Document Structure: req-meta-keys
Based on
Section titled “Based on”- Tier 1 — MCP schema.ts and normative specification text: MCP 2025-06-18 to 2026-07-28 specification, Basic, General fields, _meta (reserved keys and where they apply)
- https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/docs/specification/2025-06-18/basic/index.mdx#L123-L147
- https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/docs/specification/2025-11-25/basic/index.mdx#L190-L215
- https://github.com/modelcontextprotocol/modelcontextprotocol/blob/dae694f61a31f7a3ec2af3aff709e11f70f61e48/docs/specification/2026-07-28/basic/index.mdx#L322-L446
Checked on declarations and on every carried value: example results, their content, interaction step responses, and roots. MCP 2024-11-05 and 2025-03-26 do not define reserved keys; Section 16.2 limits validation for those protocol versions.
Examples
Section titled “Examples”Invalid example
Section titled “Invalid example”Source: expected-invalid/meta-reserved-key-misuse.json · Selected: /tools/0/_meta
{ "progressToken": "request-only"}Invalid example
Section titled “Invalid example”Source: expected-invalid/meta-reserved-keys-in-carried-values.json · Selected: /prompts/0/completionExamples/request-key-in-result/result/_meta
{ "progressToken": "c1"}Rule Source Code
Section titled “Rule Source Code”result.yaml at immutable tag v0.9.0-rc.3.