Accepted trace schemas¶
Upload agent execution traces in any of the five formats below. Trace uploads are currently available on Agent Legal API. Your description and traces are assessed together through the normal assessment flow; processing continues after submission.
Supported formats¶
| Format | Accepted structure | Required trace fields |
|---|---|---|
| Native timeline 1.0 | One trace object, an array of traces, or {"traces": [...]} |
schema_version: "1.0", string call_id, and a non-empty timeline. Each event needs numeric t in seconds and a supported type. |
| OpenTelemetry OTLP JSON | resourceSpans[].scopeSpans[].spans[] |
Each span needs name, a non-zero 32-character hexadecimal traceId, a non-zero 16-character hexadecimal spanId, and startTimeUnixNano / endTimeUnixNano. |
| LangSmith run export | One run, an array, a runs envelope, or JSONL/NDJSON. Nested child_runs are supported. |
String id, run_type, and ISO-8601 start_time. Include trace_id, or the complete parent run chain when using parent_run_id. |
| Zipkin v2 JSON | An array of span objects | name, non-zero hexadecimal traceId (16 or 32 characters), id (16 characters), and integer timestamp / duration in microseconds. |
| Jaeger query JSON export | {"data": [{"traceID": "...", "spans": [...]}]} |
Each span needs operationName, non-zero hexadecimal traceID (32 characters), spanID (16 characters), and integer startTime / duration in microseconds. |
Original files and vendor-specific fields are retained. Standard-format spans can also be retrieved as native timeline 1.0 records for assessment.
Native timeline 1.0¶
Use this format if you are producing traces directly. Download the machine-readable JSON Schema to validate your files before uploading.
{
"schema_version": "1.0",
"call_id": "support-run-1",
"started_at": "2026-11-05T09:00:00Z",
"duration_s": 4,
"timeline": [
{"t": 0, "type": "message", "speaker": "caller", "text": "Can I return my order?"},
{
"t": 1,
"type": "tool_call",
"agent": "support",
"tool": "get_return_policy",
"arguments": {},
"result": {"return_window_days": 14}
},
{"t": 2, "type": "handoff", "from": "support", "to": "returns"},
{"t": 4, "type": "message", "speaker": "agent", "text": "When was your order delivered?"}
]
}
Event types¶
Every event requires t, a non-negative number of seconds from the start of
the trace, and type. Events must appear in chronological order; equal times
are allowed.
| Event type | Additional required fields |
|---|---|
message |
String text and speaker: agent, caller, user, assistant, system, or tool. |
tool_call |
Non-empty string tool and object arguments. Include result when available. |
handoff |
Non-empty strings from and to. |
span |
Non-empty string name. Used for imported execution spans. |
event |
Non-empty string name. Used for other named execution events. |
Optional metadata and compatibility¶
You can include task, industry, model, caller, usage, checks, database-change,
and other metadata. Benchmark-specific fields are not required. Supplied
duration_s must be non-negative and include every event time; started_at
must be an ISO-8601 date and time with a timezone.
Existing unversioned MIVAS-style timelines are accepted as legacy native 1.0.
New integrations should include schema_version: "1.0". Unsupported native
schema versions are rejected.
Examples to download¶
File limits¶
- Use UTF-8
.json,.jsonl, or.ndjsonfiles. JSONL/NDJSON must contain one JSON object per non-empty line. - Upload up to 20 files, 10 MiB per file, and 50 MiB total.
- Each file can contain up to 100,000 spans or timeline events.
- Span IDs must be unique within each trace; LangSmith run IDs must be unique within a file.
- Numbers must be finite.
NaN,Infinity, negative event times, and reversed span time ranges are rejected.
This upload endpoint accepts JSON file exports. OTLP protobuf, compressed archives, CSV, Parquet, and live collector streams are not supported.
Fixing an upload error¶
If validation fails, check that the file uses one of the structures above and
contains all required fields. Native validation errors identify the trace and
field or event, such as traces[0].timeline.0. Check timestamp units carefully:
native timelines use seconds, OTLP uses nanoseconds, and Zipkin/Jaeger use
microseconds. Remove byte-identical duplicate files from the same submission.
Before submitting, remove credentials and personal data you do not want retained as assessment evidence.
For submission requests, trace retrieval, and mapper results, see Trace evidence uploads in the API guide.