Span specification v0.1

An OpenInference extension carrying the Claude semantics needed to make agent traces debuggable, cost-accurate, and attributable.

The SouthBase span specification extends OpenInference with the Claude/Anthropic semantics needed to make agent traces debuggable, cost-accurate, and attributable.

It is an extension we publish, not a lock-in. It rides on OpenTelemetry, so your data stays portable by construction — point the same instrumentation at any OTLP backend and it keeps working.

The machine-readable source of truth is agent/spec in the open-source agent. These pages explain the why.

The five parts

PartPurpose
Token accountingFour buckets, because two misreport cost
Extended thinkingThinking captured separately from the answer
Tool use & MCP correlationLinks a tool call to the turn that requested it
Session & request contextGrouping, agent identity, stop reason
RedactionStructure-preserving masking at the edge

Tool use and MCP correlation

anthropic.tool_use.id                tool_use id from the assistant turn
anthropic.tool_use.name              tool name
anthropic.tool_use.parent_span_id    span id of the turn that REQUESTED this call
anthropic.mcp.server                 MCP server identity
anthropic.mcp.tool                   MCP-qualified tool identity

parent_span_id is deliberately distinct from the OpenTelemetry parent. A tool span may be re-parented for display, but its causal origin must not move. Without that link, a failure can only be attributed to "the run"; with it, to a specific step.

Extended thinking

anthropic.thinking.content   thinking text, separate from the final answer
anthropic.thinking.tokens    thinking tokens (already counted in output_tokens)

Thinking is captured separately so evaluation can reason over the model's process without a judge scoring the scratchpad as though it were the response.

Redaction

southbase.redacted.fields    keys whose values were redacted
southbase.redacted.policy    policy version that performed the redaction

Redacted values become the sentinel [REDACTED]. Redaction preserves structure — a redacted field is replaced and named, never deleted, because deterministic replay needs to know the field existed and what shape it had. See redaction.

Stability

v0.1 is not yet stable. Additive changes are cheap; renames require a version bump and a migration note. Every span carries southbase.spec.version, so a consumer never has to guess which shape it is looking at.

On this page