Skip to content

Commit 13d18e0

Browse files
docs(rfd): Draft: Meta Field Propagation Conventions (#276)
* RFD Draft: Meta Field Propagation Conventions Document `params._meta` as the convention for propagating metadata from clients to agents, such as trace identifiers or correlation IDs. This aligns with MCP, enabling shared instrumentation since both protocols use stdio JSON-RPC transports. * Use SHOULD language for W3C trace context keys Reserves traceparent, tracestate, and baggage using SHOULD rather than MUST. Allows ecosystem adoption without a protocol version change while protecting keys existing tooling depends on. * Add ben as champion, and add to website * Add ben as champion, and add to website --------- Co-authored-by: Ben Brandt <[email protected]>
1 parent 13c386b commit 13d18e0

File tree

3 files changed

+74
-1
lines changed

3 files changed

+74
-1
lines changed

docs/docs.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,8 @@
9696
"rfds/session-config-options",
9797
"rfds/session-fork",
9898
"rfds/request-cancellation",
99-
"rfds/session-resume"
99+
"rfds/session-resume",
100+
"rfds/meta-propagation"
100101
]
101102
},
102103
{ "group": "Preview", "pages": [] },

docs/rfds/meta-propagation.mdx

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
---
2+
title: "Meta Field Propagation Conventions"
3+
---
4+
5+
- Author(s): [Adrian Cole](https://github.com/codefromthecrypt)
6+
- Champion: [@benbrandt](https://github.com/benbrandt)
7+
8+
## Elevator pitch
9+
10+
Document `params._meta` as the convention for propagating metadata from clients to agents, such as trace identifiers or correlation IDs. This aligns with [MCP](https://modelcontextprotocol.io/), enabling shared instrumentation since both protocols use stdio JSON-RPC transports.
11+
12+
## Status quo
13+
14+
ACP clients already propagate context to agents via `_meta`. For example, `requestId` is used for request correlation in [AionUi](https://github.com/iOfficeAI/AionUi/blob/main/src/common/codex/types/eventData.ts#L12-L16).
15+
16+
However, the [extensibility](../protocol/extensibility) documentation does not specify the `_meta` type or document its use for propagation. Without documentation, parties must coordinate ad hoc, which can lead to portability accidents (such as one side using `_meta.traceparent` and the other `_meta.otel.traceparent`). Documenting that propagated fields are root keys in `_meta` prevents this.
17+
18+
## What we propose to do about it
19+
20+
Update the [extensibility](../protocol/extensibility#the-_meta-field) documentation with two changes:
21+
22+
1. Add the type `{ [key: string]: unknown }` to the existing summary sentence. This type is compatible with MCP SDKs.
23+
2. Add a new paragraph after the JSON example about propagation conventions.
24+
25+
## Shiny future
26+
27+
- Same instrumentation (OpenInference, etc.) works for both ACP and MCP.
28+
- Observability tools can correlate traces across protocols.
29+
30+
## Implementation details
31+
32+
**Change 1**: Update the existing summary sentence in [extensibility](../protocol/extensibility#the-_meta-field):
33+
34+
```diff
35+
-All types in the protocol include a `_meta` field that implementations can use to attach custom information.
36+
+All types in the protocol include a `_meta` field with type `{ [key: string]: unknown }` that implementations can use to attach custom information.
37+
```
38+
39+
**Change 2**: After the JSON example, before "Implementations **MUST NOT**", add:
40+
41+
> Clients may propagate fields to the agent for correlation purposes, such as `requestId`. The following root-level keys in `_meta` **SHOULD** be reserved for [W3C trace context](https://www.w3.org/TR/trace-context/) to guarantee interop with existing MCP implementations and OpenTelemetry tooling:
42+
>
43+
> - `traceparent`
44+
> - `tracestate`
45+
> - `baggage`
46+
47+
## FAQ
48+
49+
### Why document this now?
50+
51+
Clients already propagate context via `_meta`. Documenting prevents incompatible drift and enables shared tooling with MCP.
52+
53+
### Why reference MCP?
54+
55+
ACP and MCP are the two core agentic protocols, both using stdio JSON-RPC. Where `_meta` types are compatible, instrumentation code can be abstracted and reused for both:
56+
57+
Here are several MCP SDKs that propagate W3C trace-context in `_meta`:
58+
59+
- [MCP C# SDK](https://github.com/modelcontextprotocol/csharp-sdk) - native W3C trace-context propagation
60+
- [OpenInference](https://github.com/Arize-ai/openinference) - Python and TypeScript MCP instrumentation (collaboration between Arize and Elastic)
61+
- [curioswitch/mcp-go-sdk-otel](https://github.com/curioswitch/mcp-go-sdk-otel) - Go MCP instrumentation
62+
63+
## Revision history
64+
65+
- 2025-11-28: Initial draft

docs/updates.mdx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ description: Updates and announcements about the Agent Client Protocol
44
rss: true
55
---
66

7+
<Update label="December 3, 2025" tags={["RFD"]}>
8+
## _meta Propagation RFD moves to Draft stage
9+
10+
The RFD for providing more guidance on how the `_meta` parameter should be used within the protocol has been moved to Draft stage. Please review the [RFD](./rfds/meta-propagation) for more information on the current proposal and provide feedback as work on the implementation begins.
11+
12+
</Update>
13+
714
<Update label="November 26, 2025" tags={["RFD"]}>
815
## session/resume RFD moves to Draft stage
916

0 commit comments

Comments
 (0)