otlphttpexporter straight at the engine - no AgentX SDK needed:
Wire formats
Attribute conventions
Each incoming span becomes one trace row, withinput/output/model/token counts pulled
from whichever convention the instrumentation actually sends:
Monitor runs against every OTel-ingested span by default; set
AGENTX_OTEL_MONITOR=false to
turn that off.
First-class citizenship
Three attributes make OTel traffic part of the full loop, not just rows in Live Traces:- Sessions - set
session.id,gen_ai.conversation.id, oragentx.session_idand traces group into conversations on the Sessions surface, with session judging applying exactly like SDK traffic. Without one, spans still group by OTel trace id. - Prompt identity - set
agentx.prompt_name(and optionallyagentx.version) and the whole Improve loop lights up: prompt-registry evidence gathering and version comparison treat the trace as if the SDK had tagged it. - Tool calls - a child span carrying
gen_ai.tool.name(or an MLflowTOOL-typed span) is folded up into its root interaction’stool_calls, withsuccess/errorderived from span status - so Tool quality, the built-in Tool-failure check, and Tool Schema evidence all work on OTel traffic. In-batch only: a parent exported in an earlier OTLP batch isn’t updated retroactively.

