Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LOG_LEVELNoLogging level: DEBUG, INFO, WARNING, ERRORINFO
BACKEND_URLNoBackend API endpoint (required)
BACKEND_TYPENoBackend type: jaeger, tempo, traceloop, or datadogjaeger
BACKEND_API_KEYNoAPI key (required for Traceloop and Datadog)
BACKEND_APP_KEYNoApplication key (required for Datadog, in addition to API key)
BACKEND_TIMEOUTNoRequest timeout in seconds30
MAX_TRACES_PER_QUERYNoMaximum traces to return per query (1-1000)100

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_tracesA

Search for OpenTelemetry traces with filters.

Supports both simple parameters and advanced generic filter system.

Args: service_name: Filter by service name (use filters for advanced queries) operation_name: Filter by operation/span name start_time: Start time in ISO 8601 format (e.g., 2024-01-01T00:00:00Z) end_time: End time in ISO 8601 format min_duration_ms: Minimum trace duration in milliseconds max_duration_ms: Maximum trace duration in milliseconds gen_ai_system: Filter by LLM provider (e.g., openai, anthropic) gen_ai_request_model: Filter by requested model name (e.g., gpt-4) gen_ai_response_model: Filter by actual model used (e.g., gpt-4-0613) has_error: Filter traces with errors tags: Additional tag filters as key-value pairs filters: Generic filter conditions (advanced) - list of filter objects with: - field: Field name in dotted notation (e.g., "gen_ai.usage.prompt_tokens") - operator: Comparison operator (equals, not_equals, gt, lt, gte, lte, contains, not_contains, starts_with, ends_with, in, not_in, between, exists, not_exists) - value: Single value for most operators - values: List of values for "in", "not_in", "between" operators - value_type: Type of value(s) - "string", "number", or "boolean" limit: Maximum number of traces to return (1-1000, default: 100)

Returns: JSON string with search results

Filter Examples: Find expensive traces: {"field": "gen_ai.usage.total_tokens", "operator": "gt", "value": 5000, "value_type": "number"}

Filter by multiple models:
{"field": "gen_ai.request.model", "operator": "in", "values": ["gpt-4", "claude-3"], "value_type": "string"}

Check if attribute exists:
{"field": "gen_ai.request.temperature", "operator": "exists", "value_type": "number"}

Find streaming requests:
{"field": "gen_ai.request.is_streaming", "operator": "equals", "value": true, "value_type": "boolean"}
get_traceB

Get complete trace details by trace ID.

Returns all spans with attributes, including parsed Opentelemetry data for LLM operations.

Args: trace_id: Trace identifier

Returns: JSON string with trace details

get_llm_usageB

Get aggregated LLM usage metrics (token counts) for a time period.

Provides breakdowns by model and service.

Args: start_time: Start time in ISO 8601 format end_time: End time in ISO 8601 format service_name: Filter by service name gen_ai_system: Filter by LLM provider gen_ai_request_model: Filter by requested model name gen_ai_response_model: Filter by actual model used limit: Maximum traces to analyze (default: 1000)

Returns: JSON string with usage metrics

list_servicesA

List all available services in the OpenTelemetry backend.

Returns: JSON string with list of services

find_errorsB

Find traces with errors.

Including detailed error messages, stack traces, and LLM-specific error information.

Args: start_time: Start time in ISO 8601 format end_time: End time in ISO 8601 format service_name: Filter by service name limit: Maximum error traces to return (default: 100)

Returns: JSON string with error traces

list_llm_modelsB

List all LLM models being used with usage statistics.

Discovers what models are deployed and tracks their usage patterns.

Args: start_time: Start time in ISO 8601 format (e.g., 2024-01-01T00:00:00Z) end_time: End time in ISO 8601 format service_name: Filter by service name gen_ai_system: Filter by LLM provider (e.g., openai, anthropic, cohere) limit: Maximum traces to analyze for model discovery (default: 1000)

Returns: JSON string with list of models and their statistics (count, request_count, first_seen, last_seen)

get_llm_model_statsB

Get detailed performance statistics for a specific LLM model.

Analyzes request count, latency percentiles (p50, p95, p99), token usage statistics, error rates, and finish reason distributions.

Args: model_name: Model name to analyze (e.g., "gpt-4", "claude-3-opus", "gpt-3.5-turbo") start_time: Start time in ISO 8601 format (e.g., 2024-01-01T00:00:00Z) end_time: End time in ISO 8601 format service_name: Filter by service name

