| BACKEND_TYPE | Yes | Which observability backend to query. |
| BACKEND_URL | Yes | Backend API endpoint, e.g. http://localhost:16686 for Jaeger, https://api.datadoghq.com for Datadog, https://api.newrelic.com/graphql for New Relic, or https://api.honeycomb.io for Honeycomb. For the X-Ray backend this is decorative only (e.g. https://xray.us-east-1.amazonaws.com) - never dereferenced for a live request. |
| BACKEND_API_KEY | No | API key or auth token. Required for Traceloop, Datadog, Sentry, New Relic, and Honeycomb; not used by Jaeger, Tempo, or X-Ray. For New Relic this must be a User API key, not an Ingest or License key; for Honeycomb this must be a Configuration Key, not an Ingest or Management key. Secret. |
| BACKEND_AWS_REGION | No | AWS region, e.g. us-east-1. Required for the X-Ray backend only - X-Ray authenticates via boto3's standard AWS credential chain, not BACKEND_API_KEY. |
| BACKEND_NEWRELIC_ACCOUNT_ID | No | New Relic account ID, required for the New Relic backend only - NerdGraph queries are user-scoped, not account-scoped, so this identifies which account's data to read. |
| BACKEND_HONEYCOMB_DATASET | No | Honeycomb dataset slug, required for the Honeycomb backend only - the Query Data API is dataset-scoped. |
| BACKEND_APP_KEY | No | Datadog Application key, required in addition to BACKEND_API_KEY for the Datadog backend only. Secret. |
| BACKEND_TEMPO_INSTANCE_ID | No | Grafana Cloud stack/instance ID, used with BACKEND_API_KEY for Basic Auth (Tempo backend only, required for Grafana Cloud-hosted Tempo, not needed for self-hosted Tempo). |
| BACKEND_SENTRY_ORG | No | Sentry organization slug, required for the Sentry backend only. |
| BACKEND_SENTRY_PROJECT | No | Sentry project slug, optional for the Sentry backend - narrows queries to one project. |
| BACKEND_ENVIRONMENTS | No | Comma-separated environments for the Traceloop backend only. |
| BACKEND_TIMEOUT | No | Request timeout in seconds. |
| BACKEND_MAX_RESPONSE_BYTES | No | Ceiling on the decoded size of any single backend response, in bytes (1 to 1073741824). An oversized body is refused before it is buffered or parsed. |
| LOG_LEVEL | No | Logging level. |
| MAX_TRACES_PER_QUERY | No | Maximum traces validated per query (1-1000). |
| SLOW_REQUEST_THRESHOLD_MS | No | Logs a WARNING for any backend request slower than this, independent of LOG_LEVEL. Unset disables slow-request logging. |
| QUERY_CACHE_TTL_SECONDS | No | Cache backend query results for this many seconds with in-flight request coalescing; finite, > 0 and at most 86400 (one day). Unset disables the cache. |
| QUERY_CACHE_MAX_ENTRIES | No | Upper bound on the number of cached query results held at once (1-100000); the least-recently-used entry is evicted first. |
| OTEL_EXPORTER_OTLP_ENDPOINT | No | Enables opt-in OTel self-instrumentation of tool calls when set. Unset means zero overhead - no TracerProvider is configured and no middleware is registered. |
| OTEL_SERVICE_NAME | No | Service name reported in self-instrumentation spans, only used when OTEL_EXPORTER_OTLP_ENDPOINT is set. |
| MCP_INCLUDE_ARGS_IN_SPANS | No | Include tool call arguments/results as OTel span attributes when self-instrumentation is enabled. Off by default since they may contain sensitive data. |