Skip to main content
Glama
AIops-tools

observability-aiops

Observability AIops

Disclaimer: Community-maintained open-source project. Not affiliated with, endorsed by, or sponsored by the Prometheus or Grafana projects, Grafana Labs, or the Cloud Native Computing Foundation. Prometheus, Alertmanager and Grafana are trademarks of their respective owners. MIT licensed.

Governed AI-ops for a self-hosted observability stack in one server — Prometheus (HTTP API, PromQL, targets, rules, alerts), Alertmanager (alerts + silences), Grafana (dashboards, datasources, folders), and Grafana Loki (bounded LogQL log reads + log RCA) — with a built-in governance harness: unified audit log, token/runaway budget guard, undo-token recording, and descriptive risk-tier labels. One config can span your whole stack; each target names its own platform. Beyond the mock test suite, the Prometheus/Alertmanager/Grafana reads, the RCAs, and the governed silence + dashboard write paths (with undo) have been exercised against a live Prometheus 3.x + Alertmanager + Grafana 13 stack — see docs/VERIFICATION.md.

This is the self-hosted-observability complement to enterprise monitoring suites: it speaks the open Prometheus/Grafana APIs an SRE actually runs, not a vendor NMS.

What it does

Answers the questions an SRE actually repeats over a Prometheus/Grafana stack, and guards the writes that follow:

  • PromQL + metadata — instant and range queries, label-value enumeration, and series metadata, all read-only and result-capped.

  • Scrape-target & rule health — which targets are up/down (and why, from lastError), which were dropped by relabeling, and which recording/alerting rules are erroring.

  • Alerts & silences — firing/pending Prometheus rule alerts, Alertmanager's post-routing view, and its silences.

  • Grafana — dashboards, datasources (+ health), and folders.

  • Loki logs — bounded LogQL reads (label + label-value enumeration, a validation-gated query_range, and a canned error-tail), all read-only with a hard lookback + line cap, optional multi-tenant X-Scope-OrgID, and basic/bearer auth per target.

  • Flagship analyses — transparent heuristics that show their numbers: firing_alert_rca (join each firing alert to its rule expr → cause + action), target_scrape_health_analysis (rank down/erroring scrapes → likely cause), alert_noise_and_flap_analysis (frequently-repeated / duplicate alerts → dedup/rollup recommendation), plus two log analyses — log_error_burst_rca (per-stream error burst vs baseline → new-signature / volume-spike / single-instance) and log_volume_analysis (top streams + high-cardinality label warnings + retention hint) — and alert_log_context, which correlates a firing Prometheus alert to its Loki streams.

  • Governed writes — create/expire Alertmanager silences (time-boxed), create Grafana annotations, update/delete dashboards, and hot-reload the Prometheus config — each audited, risk-tiered, dry_run-able, and the reversible ones capture the real fetched before-state for undo.

Related MCP server: cicd-aiops

What this tool does, and does not, decide

It delivers Prometheus + Grafana operations — reads and writes — accurately and efficiently, and records every one of them. It does not decide whether a write is allowed to happen. That is the agent's judgement, or the permission of the account you connect it with: give it a Grafana token with only Viewer scope, and a Prometheus/Alertmanager reached without the admin/write API, and the writes fail at the server — the place that actually owns the permission.

So there is no read-only switch, no policy file, no approval gate to configure. The one thing the tool guarantees is that nothing is silent: every call, over MCP and over the CLI alike, lands an audit row in ~/.observability-aiops/audit.db, and destructive writes still capture their before-state and record an inverse where one exists.

Each tool declares a risk_level, carried into the audit row as a descriptive tier (none/confirm/review) — so a reviewer can see at a glance that a row was a high-risk delete. It is a label, not a gate.

Capability matrix (39 MCP tools)

Group

Platform

Tools

Count

R/W

Metrics

Prometheus

instant_query, range_query, label_values, series_metadata

4

read

Targets

Prometheus

list_targets, target_scrape_health, dropped_targets

3

read

Status

Prometheus

prometheus_config_status, prometheus_tsdb_status

2

read

Rules

Prometheus

list_rules, rule_health

2

read

Alerts

Prometheus/Alertmanager

firing_alerts, pending_alerts, alertmanager_alerts, list_silences

4

read

Grafana

Grafana

list_dashboards, get_dashboard, list_datasources, datasource_health, list_folders

5

read

Loki

Loki

loki_labels, loki_label_values, loki_query, loki_tail_errors

4

read

Overview

all

observability_overview

1

read

Analyses

Prometheus

firing_alert_rca, target_scrape_health_analysis, alert_noise_and_flap_analysis

3

read

Log analyses

Loki

log_error_burst_rca, log_volume_analysis

2

read

Cross-signal

Prometheus + Loki

alert_log_context

1

read

Writes

Alertmanager

create_silence, expire_silence

2

write (med)

Grafana

create_annotation

1

write (medium)

Grafana

update_dashboard

1

write (med)

Grafana

delete_dashboard

1

write (high)

Prometheus

reload_prometheus_config

1

write (med)

Undo

all

undo_list

1

read

all

undo_apply

1

write (med)

Loki is read-only — Loki exposes no safe operational write surface (no silence/annotation analogue), so this tool deliberately ships no Loki writes.

The CLI exposes a convenience subset (query, logs, alert, overview, …); the full 39-tool surface is via the MCP server.

Quick start

As a Claude Code plugin

One install gives an agent both the skill and the MCP server:

/plugin marketplace add AIops-tools/marketplace
/plugin install observability-aiops@aiops-tools

The MCP server is fetched with uv and pinned to the package version this plugin declares, so an audit row can be traced back to the code that wrote it. Credentials are still configured with observability-aiops init — see below.

As a CLI or standalone MCP server

uv tool install observability-aiops          # or: pipx install observability-aiops
observability-aiops init                     # wizard: pick platform (prometheus/grafana) + store the token (encrypted)
observability-aiops doctor                   # verify config, secrets, connectivity
observability-aiops overview                 # snapshot: firing alerts + targets up/down + rules erroring
observability-aiops query instant 'up'       # run a PromQL instant query
observability-aiops logs errors '{app="api"}' # tail error-level Loki logs (bounded)
observability-aiops alert rca                # root-cause the firing alerts

Run as an MCP server (stdio):

export OBSERVABILITY_AIOPS_MASTER_PASSWORD=...   # unlock secrets non-interactively
observability-aiops mcp

Governance

Every MCP tool passes through the bundled @governed_tool harness:

  • Audit — every call (params, result, status, duration, risk tier, and any operator-supplied approver/rationale) is logged to ~/.observability-aiops/audit.db (relocatable via OBSERVABILITY_AIOPS_HOME). The CLI writes the same row the MCP path does — there is no unaudited entry point.

  • Runaway guard — a safety backstop, not an authorization gate: the same call hammered in a tight loop trips a circuit breaker. Disable with OBSERVABILITY_RUNAWAY_MAX=0; optional hard ceilings via OBSERVABILITY_MAX_TOOL_CALLS / OBSERVABILITY_MAX_TOOL_SECONDS.

  • Undo recording — reversible writes record an inverse descriptor built from the fetched before-state (create_silence→expire, update_dashboard/delete_dashboard→restore the captured prior model).

  • Risk tier — a descriptive label on the audit row derived from risk_level; it gates nothing.

Supported scope & limitations

  • Platforms: Prometheus HTTP API (+ a companion Alertmanager), Grafana HTTP API, and Grafana Loki HTTP API (read-only). Hosted/SaaS monitoring suites (Datadog, New Relic, enterprise NMS) are deliberately out of scope for this tool.

  • Verification. The mock suite covers all four platforms; in addition the Prometheus, Alertmanager and Grafana surfaces have been exercised against a live Prometheus 3.x + Alertmanager + Grafana 13 stack (RCAs, the silence and dashboard governed writes, and undo replay). The Loki surface has not yet been exercised live. All four are free and open-source and trivial to stand up in a lab (docker run prom/prometheus, grafana/grafana, grafana/loki), so observability-aiops doctor is the fastest live check (Prometheus /api/v1/status/buildinfo, Grafana /api/health, Loki /ready + /loki/api/v1/status/buildinfo). See docs/VERIFICATION.md.

Missing a capability?

Want another read, an analysis tuned, or a platform capability that isn't here? Open an issue or a PR — feedback and contributions are welcome.

Available Tools

39 tools
alert_log_contextA

[READ][cross-signal] Correlate a firing Prometheus alert to its Loki log streams.

Reads the firing alert's labels from the Prometheus target, maps the Loki-friendly ones (namespace, job, service, app, container, pod, instance, component — first four, in that priority order) into a LogQL stream selector, and pulls the correlated error streams from the Loki target. Best-effort: label values are escaped into the selector and only labels the alert and Loki actually share will match.

Args: alertname: The firing alert's name (from firing_alerts / firing_alert_rca). hours: Lookback window in hours (capped at the tool's max lookback). target: Prometheus target name from config; omit for the default. loki_target: Loki target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNo
targetNo
alertnameYes
loki_targetNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavioral traits: it is a read operation, maps labels in priority order, escapes values, only matches shared labels, and caps the lookback window. This goes well beyond minimal disclosure and prevents misuse.

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?

