Skip to main content
Context is what makes the ledger queryable. Every event carries the same optional metadata object, and its context fields are the identifiers the dashboard aggregates by — the dimensions you tag are exactly the ones you can later slice cost and usage by.
The shape is identical whether an event comes from an SDK wrapper, a wrapped tool, or manual capture.

Context fields

Context fields are the built-in dimensions. All are optional strings whose meaning is defined by your application:
Set the fields that match your product’s shape — a chat product benefits from threadId and userId; a multi-agent system from agentId and agentGroupId. Events tagged with these light up the dimension pages in the dashboard; events without them still record, but cannot be sliced by that dimension.

Custom properties

additionalProperties holds your own dimensions as string or number values — release tags, environment names, experiment arms:

Where metadata goes

The same metadata object — traceId, context, and additionalProperties — attaches the same way from every capture path:
Pass a carbon field in the call arguments. The wrapper strips it before the request reaches the provider.
To correlate the events of one logical operation — an agent run, a request, a job — give them a shared traceId. See Traces.