Skip to content

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 .ndjson files. 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.