The description is well-structured: a one-line summary, a behavioral explanation, and an Args list. Every sentence adds value, and the length is justified by the need to explain parameter semantics and cross-signal mapping without schema descriptions.

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 the tool's cross-signal complexity, four parameters, no output schema, and no annotations, the description covers purpose, usage, parameter semantics, and behavioral caveats. It is sufficiently complete for an agent to invoke the tool correctly and interpret the intention.

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

Parameters5/5

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

Schema description coverage is 0%, but the Args section adds detailed meaning to every parameter: alertname is tied to firing_alerts/firing_alert_rca, hours is a capped lookback, and target/loki_target indicate config defaults. This fully compensates for the absence of schema descriptions.

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 '[READ][cross-signal] Correlate a firing Prometheus alert to its Loki log streams,' which uses a specific verb and resource and clearly distinguishes it from sibling tools like loki_query or firing_alert_rca. It states exactly what the tool does and the cross-signal nature.

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 on when to use the tool (for correlating alerts to logs) and explains its Best-effort behavior and label-matching constraints. It does not explicitly name alternative tools or state when not to use it, but the context is strong enough for an agent to determine applicability.

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

alertmanager_alertsA

[READ] Alerts as Alertmanager sees them (post grouping/silence/inhibit).

Args: active_only: If True, exclude silenced/inhibited alerts. target: Prometheus target name from config (its Alertmanager); omit for default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
active_onlyNo

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses the read-only nature via '[READ]' and explains post-grouping/silence/inhibit behavior, but lacks details on authentication, error handling, or return format. This is sufficient for a simple read operation but not rich.

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?

The description is two concise lines plus an args list, front-loading the purpose and then providing parameter details. Every sentence earns its place with no fluff.

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

Completeness4/5

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

For a simple read tool with two optional parameters and no output schema, the description covers the essential purpose and parameter semantics. It lacks examples and explicit return value description, but is otherwise adequate for a tool of this complexity.

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

Parameters5/5

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

The schema has no descriptions (0% coverage), so the description fully compensates by explaining both parameters: active_only (exclude silenced/inhibited) and target (Prometheus target name from config). This adds crucial meaning beyond the bare schema titles.

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 clearly identifies the tool as reading alerts from Alertmanager's perspective, after grouping/silence/inhibit processing. This specific verb and resource scope distinguishes it from sibling tools like firing_alerts and pending_alerts.

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

Usage Guidelines3/5

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

