The _meta Field
Object types that define a _meta field can use it to attach custom information
with type { [key: string]: unknown }. This includes many requests, responses,
notifications, and nested types such as content blocks, tool calls, plan
entries, and capability objects. Not every protocol type defines _meta; for
example, the Error object does not.
requestId. The following root-level keys in _meta SHOULD be reserved for W3C trace context to guarantee interop with existing MCP implementations and OpenTelemetry tooling:
traceparenttracestatebaggage
Extension Methods
The protocol reserves any method name starting with an underscore (_) for custom extensions. This allows implementations to add new functionality without the risk of conflicting with future protocol versions.
Extension methods follow standard JSON-RPC 2.0 semantics:
- Requests - Include an
idfield and expect a response - Notifications - Omit the
idfield and are one-way
Custom Requests
In addition to the requests specified by the protocol, implementations MAY expose and call custom JSON-RPC requests as long as their name starts with an underscore (_).
id:
Custom Notifications
Custom notifications are regular JSON-RPC notifications that start with an underscore (_). Like all notifications, they omit the id field:
Advertising Custom Capabilities
Implementations SHOULD use the_meta field in capability objects to advertise support for extensions and their methods: