Telemetry export
Sending tool-call spans to your own OpenTelemetry collector.
Omniio emits OpenTelemetry spans for MCP tool invocations and the upstream
network call inside a run_tool. The service name is omniio.
Span shape#
Every billable MCP call creates a span named for the public tool:
mcp search_toolsmcp describe_toolmcp run_tool└── mcp upstream callThe nested upstream span exists only for a call that reaches a server. Its duration separates provider latency from catalogue lookup, policy, approval and credential work performed in the gateway.
- rpc.systemmcp
- The protocol carrying the operation.
- rpc.methodtools/call
- The MCP JSON-RPC method.
- mcp.method.namestring
- `search_tools`, `describe_tool`, or `run_tool`.
- omniio.user.idstring
- The account making the call.
- omniio.client.idstring
- Present when the MCP connection has an attributed client ID.
The upstream child adds mcp.tool.name, mcp.server.name,
omniio.server.slug, and omniio.tool.qualified_name.
Thrown errors are recorded as span exceptions. Returned failures—such as an
upstream MCP error or a quota refusal—also set an error status even though the
gateway returned them normally. Burst and monthly refusals add
omniio.refused: burst or quota.
Continue the caller's trace#
Clients implementing the 2026-07-28 MCP tracing revision can put W3C context in
the individual request's _meta object:
{ "_meta": { "traceparent": "00-4bf92f3577b34da6a3ce929d0e0e4736-00f067aa0ba902b7-01", "tracestate": "vendor=value", "baggage": "tenant=acme" }}Omniio strictly accepts version 00, lowercase hexadecimal IDs, non-zero trace
and parent IDs, up to 512 characters of tracestate, and up to 8,192 characters
of baggage. A missing or malformed traceparent is ignored and the gateway
uses its ambient request trace instead.
The context is read per JSON-RPC call rather than from the shared HTTP request, so several calls multiplexed through one Streamable HTTP connection do not become siblings by accident.
Export configuration#
Tracing is registered at deployment start through @vercel/otel. On Vercel, a
project tracing integration receives the spans automatically. In another
deployment, the same SDK can use the standard OTLP exporter environment
configuration supported by @vercel/otel.
Activity and signed webhooks remain the account-scoped ways to export stored tool-call facts. Telemetry is for latency and distributed tracing; it is not the retained audit record.
Next: Errors.