Usage context is implied by the description (use for Alertmanager's view of alerts), but there is no explicit comparison to alternatives or conditions for when to use this tool over siblings. The active_only parameter hints at filtering but doesn't guide selection.

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

alert_noise_and_flap_analysisA

[READ][analysis] Find noisy/duplicate alerts → dedup/rollup recommendation.

Args: noise_threshold: Instance count at/above which an alertname is "noisy". target: Prometheus target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
noise_thresholdNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It explicitly signals '[READ][analysis]', indicating a read-only, non-mutating operation. It also states the output is a 'recommendation', implying no direct changes. This is more transparent than typical mutation tools, though it lacks detail on potential side effects or permissions.

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?

The description is extremely concise: a single header line plus an args list. It is front-loaded with the core action, and every word adds value. No fluff or redundant content.

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

Completeness4/5

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

For a simple tool with two optional parameters and no output schema, the description covers the essential aspects: purpose, read-only nature, parameter semantics, and basic output type. It does not explicitly define 'flap' (present in the tool name) or describe the exact return format, but these are minor gaps given the tool's simplicity.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully compensates by explaining both parameters. 'noise_threshold' is defined as an instance count threshold for noise, and 'target' is specified as a Prometheus target name from config with a clear 'omit for the default' instruction. This adds deep meaning beyond the bare schema.

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 clearly states the tool's purpose: 'Find noisy/duplicate alerts → dedup/rollup recommendation.' This is a specific verb+resource+outcome that distinguishes it from sibling tools like alertmanager_alerts (list alerts) and firing_alert_rca (root cause analysis).

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 this tool: for analyzing noisy/duplicate alerts and getting dedup/rollup recommendations. However, it does not explicitly mention alternatives or state when not to use it, relying on the context provided by the purpose.

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

create_annotationA

[WRITE][risk=medium] Create a Grafana annotation (an event marker).

Args: text: Annotation text. tags: Optional list of tag strings. dashboard_uid: Optional dashboard UID to attach the annotation to. dry_run: If True, preview without creating. target: Grafana target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
textYes
targetNo
dry_runNo
dashboard_uidNo

TDQS

A4.1/5.0
Behavior4/5

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

The description includes a '[WRITE][risk=medium]' prefix that explicitly discloses the mutation and risk level, and the 'dry_run' parameter is explained as 'preview without creating.' This adds behavioral context beyond the schema, though it does not mention permissions, rate limits, or side effects after creation.

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?

The description is highly concise: a one-line purpose statement followed by a structured list of arguments. No unnecessary words or repetition. The front-loaded purpose makes the tool's intent immediately clear.

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

Completeness4/5

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

For a simple create tool with no output schema, the description covers all parameters and includes the dry-run safety feature. It lacks details like return value or what happens after creation, but these are not essential given the simplicity. The description is substantially complete for an agent to invoke correctly.

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

Parameters5/5

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

Schema description coverage is 0%, but the description provides clear explanations for all five parameters: text, tags, dashboard_uid, dry_run, and target. Each has a concise meaning that goes beyond the schema titles, such as 'Optional dashboard UID to attach the annotation to' and 'If True, preview without creating.'

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?

Description clearly states the action: 'Create a Grafana annotation (an event marker).' The verb 'Create' and specific resource 'Grafana annotation' distinguish it from siblings like create_silence or update_dashboard. The parenthetical 'event marker' adds semantic precision.

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

Usage Guidelines2/5

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

No guidance on when to use this tool compared to alternatives. The description only states what it does, without mentioning when to choose it over other creation tools or any prerequisites. It also does not exclude use cases or point to sibling tools.

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

create_silenceA

[WRITE][risk=medium] Create a time-boxed Alertmanager silence. Inverse: expire_silence.

Args: matchers: List of {name, value, isRegex?} to match alerts to silence. minutes: Silence duration in minutes (must be > 0; silences are time-boxed). comment: Reason recorded on the silence. dry_run: If True, preview without creating. target: Prometheus target (its Alertmanager); omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
commentNosilenced via observability-aiops
dry_runNo
minutesNo
matchersYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full transparency burden. It includes [WRITE][risk=medium] for safety, notes that silences are time-boxed, requires minutes > 0, and explains dry_run behavior. It does not detail return values, idempotency, or permissions, but the added behavioral context is substantial.

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?

The description is front-loaded with a concise summary and safety tag, then provides a compact argument list. Every sentence serves a purpose with no filler, making it appropriately sized and well-structured.

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

Completeness4/5

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

For a tool with 5 parameters, no annotations, and no output schema, the description is quite complete. It explains all parameters, the time-boxed nature, the inverse relationship, and dry_run behavior. The only minor gap is the lack of explicit return-value information, but this does not hinder the agent from invoking the tool correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate fully. It does: matchers are explained with the {name, value, isRegex?} format, minutes is constrained (>0), comment is defined as the reason, dry_run is described as a preview, and target is explained with a default. This provides complete semantic meaning beyond the bare schema.

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 states a specific verb and resource: 'Create a time-boxed Alertmanager silence.' This clearly distinguishes it from sibling tools like list_silences and expire_silence, and the explicit inverse note further differentiates it.

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 the tool (create a silence) and names the inverse tool (expire_silence) as the alternative for the opposite action. However, it does not exhaustively discuss scenarios where other sibling tools might be preferred, but the inverse mention is a strong guideline.

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

datasource_healthA

[READ] Health of one Grafana datasource.

Args: datasource_id: Numeric datasource id (from list_datasources). target: Grafana target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
datasource_idYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only offers a generic [READ] label and does not mention response format, side effects like pinging the datasource, or error behavior. This is insufficient for full transparency.

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?

The description is concise and well-structured, with a leading [READ] tag and a bulleted args list. Every sentence provides necessary information with no wasted words.

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

Completeness3/5

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

Parameters are well covered, but the description omits details about the health response format, potential errors, and any special behaviors. Without an output schema, this leaves the agent without clear expectations for return values or failure modes.

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

Parameters5/5

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

The description explains both parameters clearly: datasource_id as a numeric id from list_datasources and target as a Grafana target name with a default. Since the schema has no descriptions, this fully compensates and adds meaningful context beyond the schema.

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

Purpose4/5

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

The description clearly states the tool reads the health of one Grafana datasource, with the [READ] tag and specification of a single datasource. This distinguishes it from listing tools like list_datasources, though it does not explicitly name alternatives.

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

Usage Guidelines3/5

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

The description implies a workflow by mentioning that datasource_id comes from list_datasources, but it does not explicitly state when to use this tool versus alternatives or any exclusions. Usage guidance is present but only implied.

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

delete_dashboardA

[WRITE][risk=high] Delete a Grafana dashboard. Captures the prior model BEFORE delete.

Pass dry_run=True to preview (reports the dashboard title). Optionally set an approver (OBSERVABILITY_AUDIT_APPROVED_BY) to annotate the audit row — it is not required. The prior model is captured so the recorded undo can recreate it.

Args: uid: Dashboard UID to delete (from list_dashboards). dry_run: If True, preview without deleting. target: Grafana target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYes
targetNo
dry_runNo

TDQS

A4.7/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden. It discloses critical side effects: it captures the prior model before deletion, supports a dry-run mode, optionally annotates an audit row with an approver, and ensures the undo can recreate the dashboard. This is rich, honest behavioral disclosure.

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?

The description is well-structured and front-loaded: it starts with a risk tag and a one-line summary, then provides necessary details about dry-run, approver, and undo, and concludes with an Args section. Every sentence serves a purpose and there is no verbosity.

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

Completeness4/5

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

The description covers the core behavior, preview mode, audit annotation, and undo mechanism. However, with no output schema, it does not explicitly state what a successful delete returns (only the dry-run returns a title). This minor omission keeps it from a perfect score.

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

Parameters5/5

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

Schema description coverage is 0%, so the 'Args' section is essential. It adds meaning to each parameter: uid is sourced from list_dashboards, dry_run previews without deleting, and target selects a Grafana target. This fully compensates for the lack of schema descriptions.

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 clear, specific verb+resource: 'Delete a Grafana dashboard.' This distinguishes it from sibling tools like get_dashboard, list_dashboards, and update_dashboard. The [WRITE] tag further reinforces the operation type.

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 gives practical usage guidance: it instructs to pass dry_run=True for a preview, notes that the UID comes from list_dashboards, and explains the optional target parameter. It does not explicitly name alternative tools for when not to delete, so it stops short of a 5.

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

dropped_targetsB

[READ] Targets discovered but dropped by relabeling.

Args: target: Prometheus target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states that targets are discovered but dropped by relabeling, and includes [READ] as a safety hint. It does not mention authentication, rate limits, pagination, return format, or any side effects. This minimal information is insufficient for a tool with no annotation support.

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?

The description is compact and well-structured, with a clear [READ] tag, a one-line summary of the resource, and a labeled Args section. Every sentence adds value without redundancy.

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

Completeness3/5

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

Given the simplicity (one optional parameter, no output schema, no annotations), the description covers the core purpose and parameter semantics. However, it omits usage context relative to siblings and any return format details, leaving some gaps for an agent deciding when to invoke it.

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 0%, so the description carries the full burden. It explains that 'target' is a Prometheus target name from config and that omitting it uses a default. This adds meaningful context beyond the schema, which only defines a string with null default.

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

Purpose4/5

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

The description clearly identifies the resource as 'Targets discovered but dropped by relabeling' and prefixes with [READ], indicating it returns information. It distinguishes from sibling tools like list_targets by specifying the 'dropped' subset, though it lacks an explicit verb like 'list' or 'get'.

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

Usage Guidelines2/5

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

The description provides no specific guidance on when to use this tool versus alternatives. It does not mention list_targets or other target-related tools, nor does it state situations where this tool is preferred or not appropriate. The only guidance is the parameter explanation, which is not usage context.

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

expire_silenceA

[WRITE][risk=medium] Expire (delete) an Alertmanager silence by id.

Args: silence_id: The silence id (from list_silences / create_silence). dry_run: If True, preview without expiring. target: Prometheus target (its Alertmanager); omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
dry_runNo
silence_idYes

TDQS

A4.3/5.0
Behavior3/5

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

The description explicitly tags [WRITE][risk=medium] and mentions delete and dry_run, providing crucial behavioral context. However, since no annotations are present, more detail on consequences (permanence, permissions, error behavior) would be valuable.

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?

The description is concise and well-structured: a risk tag, a one-sentence purpose, and a bullet-list of args. Every sentence earns its place with no redundancy.

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

Completeness4/5

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

Covers purpose, parameters, and risk. However, it does not mention return values or failure behavior, which might be expected given there is no output schema. For a simple deletion tool, the coverage is adequate.

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

Parameters5/5

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

All three parameters are explained with extra meaning: silence_id's provenance, dry_run's purpose, and target's role. With 0% schema description coverage, the description fully compensates by providing clear semantics for every parameter.

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 clearly states the action: 'Expire (delete) an Alertmanager silence by id.' This is a specific verb+resource and distinguishes the tool from siblings like create_silence and list_silences.

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?

It implies usage by instructing that silence_id comes from list_silences/create_silence, giving a clear context. However, it does not explicitly state when to use this tool over alternatives or when not to use it.

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

firing_alert_rcaA

[READ][analysis] Root-cause firing alerts: join each to its rule expr → cause+action.

Pulls firing alerts + alerting rules, matches them, and maps each to a likely cause and recommended action. Advisory heuristic — verify before acting.

Args: target: Prometheus target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It clearly marks the operation as [READ][analysis] and states it is an 'advisory heuristic — verify before acting,' disclosing that results are not authoritative. It also explains the process of pulling alerts and rules and produces cause+action, adding behavioral context beyond the schema.

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 short and front-loaded with a clear purpose. The first line is a compact summary, followed by a brief explanation and then the parameter documentation. There is minor redundancy between the first line and the second paragraph (both mention joining/matching), but overall it is efficient and well-structured.

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

Completeness4/5

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

The tool is a read-only analysis tool with only one optional parameter and no output schema. The description covers its purpose, process, output (likely cause and action), and warns about heuristic accuracy. It does not detail return format but that is not necessary for this type of tool. Additional info like specific permission requirements is absent, but the simplicity of the tool makes the description sufficiently complete.

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?

The input schema has zero descriptions and only one optional parameter 'target.' The description compensates fully by stating 'target: Prometheus target name from config; omit for the default,' which clarifies the parameter's meaning and usage. This adds meaningful context beyond the schema's bare anyOf/null definition.

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 '[READ][analysis] Root-cause firing alerts: join each to its rule expr → cause+action.' This uses a specific verb ('root-cause') and resource ('firing alerts'), clearly distinguishing it from sibling tools like firing_alerts or list_rules. The process of joining alerts with rule expressions is also described.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool or provide alternatives. The purpose is implied by the tool name and the first line, but no direct guidance is given about choosing this over firing_alerts, list_rules, or rule_health. It only cautions that it's an advisory heuristic, so score a 3 for implied usage.

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

firing_alertsA

[READ] Currently firing Prometheus rule alerts, grouped by severity.

Args: target: Prometheus target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4/5.0
Behavior3/5

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

The description includes a '[READ]' tag, which is useful since no annotations are provided. It also notes that output is grouped by severity. However, it does not disclose other behavioral aspects such as permissions, cost, or exact return format, so it only partially carries the burden.

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?

The description is extremely concise with two short sentences and an Args block. It is front-loaded with the [READ] tag and purpose, and every line adds value without waste.

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

Completeness4/5

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

For a simple read-only tool with one optional parameter and no output schema, the description covers the essential purpose and parameter semantics and gives a hint about output grouping. It could be more explicit about the exact return structure, but the tool's simplicity makes it adequate.

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?

The schema only defines the target parameter as a string or null. The description adds meaning by explaining that it is a 'Prometheus target name from config' and that it can be omitted for the default, providing useful context beyond the schema.

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 clearly states the tool's function: it reads currently firing Prometheus rule alerts and groups them by severity. This distinguishes it from sibling tools like alertmanager_alerts (which may show all alerts) and pending_alerts (which show pending alerts).

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

Usage Guidelines3/5

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

The usage is implied: use this tool to retrieve currently firing Prometheus rule alerts. However, it does not explicitly mention when to prefer this over related tools such as alertmanager_alerts or pending_alerts, nor does it provide exclusion criteria.

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

get_dashboardA

[READ] One dashboard's summary (title, version, panel + tag counts).

Args: uid: Dashboard UID (from list_dashboards). target: Grafana target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYes
targetNo

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full transparency burden. It explicitly announces [READ] and enumerates the summary contents, but does not disclose error behavior, permission requirements, or edge cases like invalid UIDs.

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?

Three sentences front-load the purpose and then present parameters in a compact list. Every word earns its place with no redundant or vague language.

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

Completeness4/5

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

The tool is simple (2 params, no output schema) and the description covers purpose, both parameters, and the return summary. It stops short of documenting possible errors or result format, but is sufficient for invocation.

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?

The description adds meaningful context to both parameters: uid is sourced from list_dashboards, and target is a Grafana target from config with a default if omitted. This goes well beyond the schema's type-only definitions, though it could clarify the default target further.

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 clearly states it retrieves one dashboard's summary including title, version, and counts, distinguishing it from list_dashboards. The [READ] tag reinforces a read-only operation with a specific resource.

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?

It implies usage after obtaining a dashboard UID from list_dashboards, and explains how to select the Grafana target. However, it does not explicitly state when to use this tool over alternatives or mention exclusions, so it gets a 4 rather than 5.

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

instant_queryA

[READ] Evaluate a PromQL expression at a single instant.

Args: query: A PromQL expression (e.g. 'up' or 'rate(http_requests_total[5m])'). time: Optional RFC-3339 or unix timestamp for the evaluation instant. target: Prometheus target name from config; omit for the default.

Returns an envelope with returned/limit/truncated. If truncated is true the result is partial — narrow the selector or raise the limit rather than treating it as complete.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeNo
queryYes
targetNo

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the return envelope ('returned'/'limit'/'truncated') and warns that a truncated result is partial, advising the user to narrow the selector or raise the limit. The prefix '[READ]' also signals a read-only operation, adding transparency beyond the schema. However, it doesn't detail error behavior or permission requirements, which keeps it from a perfect score.

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?

The description is compact and well-structured, starting with a clear one-liner, followed by an Args block, and a Returns note. Each sentence provides essential information without fluff. The formatting is easily scannable for an AI agent, making it highly 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 the tool's simplicity (3 parameters, no output schema), the description is complete. It covers the purpose, all parameters with examples, the return envelope, and the critical truncation edge case. There is no output schema to rely on, so the description adequately explains what the agent will receive. The only minor omission is explicit inter-tool guidance, but that is not required for completeness.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully compensate. It does exactly that by explaining each parameter: query with examples ('up' or 'rate(http_requests_total[5m])'), time as 'Optional RFC-3339 or unix timestamp,' and target as 'Prometheus target name from config; omit for the default.' This adds meaningful semantics beyond the bare schema types and titles.

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 'Evaluate a PromQL expression at a single instant,' which is a specific verb (evaluate) plus resource (PromQL expression) and scope (single instant). This clearly distinguishes it from range query tools in the sibling list, such as 'range_query', by emphasizing the instant evaluation point. The inclusion of example queries further clarifies the intended operation.

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 by specifying 'at a single instant,' which signals when this tool is appropriate (instant queries) versus range queries. However, it does not explicitly name alternative tools or state when not to use it, such as mentioning 'use range_query for time-series over a window.' This nuance prevents a 5 but the context is sufficiently clear.

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

label_valuesA

[READ] Distinct values of a label (default name = all metric names).

Args: label: Label name to enumerate (default name). match: Optional PromQL selector to scope the values (e.g. '{job="api"}'). target: Prometheus target name from config; omit for the default.

Returns an envelope with returned/limit/truncated. If truncated is true the result is partial — narrow the selector or raise the limit rather than treating it as complete.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNo__name__
matchNo
targetNo

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the read-only nature ('[READ]') and the truncation behavior via the returned envelope. However, it advises 'raise the limit' without an actual limit parameter in the schema, which is misleading. This prevents it from being highly transparent, as the agent cannot follow the guidance.

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?

The description is efficiently structured with an Args section and a return envelope explanation. It is front-loaded with the purpose and uses concise, informative sentences. The only minor issue is the unactionable 'raise the limit' advice, but overall it is well-organized and without fluff.

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

Completeness4/5

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

Given the lack of an output schema and annotations, the description covers the essentials: purpose, parameters, return format, and truncation handling. However, it references a 'limit' that isn't exposed in the input schema, creating an incomplete picture. It also doesn't mention error conditions or edge cases, which are minor gaps for a read-only tool.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates by explaining each parameter: label (with default), match (with a PromQL example), and target (with 'omit for default'). This adds substantial meaning beyond the bare schema, making it easy for an agent to understand what each parameter does.

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 clearly states the tool's function: enumerating distinct values of a label (defaulting to __name__ for metric names). It uses a specific verb ('enumerate') and resource ('label'), and mentions PromQL and Prometheus target, which distinguishes it from similar sibling tools like loki_label_values.

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

Usage Guidelines3/5

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

The description provides clear context for how the tool works (optional selector, target, truncation), but does not explicitly mention when to use this tool over alternatives. It lacks direct guidance such as 'use this for Prometheus metrics, not Loki labels', and there are no exclusions or alternative tool references.

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

list_dashboardsB

[READ] Grafana dashboards (optionally filtered by a title query).

Args: query: Optional title substring to search for. target: Grafana target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
targetNo

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. The '[READ]' tag implies read-only behavior, but the description does not disclose return format, pagination, auth needs, or other behavioral traits. For a simple list operation, this is somewhat adequate but lacks depth.

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?

The description is extremely concise, with a clear front-loaded [READ] tag and resource, followed by compact argument explanations. Every sentence adds value and there is no redundant or filler content.

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

Completeness3/5

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

The tool has no output schema, yet the description does not explain what is returned (e.g., list of dashboards, metadata, full configs). It also omits pagination or limit behavior. While the two parameters are well covered, the return value is left ambiguous, leaving an agent to guess the response shape.

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?

The input schema has no descriptions, but the description's Args section explains 'query' as an optional title substring and 'target' as a Grafana target name from config. This compensates for the 0% schema coverage and adds meaningful semantics beyond the basic schema types.

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

Purpose4/5

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

The description clearly states it lists Grafana dashboards and supports an optional title query. It is specific with the verb 'list' and resource 'Grafana dashboards', though it does not explicitly differentiate from sibling tools like get_dashboard or list_folders.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. It does not mention that get_dashboard should be used for a single dashboard or that list_folders is for folders, nor any conditions or exclusions.

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

list_datasourcesA

[READ] Configured Grafana datasources (id, uid, name, type, default).

Args: target: Grafana target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations present, the description carries the burden of disclosure. It explicitly marks the operation as a read using '[READ]' and lists the fields that will be returned, giving the agent a clear picture of the read-only behavior. It does not detail error conditions or configuration requirements, but for a simple list operation this is adequate.

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?

The description is concise, front-loads the read intent, and provides a single documented parameter in a clear format. Every sentence contributes useful information without unnecessary elaboration.

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

Completeness4/5

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

For a simple listing tool with one optional parameter and no output schema, the description covers the core purpose, return fields, and target behavior. It leaves minor gaps such as error handling for unknown targets, but overall the description is sufficient for confident invocation.

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?

The schema only defines 'target' as an optional string or null with a default of null, providing no semantic meaning. The description compensates by explaining that target is a 'Grafana target name from config' and that omitting it uses the default target, which is essential guidance for correctly invoking the tool.

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 begins with '[READ] Configured Grafana datasources' and lists the returned fields (id, uid, name, type, default), clearly identifying this as a read-only listing tool for datasources. This distinguishes it from sibling list tools like list_dashboards and list_rules.

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

Usage Guidelines3/5

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

The description makes the tool's purpose clear and shows the target parameter is optional, but it does not explicitly state when to prefer this tool over alternatives such as datasource_health or list_dashboards. Usage context is implied rather than explicitly contrasted with sibling tools.

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

list_foldersB

[READ] Grafana folders.

Args: target: Grafana target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

B3.2/5.0
Behavior2/5

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

The description includes a '[READ]' tag, which is a behavioral hint, but with no annotations provided, it carries the full burden of disclosure. No other behavioral traits are mentioned (e.g., authentication, output format, pagination, or side effects). This is minimal at best.

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?

The description is extremely concise, with a clear READ tag, resource name, and a brief parameter explanation. Every sentence earns its place and the front-loaded READ indicator aids quick scanning.

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

Completeness3/5

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

For a simple list tool, the description is adequate but minimal. It does not mention what is returned (e.g., folder IDs, names) or any other relevant context, and there is no output schema to fill the gap. It works but leaves some ambiguity.

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?

The schema provides only a type and default for the target parameter, with no description. The description adds meaningful semantics by explaining that it is a Grafana target name from config and that omitting it uses the default, which compensates for the 0% schema coverage.

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

Purpose4/5

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

The description states 'Grafana folders' and the tool name 'list_folders' makes the verb explicit, though the description itself lacks an explicit action verb. It is clearly differentiated from sibling tools like list_dashboards and list_datasources by the resource type.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description only mentions an optional target parameter without any context about when this tool is appropriate or how it relates to other list tools.

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

list_rulesA

[READ] All recording + alerting rules, optionally filtered by type.

Args: rule_type: Filter by "alerting" or "recording"; omit for both. target: Prometheus target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
rule_typeNo

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It includes '[READ]' to indicate the operation is non-mutating, which is a useful behavioral trait. However, it does not disclose potential side effects, rate limits, auth requirements, or return format, leaving some behavioral aspects opaque.

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?

The description is extremely concise and well-structured. It leads with the core purpose, then lists each parameter with clear semantics. There is no redundant wording or unnecessary detail, earning a top score.

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

Completeness4/5

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

For a simple list tool with two optional parameters and no output schema, the description covers the main functionality and parameters well. It lacks an explicit statement about the return structure, but given the simplicity and the clear 'list' nature, this is a minor gap. The read indicator partially compensates for absent annotations.

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

Parameters5/5

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

The description adds substantial meaning to both parameters. "rule_type: Filter by 'alerting' or 'recording'; omit for both" explains allowed values and default behavior, while "target: Prometheus target name from config; omit for the default" clarifies the source and default. The schema only provides types and defaults, so this is a significant improvement.

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 clearly states the tool returns 'All recording + alerting rules', with optional filtering by type. This is a specific resource and distinguishes it from sibling tools like list_silences or list_targets, which cover different resources.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives, nor does it mention exclusions or prerequisites. The only usage hint is in the argument descriptions (e.g., 'omit for both'), but there is no direct selection guidance or comparison with sibling tools.

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

list_silencesA

[READ] Alertmanager silences (active, pending, expired).

Args: target: Prometheus target name from config (its Alertmanager); omit for default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden. The [READ] prefix signals a non-destructive operation, and it mentions that all silence states are included. However, it does not disclose response structure, pagination, or potential side effects beyond the read-only nature, leaving some gaps for an agent.

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?

The description is extremely concise and front-loaded with the [READ] indicator and resource. The Arg section is clear and to the point, with no unnecessary words or repetition. It earns its place efficiently.

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

Completeness4/5

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

For a simple listing tool with one optional parameter and no output schema, the description is reasonably complete. It clarifies the target selection and the included states. It lacks details about the exact return payload, but that is not critical for this straightforward operation given the context signals.

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?

The input schema provides minimal description for the 'target' parameter, but the description compensates by explaining that it is a Prometheus target name from config and that omitting it uses the default. This adds meaningful semantic context beyond the schema's type and default.

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

Purpose4/5

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

The description clearly states that the tool returns Alertmanager silences with their states (active, pending, expired). The verb 'list' is implied by the tool name and the resource is explicit. It does not explicitly distinguish from sibling tools like create_silence or expire_silence, but the read-only nature is evident from the [READ] prefix.

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

Usage Guidelines3/5

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

The description implies that the tool is used to list silences, and the 'target' parameter provides contextual guidance for selecting a specific Alertmanager. However, it does not explicitly state when to use this tool versus alternatives or when not to use it. The usage is implied rather than fully specified.

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

list_targetsA

[READ] Active scrape targets, optionally filtered by health (up/down).

Args: health: Filter by health state ("up" or "down"); omit for all. target: Prometheus target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
healthNo
targetNo

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It includes '[READ]' (suggesting a read-only operation) and describes the filtering behavior for health and target. However, it does not clarify what 'active' means, whether the result is limited or paginated, or any other side effects or requirements. The core read-only nature is conveyed, but additional behavioral traits are absent.

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?

The description is very concise: an initial line summarizing the tool, followed by a short Args section. It is front-loaded with the '[READ]' tag and the main purpose. Every sentence adds value, with no fluff or repetition of the schema.

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

Completeness4/5

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

Given the tool's simplicity (two optional parameters, no output schema, no annotations), the description covers the core purpose and parameter meanings. It lacks an explicit return value description or examples, which would be helpful since no output schema exists. However, the name and verb imply a list of targets, so this is only a minor gap.

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

Parameters5/5

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

The input schema provides only parameter names and types with no descriptions. The tool description compensates fully by explaining the 'health' parameter ('Filter by health state ("up" or "down")') and the 'target' parameter ('Prometheus target name from config'). This gives the agent the needed semantics to use both arguments correctly.

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 clearly states the tool's function with a specific verb and resource: 'List active scrape targets.' It also mentions the optional health filter, which is a specific behavior. This distinguishes it from related tools like target_scrape_health or dropped_targets, which focus on health analysis or different target states.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention when not to use it or reference sibling tools. The only implicit context is the '[READ]' prefix and the list of capabilities, but there is no explicit usage direction.

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

log_error_burst_rcaA

[READ][analysis] Root-cause an error burst: current window vs baseline, per stream.

Pulls error streams for the current window (now-hours..now) and an equal-length baseline window (now-2*hours..now-hours), then classifies each burst as a new error signature, a volume spike, or a single-instance burst — with a cause + action. Advisory heuristic; verify against the raw logs.

Args: selector: A Loki stream selector to scope the analysis (e.g. '{app="api"}'). hours: Window length in hours for both current and baseline (capped). loki_target: Loki target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNo
selectorYes
loki_targetNo

TDQS

A4.5/5.0
Behavior5/5

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

The description discloses several behavioral traits: it pulls two windows, classifies bursts into types, produces a cause+action, and explicitly warns that it is an 'Advisory heuristic' requiring verification against raw logs. Since there are no annotations, this is a strong disclosure that goes well beyond the structured data.

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 structured with a summary line, a methodology paragraph, an advisory note, and an Args section. It is somewhat lengthy but every sentence adds value; however, it could be slightly tighter. The first line effectively front-loads the purpose.

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

Completeness3/5

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

Given the tool's complexity and the absence of an output schema, the description covers inputs, algorithm, and the heuristic nature, but it does not provide a detailed output format or return value structure. It mentions classifications and 'cause + action' but not how they are presented, leaving some ambiguity for an agent.

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

Parameters5/5

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

The description includes an 'Args:' section explaining each parameter beyond the schema's type-only definitions. It clarifies that selector is a Loki stream selector, hours is the window length for both current and baseline (capped), and loki_target is optional with a config default. With 0% schema description coverage, this is essential and well-done.

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 '[READ][analysis] Root-cause an error burst: current window vs baseline, per stream.' This clearly states the tool's function (root-cause analysis) and resource (error bursts), distinguishing it from sibling tools like log_volume_analysis or loki_query.

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 explains the analysis approach (current vs baseline windows, classifications) but does not explicitly state when to use this tool over alternatives. The context implies it is for error burst RCA, and the advisory note suggests verifying against raw logs, but no exclusions or alternative tool names are provided.

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

log_volume_analysisA

[READ][analysis] Top streams by volume + high-cardinality (high-churn) label warnings.

Ranks the highest-volume streams under the selector, flags labels with many distinct values as cardinality-explosion risks, and adds a retention hint from Loki index stats when available.

Args: selector: A Loki stream selector to scope the analysis (e.g. '{namespace="prod"}'). hours: Lookback window in hours (capped at the tool's max lookback). loki_target: Loki target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNo
selectorYes
loki_targetNo

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It explicitly includes '[READ][analysis]' indicating a safe read-only operation, mentions a cap on lookback hours, and notes the retention hint is 'when available'. This provides useful behavioral context beyond the bare schema.

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?

The description is concise and well-structured: a clear title line, a one-paragraph summary, and a compact Args list. Every sentence adds value with no fluff or repetition of schema defaults.

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

Completeness4/5

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

For a 3-parameter analysis tool with no annotations and no output schema, the description covers what it does, how to use it, and the nature of results (ranking, warnings, retention hint). It could optionally describe the exact output structure, but that isn't strictly necessary given the clarity.

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

Parameters5/5

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

The schema has 0% description coverage, but the description includes an 'Args' section explaining each parameter: selector, hours, and loki_target, with examples and constraints. This fully compensates for the schema's lack of descriptions.

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 clearly states 'Top streams by volume + high-cardinality (high-churn) label warnings' and explains it ranks streams, flags labels with many distinct values, and adds retention hints. This specific verb+resource distinguishes it from sibling tools like loki_query or log_error_burst_rca.

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

Usage Guidelines3/5

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

The usage is implied through the analysis-focused description, but there are no explicit when-to-use or alternative selection instructions. It doesn't say 'use this instead of loki_query' or list exclusions. However, the function is clear enough that an agent could infer its purpose.

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

loki_labelsA

[READ] Distinct Loki label names present in the lookback window.

Args: hours: Lookback window in hours (capped at the tool's max lookback). target: Loki target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNo
targetNo

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It does mention that hours are 'capped at the tool's max lookback' and that target defaults, which is useful. However, it omits how results are returned (e.g., sorted? includes internal labels?), any authentication/permission requirements, rate limits, or behavior on empty result sets. The [READ] prefix is a manual cue, not an annotation.

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?

The description is very concise: a one-line purpose followed by a compact argument list. Every sentence contributes meaningful information, with no redundancy or fluff. The structure is easy to scan and front-loads the purpose.

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

Completeness3/5

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

Given the tool's simplicity, the description gives enough to understand what it does and how to invoke it. However, without an output schema or annotations, it does not describe the return format or edge cases (e.g., empty results, error conditions). It also does not mention whether all label names are returned or only those from specific metric types. This leaves some gaps for an agent to fully rely on.

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 0%, so the description must compensate. It does explain both parameters with additional meaning: hours is a lookback window with a cap, target is a named Loki target from config and is optional with a default. This goes beyond the bare type information in the schema.

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 clearly states the tool's purpose: 'Distinct Loki label names present in the lookback window.' This uses a specific resource (Loki label names) and action (listing distinct names), distinguishing it from siblings like loki_label_values (which likely returns values for a given label) and loki_query/loki_tail_errors.

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

Usage Guidelines3/5

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

The description provides usage context for the parameters: 'hours: Lookback window in hours' and 'target: Loki target name from config; omit for the default.' However, it does not explicitly state when to use this tool versus alternatives, nor does it give exclusion criteria. The reader must infer its niche from the name and sibling tools.

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

loki_label_valuesA

[READ] Distinct values of one Loki label (bounded).

Args: name: Label name to enumerate (e.g. 'app', 'namespace'). hours: Lookback window in hours (capped at the tool's max lookback). target: Loki target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
hoursNo
targetNo

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden for behavioral disclosure. It discloses that results are 'bounded' and that 'hours' is capped at the tool's max lookback, and notes 'target' is optional. However, it does not describe the return format, error behavior, or any side effects beyond the implicit read-only nature signaled by '[READ]'.

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?

The description is concise and well-structured: a one-line summary followed by a terse Args list. Every sentence adds value, with no redundant information. It is appropriately sized for the tool's simplicity.

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

Completeness3/5

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

For a simple read-only tool with three parameters and no output schema, the description covers purpose and parameters well. However, it lacks usage differentiation from sibling tools (like 'label_values') and does not mention the expected return format or any special behavior beyond 'bounded.' While not required by an output schema, this information would enhance completeness.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. The Args section explains each parameter clearly: 'name' with an example, 'hours' noting the max lookback cap, and 'target' indicating it can be omitted for the default. This fully compensates for the missing schema-level descriptions and adds constraints not visible in the schema.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Distinct values of one Loki label (bounded).' This is specific with a verb (get distinct values) and resource (Loki label). While sibling tools like 'loki_labels' and 'label_values' exist, the description explicitly scopes to Loki and distinct values, reducing ambiguity. However, it does not explicitly differentiate from these siblings in the description.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives. It does not mention 'Use this instead of loki_labels for listing label names' or 'Use label_values for Prometheus.' The Args section implies a use case, but no clear context or exclusions are given.

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

loki_queryA

[READ] Bounded LogQL query_range passthrough (validation-gated).

The query MUST carry a stream selector (e.g. '{app="api"}') — an unbounded query with no selector is rejected. Lookback is capped and the line count is clamped.

Args: logql: A LogQL query with a stream selector (e.g. '{job="api"} |= "error"'). hours: Lookback window in hours (capped at the tool's max lookback). limit: Max log lines to return (clamped to the tool's max line limit). target: Loki target name from config; omit for the default.

Returns an envelope with returned/limit/truncated. If truncated is true the result is partial — re-run with a higher limit.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNo
limitNo
logqlYes
targetNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavioral traits: it is read-only ('[READ]'), validation-gated, imposes a required stream selector, caps lookback and line count, and returns an envelope with 'returned'/'limit'/'truncated' including guidance on re-running if truncated. This goes beyond a basic description and informs the agent of constraints and partial-result handling.

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?

The description is concise yet structured: a one-line summary, a note on the stream selector requirement, a compact args list, and a return-behavior note. Every sentence adds value and there is no redundancy or fluff. The formatting (bold summary, args list) aids scanning.

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?

For a query tool with 4 parameters and no output schema, this description is complete: it covers constraints, usage, and return semantics. It explains what 'truncated' means and how to handle partial results. No critical behavioral aspect is missing, making it sufficient for an agent to select and invoke the tool correctly.

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

Parameters5/5

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

The input schema has 0% description coverage, but the description thoroughly compensates by explaining each parameter: logql (with example), hours (capped), limit (clamped), and target (config reference, default). It adds meaning, constraints, and defaults beyond the schema, making the tool actionable.

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 clearly states this is a 'Bounded LogQL query_range passthrough' with specific constraints (stream selector required, capped lookback, clamped line count). It distinguishes itself from sibling tools like loki_tail_errors and loki_labels by focusing on range queries over log streams. The verb 'query' and resource 'Loki' are explicit.

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 that this is for bounded LogQL range queries with a mandatory stream selector, and notes that unbounded queries are rejected. It does not explicitly name alternatives or describe when-not-to-use, but the context implies its use case. No exclusions or alternates are given, though the sibling list contains loki_tail_errors, loki_labels, etc.

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

loki_tail_errorsA

[READ] Canned error-level read for a stream selector (error line-filter).

Args: selector: A Loki stream selector (e.g. '{app="api"}' or 'app="api"'). hours: Lookback window in hours (capped at the tool's max lookback). limit: Max log lines to return (clamped to the tool's max line limit). target: Loki target name from config; omit for the default.

Returns an envelope with returned/limit/truncated. If truncated is true the result is partial — re-run with a higher limit.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNo
limitNo
targetNo
selectorYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations exist, so the description carries the transparency burden. It discloses the read-only nature via '[READ]', clamping/capping behavior for hours and limit, and details the return envelope including 'truncated' semantics with guidance to re-run with a higher limit. This is solid behavioral disclosure, though it does not discuss auth or rate limits.

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?

The description is front-loaded with the core purpose, followed by a concise parameter list and return semantics. Every sentence provides necessary information with no fluff or 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?

For a simple 4-parameter read tool with no output schema, this description covers the operational behavior completely: input parameters, limits, return shape, and how to handle truncation. It is self-sufficient and does not require additional context.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully explains each parameter: selector with examples, hours as a capped lookback, limit as clamped max lines, and target as an optional config name. This adds essential meaning beyond the bare schema properties.

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 clearly states the tool performs a 'canned error-level read' for a stream selector, with a specific verb (read), resource (Loki stream selector), and scope (error-level line filter). This distinguishes it from the general loki_query sibling and other alert/log tools.

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

Usage Guidelines3/5

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

Usage is only implied—'canned error-level read' suggests when to use it (for error-level logs) but no explicit when-not-to-use or alternative tool is mentioned. It lacks direct comparative guidance against siblings like loki_query or alert_log_context.

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

observability_overviewA

[READ] Platform-aware health snapshot for the target.

Prometheus: firing-alert count + scrape up/down + rules erroring. Grafana: dashboard / datasource / folder counts.

Args: target: Target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. The leading `[READ]` tag communicates read-only behavior, and the summary of included counts indicates what to expect. Yet it does not disclose potential partial-failure behavior, caching, or requirements beyond the target from config, leaving some behavioral gaps.

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?

The description is compact and front-loaded: a one-sentence summary, a bullet-like breakdown of included metrics, and a short Args note. Every sentence adds information without padding or redundancy.

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

Completeness4/5

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

For a read-only snapshot tool with one optional parameter and no output schema, the description covers the purpose, main return contents, and parameter semantics. It is sufficient for an agent to select and invoke the tool, though it could mention behavior when a platform is unreachable.

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?

The schema provides only a `target` parameter with no description (0% coverage). The description compensates by explaining it is 'Target name from config; omit for the default,' giving semantic meaning to the parameter's usage and default behavior, which is essential since the schema offers no help.

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 '[READ] Platform-aware health snapshot for the target,' providing a clear action (snapshot) and resource (target's platform health). It then enumerates specific metrics (Prometheus alert count, scrape up/down, rules erroring; Grafana counts), distinguishing it from more granular sibling tools like `firing_alerts` or `list_dashboards`.

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 phrase 'health snapshot' implies a high-level overview use-case, which clearly contextualizes when to use it relative to more detailed sibling tools. However, it does not explicitly name alternatives or state when not to use it, so it stops short of the full guidance level.

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

pending_alertsA

[READ] Pending (not-yet-firing) Prometheus rule alerts, by severity.

Args: target: Prometheus target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses read-only behavior via the '[READ]' prefix, which is useful. However, it does not describe return format, potential filtering, or any edge cases. For a simple read tool, this is adequate but not rich.

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?

The description is extremely concise and front-loaded, with a clear heading and a one-line parameter explanation. Each element serves a purpose, and there is no wasted text.

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

Completeness4/5

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

Given the tool's simplicity (one optional parameter, no output schema), the description covers the core purpose and the parameter. It does not explain what 'by severity' means for output, but that is a minor gap for a read-only list tool. The description is sufficient for basic invocation.

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?

The schema has 0% description coverage, but the description adds a concise 'Args' section explaining the target parameter: 'Prometheus target name from config; omit for the default.' This adds significant meaning beyond the schema's bare title and default value, effectively compensating for the schema's lack of documentation.

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 '[READ] Pending (not-yet-firing) Prometheus rule alerts, by severity.' This clearly identifies a specific verb (READ), a resource (Prometheus rule alerts), and a scope (pending, not-yet-firing, by severity), distinguishing it from siblings like firing_alerts.

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

Usage Guidelines3/5

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

The description implies usage by stating 'Pending (not-yet-firing)' but does not explicitly mention alternatives or when not to use this tool. It does not name sibling tools like firing_alerts or alertmanager_alerts, so the usage context is clear but not fully differentiated.

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

prometheus_config_statusA

[READ] Running-config fingerprint + size (never the raw YAML/secrets).

Args: target: Prometheus target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A3.7/5.0
Behavior4/5

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

No annotations are present, so the description carries the full burden. It usefully discloses a key behavioral trait: 'never the raw YAML/secrets', which addresses security concerns. However, it does not mention error conditions, authentication requirements, or side effects, though for a read-only status tool these are less critical. The safety disclosure is valuable but not exhaustive.

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?

The description is extremely concise and well-structured. It opens with the read indicator and core output, then provides a compact Args section. Every phrase earns its place with no filler, making it easy to scan and understand quickly.

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

Completeness3/5

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

For a single-parameter read-only tool, the description covers the purpose and parameter semantics adequately. However, since there is no output schema, it does not describe the return format (e.g., what fields are returned for 'fingerprint' and 'size'), nor does it clarify units or the meaning of the default target. This leaves moderate gaps for an agent that must interpret the result.

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

Parameters3/5

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

The description adds meaning to the sole parameter 'target' by explaining it is a Prometheus target name and that omitting it uses the default. This is helpful beyond the bare schema, which has no description. Yet it leaves ambiguity about what 'default' refers to and what constitutes a valid target name, so it only partially compensates for the 0% schema coverage.

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 clearly identifies the tool as a read operation ('[READ]') that retrieves a running-config fingerprint and size, and explicitly states it never returns raw YAML/secrets. This makes the tool's specific purpose unmistakable and distinguishes it from sibling tools like reload_prometheus_config or prometheus_tsdb_status.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention typical use cases, prerequisites, or exclusions, such as checking config after a reload or comparing fingerprints. The only implied usage is for inspecting the running config, but no explicit context is given.

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

prometheus_tsdb_statusA

[READ] TSDB head cardinality stats + the top metrics by series count.

Args: target: Prometheus target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses read-only intent via [READ] and describes the return content, but omits details like required permissions, performance implications, or output format.

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?

The description is two sentences, front-loaded with [READ], and contains no filler. Every phrase adds value, making it appropriately concise for the tool's simplicity.

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

Completeness4/5

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

For a one-parameter read tool with no output schema, the description gives a reasonable high-level view of what is returned: head cardinality stats and top metrics by series count. It could specify the exact structure of those stats, but overall it is adequate.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates for the single parameter. It explains target as a Prometheus target name from config and the omit-for-default behavior, adding clear meaning beyond the raw schema.

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

Purpose4/5

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

The description identifies a specific resource (TSDB head cardinality stats) and result (top metrics by series count), prefixed with [READ]. It distinguishes from siblings like prometheus_config_status or instant_query, though it lacks an explicit verb such as 'get' or 'list'.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. The description only explains the target argument and provides no context about use cases, prerequisites, or exclusions.

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

range_queryA

[READ] Evaluate a PromQL expression over a time range.

Args: query: A PromQL expression. start: Range start (RFC-3339 or unix timestamp). end: Range end (RFC-3339 or unix timestamp). step: Resolution step (e.g. '60s', '5m'). target: Prometheus target name from config; omit for the default.

Returns an envelope with returned/limit/truncated. If truncated is true the result is partial — narrow the selector or raise the limit rather than treating it as complete.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
stepNo60s
queryYes
startYes
targetNo

TDQS

A4.3/5.0
Behavior4/5

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

It discloses the return envelope (returned/limit/truncated) and explicitly warns that truncated results are partial, advising the agent to narrow the selector or raise the limit. With no annotations provided, this adds essential behavioral context, though it omits error handling or authentication details.

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?

The description is compact and well-structured, starting with a clear purpose line, then a parameter list, and a note about the return envelope. Every sentence adds value with no redundant or filler content.

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

Completeness4/5

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

It covers all input parameters, the return envelope, and truncation semantics, making the tool mostly self-contained. However, it mentions 'raise the limit' without explaining how, and does not address error behavior, leaving a minor gap for an agent handling unexpected outcomes.

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

Parameters5/5

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

The description explains every parameter, including time formats for start/end, examples for step, and the meaning of the optional target. This goes far beyond the schema's bare type/title definitions and fully compensates for the 0% schema description coverage.

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 '[READ] Evaluate a PromQL expression over a time range,' clearly stating the action (evaluate), resource (PromQL expression), and scope (time range). This distinctively separates it from sibling tools like instant_query and loki_query.

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

Usage Guidelines3/5

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

The description implies usage for time-range queries but does not explicitly contrast with alternatives such as instant_query or specify when not to use it. No exclusions or alternative tool references are provided, so guidance is inferred rather than explicit.

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

reload_prometheus_configA

[WRITE][risk=medium] Hot-reload the Prometheus config (POST /-/reload). No undo.

Records the pre-reload config hash. Rollback = re-apply the prior config file.

Args: dry_run: If True, preview (reports the current config hash) without reloading. target: Prometheus target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
dry_runNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full transparency burden. It discloses the write/risk level, the no-undo guarantee, the pre-reload hash recording, and the rollback procedure, plus dry_run preview behavior. This goes well beyond a bare 'reload config' statement.

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?

The description is compact and uses a clear [WRITE]/risk prefix, then two short sentences of behavior/rollback, followed by an Args list. Every sentence adds distinct value and the formatting is easy to scan.

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?

For a mutating tool with no output schema and no annotations, the description covers the core invocation needs: purpose, risk, irreversible side effect, rollback path, and parameter behavior. It does not detail the success/error response, but that is not essential for selecting and invoking the tool correctly.

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

Parameters5/5

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

The schema provides no parameter descriptions (0% coverage), so the description compensates by explaining both parameters: dry_run's preview semantics and target's meaning/default. This gives the agent enough to pass arguments correctly.

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 '[WRITE][risk=medium] Hot-reload the Prometheus config (POST /-/reload)', clearly identifying the action and resource. It distinguishes this write operation from read-only sibling tools like prometheus_config_status and prometheus_tsdb_status.

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 frames the tool as a hot-reload operation and warns about irreversibility, giving the agent a clear basis for selecting it when a config reload is needed. However, it does not explicitly contrast with sibling tools such as prometheus_config_status, nor state when not to use it; the usage context is implied rather than explicit.

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

rule_healthA

[READ] Rule-evaluation health summary + the list of erroring rules.

Args: target: Prometheus target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavioral traits. It includes '[READ]' to indicate a read-only operation and states the output type ('health summary + list of erroring rules'). However, it does not detail what constitutes 'health', what an 'erroring rule' includes, or any potential side effects or prerequisites beyond the target parameter. The description adds some value but leaves room for more disclosure.

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?

The description is extremely concise: one sentence for purpose and a single-line Args section. It is front-loaded with '[READ]' and immediately conveys the tool's function. Every sentence earns its place, with no filler or redundant information.

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

Completeness3/5

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

With only one parameter, no output schema, and no annotations, the description is adequate for basic use but lacks detail on the return format and the meaning of 'health summary.' It does not explain what the list of erroring rules contains (e.g., names, severities). Given the tool's simplicity, the description is minimally complete but has clear gaps in output expectations and usage context.

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 0%, but the description compensates by explaining the only parameter: 'target: Prometheus target name from config; omit for the default.' This adds meaningful context about what the parameter is for and how to use it, which the schema alone does not provide. The explanation is clear and sufficient for this simple parameter.

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 clearly states the tool's function: 'Rule-evaluation health summary + the list of erroring rules.' The '[READ]' prefix acts as a verb indicating a read operation, and the resource (rule evaluation health) is specific enough to distinguish it from siblings like list_rules or target_scrape_health.

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

Usage Guidelines3/5

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

The description implies usage through its title and content—if you need rule evaluation health, use this tool—and provides parameter-level guidance ('target: Prometheus target name from config; omit for the default'). However, it does not explicitly state when to use this tool versus alternatives (e.g., list_rules) or provide exclusions, so the usage guidance is only implied, not explicit.

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

series_metadataA

[READ] Series (label-set) metadata for a PromQL selector.

Args: match: A PromQL series selector (e.g. 'up{job="node"}'). start: Optional range start (RFC-3339 or unix timestamp). end: Optional range end (RFC-3339 or unix timestamp). target: Prometheus target name from config; omit for the default.

Returns an envelope with returned/limit/truncated. If truncated is true the result is partial — narrow the selector or raise the limit rather than treating it as complete.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNo
matchYes
startNo
targetNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses read-only intent via '[READ]', explains the return envelope with returned/limit/truncated, and explicitly warns that truncated results are partial, advising corrective action. This is solid but doesn't cover every possible behavior like auth or error conditions.

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?

The description is well-structured: a one-line purpose, a concise Args list with four entries, and a short return note. No filler; each sentence adds useful information. The front-loaded [READ] tag immediately communicates the operation type.

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

Completeness4/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 does the necessary work of explaining the return envelope and the critical truncation caveat. It also covers all parameters. It could give a bit more detail on the exact shape of the metadata entries, but 'label-set metadata' conveys the core idea, so it is sufficiently complete.

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

Parameters5/5

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

The schema has no parameter descriptions (0% coverage), but the description fully compensates: match is explained with a PromQL example, start and end specify format (RFC-3339 or unix timestamp), and target clarifies it is the Prometheus target name with a default. Every parameter gets meaningful semantic detail.

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 '[READ] Series (label-set) metadata for a PromQL selector,' which clearly identifies the verb (read), resource (series metadata), and input (PromQL selector). This distinguishes it from data-returning tools like instant_query or range_query and from label_values.

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 gives concrete guidance on using the tool: what match is, optional start/end, and target selection. It also advises how to handle truncated results. However, it does not explicitly state when not to use this tool or name alternatives, so it falls short of the highest bar.

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

target_scrape_healthA

[READ] Up/down scrape-health summary plus the list of unhealthy targets.

Args: target: Prometheus target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the `[READ]` prefix provides some behavioral disclosure, indicating this is a read-only operation. However, it does not mention error handling, permission needs, or what happens when an invalid target is given, leaving gaps in behavioral transparency.

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?

The description is two sentences long, front-loaded with the main purpose, and clearly formatted with an Args section. Every sentence adds value with no redundancy.

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

Completeness4/5

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

For a simple read-only tool with one optional parameter and no output schema, the description adequately covers the purpose, parameter, and output. It lacks details like the default target name or output structure, but these are not critical for basic selection and invocation.

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?

The schema has one parameter with no description (0% coverage), but the description compensates by explaining the target is a Prometheus target name from config and that omitting it uses the default. This adds meaningful semantic context beyond the raw schema.

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

Purpose4/5

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

The description clearly states the tool provides an up/down scrape-health summary plus the list of unhealthy targets, identifying the resource and output. The `[READ]` prefix and mention of 'summary' distinguish it from more analytic siblings like target_scrape_health_analysis, though it does not explicitly contrast itself with them.

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

Usage Guidelines2/5

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

The description gives no guidance on when to choose this tool over alternatives like target_scrape_health_analysis, dropped_targets, or list_targets. It only explains the target parameter, not the intended use case or exclusions.

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

target_scrape_health_analysisB

[READ][analysis] Rank down/erroring scrape targets and classify each cause.

Args: target: Prometheus target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the burden. The '[READ]' tag explicitly declares a read-only operation, which is useful. However, it does not disclose potential costs, permission requirements, or what the output format will be.

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?

The description is extremely concise, consisting of two lines plus an args section. The [READ][analysis] tags front-load essential context with no wasted words.

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

Completeness3/5

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

For a simple one-parameter tool, the description covers purpose and parameter meaning. However, without an output schema, it does not explain the return format or how the cause classification is presented, and it lacks comparison to sibling tools.

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?

The description adds meaning beyond the schema by explaining 'target' as a Prometheus target name from config and instructing to omit it for the default. This compensates for the 0% schema description coverage.

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

Purpose4/5

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

The description states 'Rank down/erroring scrape targets and classify each cause,' which is a specific verb+resource and clearly indicates an analysis tool. It distinguishes from simple target listing but does not explicitly differentiate from the sibling tool 'target_scrape_health'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like target_scrape_health or dropped_targets. Only the parameter instruction 'omit for the default' is given, which is not usage context.

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

undo_applyA

[WRITE][risk=medium] Apply a recorded undo by dispatching its inverse tool.

The inverse runs through its own governed tool, so its real risk tier is recorded there too. Pass dry_run=True to preview the inverse call without executing it. A token can only be applied once.

Args: undo_id: The undoId from undo_list (or an _undo_id in a write result). dry_run: If True, preview the inverse tool + params without running it. target: Passed through to the inverse tool when it accepts a target.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
dry_runNo
undo_idYes

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses that the inverse runs through its own governed tool, making the 'real risk tier recorded there,' and explains the dry_run preview and single-use token behavior. While it doesn't cover permissions or full consequences of applying, this is solid transparency for a mutating tool without annotation support.

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?

The description is well-structured and concise, starting with a clear summary sentence, then necessary behavioral notes, and a structured Args section. Every sentence contributes value: the risk-tier note, dry_run preview, single-use constraint, and parameter explanations are all essential. It is front-loaded with the summary and avoids redundancy.

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

Completeness4/5

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

Given there is no output schema, the description need not explain return values. It covers the tool's purpose, usage context, parameter semantics, and key behavioral traits (preview, single-use). The only minor gap is lack of what to expect after a successful apply (e.g., confirmation), but this is not critical for a simple tool with three parameters.

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

Parameters5/5

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

Schema description coverage is 0%, and the description compensates excellently by explaining each parameter. undo_id is defined as coming from undo_list or _undo_id in write results, dry_run is described as previewing the inverse call, and target is explained as being passed through to the inverse tool. This adds significant meaning beyond the bare schema fields.

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 clearly states the tool's function: 'Apply a recorded undo by dispatching its inverse tool.' This is a specific verb+resource combination that distinguishes it from sibling undo_list, which lists undos. The reference to undo_id from undo_list further differentiates the apply action from listing.

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: you apply a recorded undo, can preview with dry_run=True, and a token can only be applied once. It explains where to obtain undo_id, but does not explicitly state when not to use the tool or name alternatives beyond the implicit undo_list. This is clear context without explicit exclusions, earning a 4.

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

undo_listA

[READ] List recorded, not-yet-applied undo tokens (most recent first).

Each entry names the original tool, the inverse tool that undo_apply would run, and a human note. Use the undoId with undo_apply.

truncated is measured (one extra row is fetched), not guessed from a length coincidence — when it is true, re-run with a higher limit.

Each entry carries effectVerified. False means the original write lost its response, so the change it reverses is PROBABLE, not confirmed — check the live state before applying, and do not report the result as a restore of a state that may never have been reached.

Args: limit: Max rows to return (default 50). target: Unused (undo state is host-local); accepted for CLI uniformity.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
targetNo

TDQS

A4.7/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden. It discloses that the operation is read-only, explains the 'truncated' flag is measured via an extra row, and details the 'effectVerified' field, including the caution not to report unverified restores. This is exemplary transparency.

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?

The description is dense but every sentence provides valuable information: entry contents, usage, truncation semantics, effectVerified nuance, and parameter details. The structure with an 'Args' section keeps it organized with no fluff.

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?

There is no output schema, but the description covers return field semantics (entry fields, undoId, effectVerified), truncation behavior, and usage. It also warns about probabilistic reversals. This is complete for a list tool of this 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 description coverage is 0%, so the description must explain both parameters. It does so: 'limit' as max rows with default 50, and 'target' as unused but accepted for CLI uniformity. This fully compensates for the missing schema descriptions.

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 '[READ] List recorded, not-yet-applied undo tokens (most recent first)', which clearly states the verb ('list'), the resource ('recorded, not-yet-applied undo tokens'), and scope. It distinguishes itself from the sibling tool 'undo_apply' by directly mentioning that the returned undoId is used with undo_apply.

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 explicitly instructs to use 'undoId' with 'undo_apply' and explains the 'target' parameter is unused for CLI uniformity. It does not explicitly name alternative tools or when not to use it, but the context is clear enough for a list operation.

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

update_dashboardA

[WRITE][risk=medium] Update a Grafana dashboard. Captures the prior model for undo.

The dashboard model must include its uid. The current model is fetched first and stashed so the harness records a restore undo.

Args: dashboard: Full dashboard model (must include "uid"). overwrite: Overwrite the existing dashboard version (default True). dry_run: If True, preview without updating. target: Grafana target name from config; omit for the default.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
dry_runNo
dashboardYes
overwriteNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It goes beyond the bare minimum by stating it is a write operation, captures the prior model for undo, fetches the current model, and supports dry_run. Minor omissions include permission requirements and behavior on version conflicts, but overall it is transparent.

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 well-organized with a front-loaded '[WRITE][risk=medium]' tag, then concise argument explanations. It is slightly redundant in mentioning the uid requirement twice (once in the opening sentence and again in the dashboard parameter), but otherwise every sentence adds value.

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

Completeness4/5

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

Given the tool's complexity (nested dashboard object, no output schema, no annotations), the description covers purpose, parameters, and behavior adequately. It lacks details on return value or failure modes, but for common update operations it is sufficient for an agent to select and invoke correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully compensate. It does: dashboard is clarified as a full model requiring 'uid', overwrite has a default of True, dry_run previews, and target comes from config. This gives complete meaning beyond the raw schema fields.

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 clearly states 'Update a Grafana dashboard' with a specific verb and resource, distinguishing it from sibling read/list/delete tools. It also adds context about capturing the prior model for undo, which clarifies its unique role.

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 clearly conveys when to use this tool (to modify an existing dashboard) and includes important context like the required 'uid' and the overwrite/dry_run options. However, it does not explicitly mention alternatives or when not to use it, so it stops short of a 5.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 39 tool updatesv0.7.0
    • First observedalert_log_context
    • First observedalert_noise_and_flap_analysis
    • First observedalertmanager_alerts
    • First observedcreate_annotation
    • First observedcreate_silence
    • First observeddatasource_health
    • First observeddelete_dashboard
    • First observeddropped_targets
    • First observedexpire_silence
    • First observedfiring_alert_rca
    • First observedfiring_alerts
    • First observedget_dashboard
    • First observedinstant_query
    • First observedlabel_values
    • First observedlist_dashboards
    • First observedlist_datasources
    • First observedlist_folders
    • First observedlist_rules
    • First observedlist_silences
    • First observedlist_targets
    • First observedlog_error_burst_rca
    • First observedlog_volume_analysis
    • First observedloki_label_values
    • First observedloki_labels
    • First observedloki_query
    • First observedloki_tail_errors
    • First observedobservability_overview
    • First observedpending_alerts
    • First observedprometheus_config_status
    • First observedprometheus_tsdb_status
    • First observedrange_query
    • First observedreload_prometheus_config
    • First observedrule_health
    • First observedseries_metadata
    • First observedtarget_scrape_health
    • First observedtarget_scrape_health_analysis
    • First observedundo_apply
    • First observedundo_list
    • First observedupdate_dashboard

TDQS

B3.3/5.0
Disambiguation3/5

Several tool pairs overlap: list_targets and target_scrape_health both report scrape health; alertmanager_alerts and firing_alerts both surface alerts; loki_query and loki_tail_errors both pull log lines. Descriptions differentiate them, but the boundaries are not always obvious, and some redundancy exists.

Naming Consistency2/5

Tool names mix verb-first (list_*, create_*, delete_*) with noun-first (firing_alerts, prometheus_config_status, target_scrape_health). Acronyms like RCA and inconsistent phrasing (alert_noise_and_flap_analysis vs rule_health) break any predictable pattern, making the set feel inconsistent.

Tool Count2/5

39 tools is excessive for a single server, well above the 25-tool threshold. While the scope spans Prometheus, Alertmanager, Grafana, Loki, and analysis, a set this large strains agent navigation and could be split into per-signal servers.

Completeness3/5

Core read and analysis operations are strong, but write coverage has gaps: no create_dashboard (only update/delete), no delete annotation, and no update for silences (only create/expire). These missing lifecycle operations leave some workflows with dead ends, though the main observability tasks are covered.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Governed PostgreSQL DBA operations — slow-query, bloat, and blocking-lock RCA, index management, vacuum/analyze, and replication lag, with unbypassable audit logging (MCP + CLI), budget/runaway guards, dry-run, and undo/rollback.
    35
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Governed CI/CD operations for self-hosted GitLab and Gitea — pipeline-failure, runner, artifact-bloat, and stale-branch RCA, with unbypassable audit logging (MCP + CLI), budget/runaway guards, dry-run, and undo/rollback.
    28
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Governed MinIO object-storage operations — capacity, exposure-surface audit, lifecycle, and healing RCA, with guarded bucket writes, unbypassable audit logging (MCP + CLI), budget/runaway guards, dry-run, and undo/rollback.
    48
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Governed reverse-proxy operations for Traefik, Caddy, and HAProxy — backend-health, cert-expiry, 5xx, and route-conflict RCA, with unbypassable audit logging (MCP + CLI), budget/runaway guards, dry-run, and undo/rollback.
    28
    MIT

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/AIops-tools/Observability-AIops'

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