Skip to main content
Glama

get_metrics

Read-only

Aggregate request metrics for this project over a time window — volume, error rate and p50/p95/p99 latency, bucketed for charting. By default the series cover inbound requests; pass targetId to slice over one outbound target's per-attempt rows instead (answers "which target is degraded?"); pass endpointId to slice over inbound rows for a single endpoint (answers "is this endpoint receiving traffic / erroring?"). Pass at most one of targetId / endpointId. Free plans see "hour" and "day"; "week" and "month" require an active paid subscription on the project owner and are silently downgraded to "day" otherwise (the response includes planGated: true when that happens). Returns {window, requestedWindow, planGated, scope, targetId?, endpointId?, bucketSeconds, buckets[], volume[], errors[], totalVolume, totalErrors, errorRate} plus latency series whose keys depend on scope: an inbound read (project-wide, or endpointId) carries relayP50[]/relayP95[]/relayP99[] for our own time and targetP50[]/targetP95[]/targetP99[] for the destination's, never blended; a targetId read carries p50[]/p95[]/p99[] for that target's attempts — series arrays are dense (one point per bucket, zero-filled when no traffic).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
windowNoTime horizon. Defaults to "day". "week"/"month" require a paid plan; otherwise the server returns "day" with planGated=true.
targetIdNoOptional outbound target UUID (from get_endpoint targets). When set, the series aggregate the per-attempt rows for that target instead of the project-wide inbound rows.
endpointIdNoOptional endpoint UUID (from list_endpoints / get_endpoint). When set, the series aggregate inbound request rows for that endpoint only. Mutually exclusive with targetId.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare readOnlyHint=true and destructiveHint=false, but the description adds substantial behavioral context: silent downgrade of week/month to day on free plans with planGated=true, dense zero-filled buckets, and scope-dependent latency series keys (relayP50 vs targetP50 vs p50) without blending. This goes well beyond the safety hints and fully discloses edge-case behavior.

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

Conciseness5/5

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

Though lengthy, the description is front-loaded with the core purpose and each subsequent sentence earns its place: scoping rules, plan restrictions, response shape, and dense-series detail are all meaningful. The structure uses semicolons and clear delimiter ('By default...', 'pass...', 'Returns...') to keep it organized without redundancy.

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?

With no output schema, the description takes full responsibility for explaining return values and does so thoroughly: lists the response keys, explains latency series variants by scope, notes planGated semantics, and clarifies that arrays are dense. Combined with the parameter and safety details, the description is complete for a 3-parameter, no-output-schema tool.

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 description coverage is 100%, so the baseline is 3. The description enriches this by clarifying the mutual exclusivity of targetId/endpointId, default scope, and the plan-gating behavior of window. It also ties each parameter to a diagnostic question ('which target is degraded?'), adding practical semantics beyond the schema's field-level explanations.

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 opens with a specific verb and resource: 'Aggregate request metrics for this project over a time window' and lists the exact metrics (volume, error rate, p50/p95/p99 latency) and purpose (bucketed for charting). It clearly distinguishes itself from sibling tools like list_requests by focusing on aggregation and time-window bucketing.

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

Usage Guidelines4/5

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

The description provides clear context for when to use each parameter: default behavior covers inbound requests, targetId slices outbound target degradation, endpointId slices inbound endpoint health, and 'Pass at most one of targetId / endpointId' is an explicit constraint. However, it does not name alternative tools for comparison (e.g., when to use list_requests instead), so it falls short of the explicit when-not/alternatives bar.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.6/5.0
Disambiguation3/5

Most tools target distinct resources and the descriptions are unusually explicit, but the billing cluster (change_plan/cancel_subscription and the many add-on actions) plus the preview/diff tools overlap and could cause mis-selection. config_diff, dry_run_endpoint, and preview_line_draft all read as 'preview what will change' at first glance despite different scopes.

Naming Consistency4/5

The overwhelming majority follow a clean snake_case verb_noun pattern: create_*, get_*, list_*, set_*, update_*, delete_*. It is only held back by a few naming outliers such as config_diff and default_endpoint_template, which break the verb-first convention.

Tool Count1/5

78 tools is an extreme mismatch for an MCP server surface, even accounting for the broad management/relay domain. Such a large surface will overwhelm model context and make tool selection materially harder; this would be better split into focused servers for configuration, data-plane operations, and billing.

Completeness4/5

The tool surface is very thorough: projects, lines, endpoints, credentials, keys, configs/drafts, DLQ, requests, metrics, audit, team, and billing are all represented. Only minor gaps exist, such as no direct single-line get/update and the intentional inability to widen the outbound allowlist or lift archive protection via API.

Resources