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:

text
mcp search_tools
mcp describe_tool
mcp run_tool
└── mcp upstream call

The 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:

json
{
"_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.

On this page