Skip to main content
Ultra records a trace record for every MCP operation. Traces capture the full lifecycle of a request — what was called, what arguments were sent, what came back, and how long it took.

Trace Record Structure

Each trace record contains:
FieldTypeDescription
idstringUnique record identifier
trace_idstringOpenTelemetry trace ID (shared across related operations)
span_idstringOpenTelemetry span ID (unique to this operation)
parent_span_idstringParent span for nested operations
operationstringOperation type (see below)
upstreamstringName of the upstream server that handled the request
namestringTool, resource, or prompt name
requestJSONFull request payload
responseJSONFull response payload
statusstring"success" or "error"
errorstringError message (if status is error)
durationdurationHow long the operation took (nanoseconds)
timestampdatetimeWhen the operation occurred
metadatamapAdditional key-value metadata

Multi-Tenant Fields

When connected to Ultra Hub, traces also include:
FieldDescription
workspace_idWorkspace this gateway belongs to
gateway_idThis gateway’s unique identifier

Operation Types

TypeDescription
tool_callAn MCP tool was invoked
resource_readAn MCP resource was read
prompt_getAn MCP prompt was retrieved
tool_listClient listed available tools
resource_listClient listed available resources
prompt_listClient listed available prompts

Querying Traces

Traces are stored in SQLite and can be queried through the dashboard or programmatically through the storage interface.

Dashboard

ultra dashboard
The dashboard at http://localhost:8080 provides:
  • A list of all traces, sorted by timestamp
  • Filtering by operation type, upstream server, status, and time range
  • Full request/response payload inspection for each trace
  • Duration and status breakdown

Aggregate Statistics

The storage layer computes aggregate statistics over traces:
  • Total requests — Count of all operations
  • Success/error counts — How many succeeded vs failed
  • Average duration — Mean operation time
  • Requests by type — Breakdown by operation type
  • Requests by server — Breakdown by upstream server

OpenTelemetry Compatibility

Trace IDs and span IDs follow the W3C Trace Context specification, making Ultra traces compatible with any OpenTelemetry-compatible backend. See OTLP Export for configuration.