Skip to main content
Glama
ThoTischner

observability-mcp

query_metrics

Query raw time-series data for a single metric of a service, receiving timestamp-value pairs and pre-computed summary statistics including trend.

Instructions

Fetch the raw time-series for ONE metric of ONE service over a look-back window, returned together with pre-computed summary statistics. When to use: when you need the actual numeric values or the trend of a known metric. For a 'is this service OK?' verdict use get_service_health; to find which services are misbehaving use detect_anomalies. Prerequisites: get the exact service name from list_services and choose a metric from the list at the end of this description. Behavior: read-only, no side effects. Returns an ordered array of {timestamp, value} points plus a summary {current, average, min, max, trend}. With groupBy set, returns one labelled series per distinct label value under groups instead of a single aggregated series. Units depend on the metric (e.g. CPU as %, latency as ms, rates as per-second). An unknown service/metric or an unreachable backend yields a structured explanatory error, never an exception. Available metrics: No metrics sources configured.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
serviceYesRequired. Exact, case-sensitive service name exactly as returned by `list_services` (e.g. 'api-gateway', 'payment-service').
metricYesRequired. Exact metric name to query. One of: .
durationNoOptional. Look-back window ending at 'now', written as <number><unit> with unit s|m|h|d (e.g. '5m', '90m', '1h', '24h'). Default: '5m'.
sourceNoOptional. Restrict the query to a single backend by its source name (see `list_sources`). Default: query and merge all metrics backends.
groupByNoOptional. Metric label to break the result down by, e.g. 'instance', 'pod', 'node'. When set, the response contains one series per distinct label value under `groups`. Default: a single aggregated series.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully discloses behavior: it is read-only with no side effects. It details the return format (array of timestamp/value points plus summary statistics), explains the 'groupBy' parameter behavior (returns labelled series), describes error handling (structured explanatory error for unknown service/metric or unreachable backend), and notes unit dependency. This goes well beyond what annotations would typically provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately sized but well-structured. It starts with a clear purpose sentence, then provides usage guidelines, behavior notes, return format, groupBy semantics, units, error handling, and available metrics. It is front-loaded with the most important information. A minor improvement would be to condense some parts, but overall it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description thoroughly explains the return format and behavior. It covers all parameters, prerequisites, error handling, and references sibling tools. The list of available metrics is mentioned (though empty). The description feels complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds meaning beyond the schema: it clarifies that 'service' must be exact and case-sensitive from 'list_services', that 'metric' is an exact metric name from a list (though list is empty in schema), specifies duration format and default, explains that 'source' restricts to a single backend, and details 'groupBy' behavior. This adds value over the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verb 'Fetch' and identifies the resource ('raw time-series for ONE metric of ONE service') and the context ('over a look-back window, returned together with pre-computed summary statistics'). It also distinguishes from sibling tools 'get_service_health' and 'detect_anomalies'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool: 'when you need the actual numeric values or the trend of a known metric'. It also provides clear alternatives for other tasks: 'get_service_health' for a health verdict and 'detect_anomalies' for finding misbehaving services. Prerequisites are listed: get exact service name from 'list_services' and choose a metric from the provided list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ThoTischner/observability-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server