Export project traces as OTLP/JSON
Returns an OTLP ExportTraceServiceRequest. Pagination rides in RESPONSE HEADERS rather than the body so the payload stays a valid OTLP document: read x-mcpjam-next-cursor and feed it back as cursor, and treat x-mcpjam-export-complete: true as the end of the stream.
The OTLP body carries no session DTO, so x-mcpjam-api-vocabulary: 2 changes nothing this route emits — it widens what sourceTypes accepts, so a caller can filter by the spelling its other reads answer with.
Query parameters
Comma-separated source filter.
Include message/tool payloads, which may contain sensitive data.
Headers
Which spelling of the API's resource-noun VALUES this request and its response speak. Absent means 1, byte-for-byte today's contract. 2 is the canonical vocabulary. Any other value is a 400 with code: "VALIDATION_ERROR".
Three nouns were renamed at this boundary — scenario → study, journey → goal, wave → swarm run. Operation names, routes, type names and field names each moved behind a deprecated alias, because a caller reaches them by a name it chose. A VALUE cannot: sourceType is one field with one string in it, and a client switching on "scenario" has no second name to fall back to. Under vocabulary 2 a session’s sourceType reads study, a share’s resourceType reads study, and a session’s parentRef.kind reads study or goalRun with its id fields re-keyed to match.
On the way IN, a vocabulary-2 request may name a filter or a path segment by EITHER spelling; a vocabulary-1 request may use only the legacy one, because a boundary that accepts a spelling it does not announce is one two implementations can disagree about.
A response that varies by vocabulary sends Vary: x-mcpjam-api-vocabulary. A SEPARATE header from x-mcpjam-eval-vocabulary, which is eval-scoped by name and moves on its own schedule.
Response
A page of spans in OTLP/JSON form.