Skip to main content
The Operata MCP Server exposes nine tools over the Model Context Protocol (MCP). To connect a client and learn how authentication and groups work, start with the MCP overview, then follow Connect Claude, Connect Cursor, or Connect ChatGPT.
The Operata MCP Server is live and ready.However, as we ship new features, the tool surface and configuration may change, guided by the MCP specification and your feedback. Follow the changelog for updates.

Endpoints and authentication

The server offers two endpoints. Use OAuth when a person is connecting, and an API key for machine-to-machine integrations. For the full comparison, roles, and how to mint a key, see Choose how to connect and Authentication. The trace tools are schema-driven. Learn what data is available before you query it.
  1. list_groups and switch_group — select the group to query (OAuth sessions; API keys are already fixed to their group).
  2. get_schema — learn the services, column paths, query types, aggregate functions, and filter operators.
  3. traces_list — browse and filter traces by time range, span name, or duration.
  4. traces_query — run analytics: counts, averages, trends, rates, and facets.
  5. traces_get — drill into a single trace for the full span tree.
  6. traces_span_insights and traces_span_logs — deep diagnostics on one span.
  7. knowledge — documentation and troubleshooting guidance.

Tools

get_schema

Returns the complete data schema: available services, column paths, query types, aggregate functions, and filter operators. Call this tool first so the AI client constructs valid queries. Parameters
  • query_reason (string, optional) — your reason for requesting the schema.
Example - exploring the agent_interaction fields in the schema

knowledge

Retrieves information from the Operata knowledge base — Operata features, CX observability concepts, and troubleshooting guidance. Parameters
  • query (string, required) — your question about Operata features or concepts.
Example - asking how MOS score is calculated

list_groups

Lists the groups your authenticated account can access.
  • Over OAuth, this returns every group your Operata user can reach.
  • With an API key, it returns only the single group the key belongs to.
Each result includes groupId, groupName, and region. Parameters
  • None.
Example - listing the groups you can access

switch_group

Sets the active group for the session. Every later tool call uses this group unless you override it with a groupId parameter on the call. Parameters
  • groupId (string, required) — the group to switch to. Must be a group your account can access.
Example - switching to a specific group by ID
An API key can only reach the group it was created in. Calling switch_group with any other group on an API-key session returns 403 "API key access is restricted to its own group". Connect over OAuth to work across groups.

traces_list

Lists and searches traces with filtering, sorting, and cursor-based pagination. Returns trace summaries with metadata such as duration, span count, and status. Parameters
  • startTime (string, required) — ISO 8601 UTC start time.
  • endTime (string, required) — ISO 8601 UTC end time.
  • filters (array, optional) — filter objects, each a path plus an operator (eq, gt, lt, and so on).
  • sort (string, optional) — "asc" or "desc". Default "desc".
  • limit (integer, optional) — results per page, 1–1000. Default 100.
  • cursor (object, optional) — pagination cursor from a previous response.
  • groupId (string, optional) — group to query. Defaults to the active group you set with switch_group.
Available filter fields: SpanName, ServiceName, StatusCode, SpanKind, Duration.
Example - listing recent agent-interaction traces

traces_query

Executes analytical queries against trace data. Supports five query types, which you can combine in a single request. Each query specifies a key (a unique identifier) and a service. Parameters
  • startTime (string, required) — ISO 8601 UTC start time.
  • endTime (string, required) — ISO 8601 UTC end time.
  • queries (object, required) — an object containing arrays for each query type.
  • groupId (string, optional) — group to query. Defaults to the active group you set with switch_group.
Example - combining scalar and rate queries over May 2026

traces_get

Retrieves a single trace by ID in full OpenTelemetry JSON, with all spans and logs. Parameters
  • traceId (string, required) — the 32-character hex trace identifier.
  • includeInternal (boolean, optional) — include internal operata.* spans. Default false.
  • groupId (string, optional) — group to query. Defaults to the active group you set with switch_group.
Example - fetching one trace by ID

traces_span_insights

Returns the insights (detected issues and anomalies) associated with a specific span within a trace. Parameters
  • traceId (string, required) — the 32-character hex trace identifier.
  • spanId (string, required) — the 16-character hex span identifier.
  • groupId (string, optional) — group to query. Defaults to the active group you set with switch_group.
Insights resolve at the cx.telephony span of a trace. Pass a child span — the cx.interaction.agent span, for example — and you may get 404 "span not found" even though the span exists. Retrieve the trace with traces_get and use the cx.telephony span ID.
Example - getting insights for a span

traces_span_logs

Returns paginated logs for a specific span within a trace, such as softphone logs, CCP events, and other diagnostic records. Parameters
  • traceId (string, required) — the 32-character hex trace identifier.
  • spanId (string, required) — the 16-character hex span identifier.
  • limit (integer, optional) — max log records, 1–1000. Default 50.
  • cursor (object, optional) — pagination cursor from a previous response.
  • groupId (string, optional) — group to query. Defaults to the active group you set with switch_group.
Example - paging through a span's logs

Services

traces_query and the schema operate against four services. Each is one row per interaction at a different level of the customer journey.

Query types

A single traces_query request can combine any of these types.

Query construction

These constraints trip up generated queries most often:
  • Service selection drives the path convention. Use Attributes.cx.* for agent_interaction; use Attributes.* directly for journey_interaction.
  • Boolean fields such as had_agent, had_bot, and had_queue hold string values. Filter with "eq": "true", not boolean true.
  • You can’t use SpanName in traces_query filters. Use traces_list with a SpanName filter instead.
Call get_schema before building a complex query. Scope startTime/endTime to the narrowest range that meets your need, and combine query types in one traces_query call to minimize round-trips. Use cursor-based pagination on traces_list and traces_span_logs for large result sets.

Verify

Confirm the server is reachable and returning the full tool surface. This example uses the API key endpoint, since it authenticates with a single header. The OAuth endpoint uses an interactive sign-in that your MCP client handles.
The response lists all nine tools: get_schema, knowledge, list_groups, switch_group, traces_list, traces_query, traces_get, traces_span_insights, and traces_span_logs. For more curl checks, see Test the server with curl.