Returns: JSON string with comprehensive model statistics including duration/token percentiles

get_llm_expensive_tracesA

Find traces with highest LLM token usage.

Useful for cost optimization and identifying inefficient prompts.

Args: limit: Maximum number of traces to return (default: 10) start_time: Start time in ISO 8601 format (e.g., 2024-01-01T00:00:00Z) end_time: End time in ISO 8601 format min_tokens: Minimum token count threshold (only return traces above this) service_name: Filter by service name gen_ai_request_model: Filter by requested model name (e.g., "gpt-4") gen_ai_response_model: Filter by actual model used (e.g., "gpt-4-0613")

Returns: JSON string with top N most expensive traces sorted by total token usage

get_llm_slow_tracesA

Find slowest LLM traces by duration.

Useful for performance optimization and identifying latency bottlenecks.

Args: limit: Maximum number of traces to return (default: 10) start_time: Start time in ISO 8601 format (e.g., 2024-01-01T00:00:00Z) end_time: End time in ISO 8601 format min_duration_ms: Minimum duration threshold in milliseconds (only return traces above this) service_name: Filter by service name gen_ai_request_model: Filter by requested model name (e.g., "gpt-4") gen_ai_response_model: Filter by actual model used (e.g., "gpt-4-0613")

Returns: JSON string with top N slowest traces sorted by duration

search_spans_toolA

Search for individual OpenTelemetry spans with optional filters.

Unlike search_traces, this returns individual spans rather than grouped traces, which is useful for analyzing specific operations or finding spans with certain characteristics (e.g., LLM tool calls with traceloop.span.kind == tool).

Args: service_name: Filter by service name operation_name: Filter by operation/span name start_time: Start time in ISO 8601 format (e.g., 2024-01-01T00:00:00Z) end_time: End time in ISO 8601 format min_duration_ms: Minimum span duration in milliseconds max_duration_ms: Maximum span duration in milliseconds gen_ai_system: Filter by LLM provider (e.g., openai, anthropic) gen_ai_request_model: Filter by requested model name (e.g., "gpt-4") gen_ai_response_model: Filter by actual model used (e.g., "gpt-4-0613") has_error: Filter spans with errors tags: Additional tag filters as key-value pairs filters: Generic filter conditions - list of filter objects with: - field: Field name in dotted notation (e.g., "traceloop.span.kind") - operator: Comparison operator - value: Single value for most operators - values: List of values for "in", "not_in", "between" operators - value_type: Type of value(s) - "string", "number", or "boolean" limit: Maximum number of spans to return (1-1000, default: 100)

Returns: JSON string with span summaries

Example filter to find LLM tool calls: {"field": "traceloop.span.kind", "operator": "equals", "value": "tool", "value_type": "string"}

list_llm_tools_toolA

List all LLM tools being used by identifying traceloop.span.kind == tool.

Discovers which tools/functions LLM applications are calling, grouped by tool name with usage statistics.

Args: start_time: Start time in ISO 8601 format (e.g., 2024-01-01T00:00:00Z) end_time: End time in ISO 8601 format service_name: Filter by service name gen_ai_system: Filter by LLM provider (openai, anthropic, etc.) limit: Maximum spans to analyze (default: 1000)

Returns: JSON string with list of tools and their statistics (usage count, services, first/last seen)

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.6/5.0

Scored across 11 tools

Disambiguation4/5

Most tools target distinct resources (traces, spans, services, models, tools, errors), and descriptions clarify boundaries. However, find_errors overlaps heavily with search_traces (has_error filter), and get_llm_expensive_traces/get_llm_slow_traces are specialized sorted variants of search_traces, which could cause misselection.

Naming Consistency4/5

The set largely follows a verb_noun pattern (get_trace, list_services, search_traces, find_errors, get_llm_model_stats, get_llm_expensive_traces). The main deviation is the awkward redundant '_tool' suffix on search_spans_tool and list_llm_tools_tool, breaking the otherwise clean convention.

Tool Count5/5

11 tools is well-scoped for an OpenTelemetry/LLM observability server, with each tool earning a distinct analytical purpose (search, aggregate, rank, discover). Neither thin nor bloated.

Completeness4/5

Strong read-only coverage across traces, spans, services, LLM usage/models/tools, and errors, which fits the observability domain. Minor gaps exist (no get_span by ID, no operations/dimension listing), but agents can work around them via search.

Maintenance

ActivityMaintained
ResponsivenessNo issues