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
| Part | Purpose |
|---|---|
| Token accounting | Four buckets, because two misreport cost |
| Extended thinking | Thinking captured separately from the answer |
| Tool use & MCP correlation | Links a tool call to the turn that requested it |
| Session & request context | Grouping, agent identity, stop reason |
| Redaction | Structure-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 identityparent_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 redactionRedacted 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.