Skip to main content
Glama
kubeopsai

k8s-telemetry-mcp

by kubeopsai

K8s Telemetry MCP Server

Give your AI assistant read-only access to your Kubernetes cluster's observability stack.

Connect Amazon Q, Claude, Kiro, Cursor, or any MCP-compatible AI assistant to Loki, Prometheus, Tempo, and the Kubernetes API — via a single Helm install.

License Version Helm


How It Works

You ──► AI Assistant (Amazon Q / Claude / Kiro / Cursor)
              │
              ▼  MCP tool calls (stdio via kubectl exec)
        K8s Telemetry MCP Server
              │
        ┌─────┼──────┬──────────┬──────┐
        ▼     ▼      ▼          ▼      ▼
      Loki  Prom   Tempo    K8s API   AWS

The server runs as a pod inside your cluster. Your AI assistant connects via kubectl exec — no ingress, no exposed ports, no API keys.


Related MCP server: @argosvix/mcp-server

Quick Start

1. Install via Helm

helm repo add k8s-telemetry-mcp https://kubeopsai.github.io/k8s-telemetry-mcp
helm repo update

helm install k8s-telemetry-mcp k8s-telemetry-mcp/k8s-telemetry-mcp \
  --namespace monitoring --create-namespace \
  --set config.lokiUrl=http://loki.monitoring:3100 \
  --set config.prometheusUrl=http://prometheus-server.monitoring:9090 \
  --set config.tempoUrl=http://tempo.monitoring:3200

Label your observability namespace. The bundled NetworkPolicy only allows egress to a namespace labelled name: <namespace>. Kubernetes does not add that label for you, and without it every query is blocked:

kubectl label namespace monitoring name=monitoring

2. Configure Your AI Assistant

Prerequisites: Your AI assistant runs kubectl exec locally. Ensure kubectl is in your PATH and your active kubeconfig context points to the cluster where the MCP server is installed.

Amazon Q Developer~/.aws/amazonq/mcp.json:

{
  "mcpServers": {
    "k8s-telemetry": {
      "command": "kubectl",
      "args": ["exec", "-i", "-n", "monitoring", "deploy/k8s-telemetry-mcp", "--", "k8s-telemetry-mcp"]
    }
  }
}

Claude Desktop / Kiro / Cursorclaude_desktop_config.json:

{
  "mcpServers": {
    "k8s-telemetry": {
      "command": "kubectl",
      "args": ["exec", "-i", "-n", "monitoring", "deploy/k8s-telemetry-mcp", "--", "k8s-telemetry-mcp"]
    }
  }
}

3. Start Asking Questions

"Why did the payment pod crash in the last hour?"
"Is the checkout service meeting its 99.9% SLO this week?"
"Which namespace is consuming the most resources?"
"Who deleted the payment-service deployment?"
"Which ECR images have critical vulnerabilities?"
"Why is my pod pending? Show me the Kubernetes events."
"What deployments went out in the last 30 minutes?"
"Is my RDS instance showing slow queries?"

23 tools Across 6 Categories

Logs

Tool

Description

query_pod_logs

Query logs from a pod or regex pattern. PII/secrets auto-redacted.

query_logs_custom

Execute a raw LogQL / Datadog / CloudWatch Insights query.

Metrics

Tool

Description

get_pod_metrics

CPU, memory, restarts, network for a pod.

query_prometheus

Execute a raw PromQL query (instant or range).

get_cluster_health

Node count, pod status, CPU/memory utilization snapshot.

Traces

Tool

Description

get_trace

Retrieve a full distributed trace by ID from Tempo.

search_traces

Search traces by service, operation, tags, or duration.

Analytics

Tool

Description

analyze_logs

Pattern detection, error categorization, and recommendations.

build_incident_timeline

Correlate logs, metrics, and traces into a chronological timeline.

enrich_alert

Full context for a firing alert: logs + metrics + traces + suggestions.

get_resource_costs

Cost attribution by namespace with optimization suggestions.

check_slo_status

Error budget, burn rate, and SLO compliance status.

Kubernetes

Tool

Description

get_k8s_events

Events for a namespace or pod — answers OOMKilled/Pending/CrashLoop questions.

get_scaling_history

HPA scaling history and current autoscaler status.

get_node_pressure

Node MemoryPressure, DiskPressure, PIDPressure, and eviction status.

get_recent_deployments

What was rolled out in the last N minutes.

get_alertmanager_history

Recent alerts and active silences from Alertmanager.

AWS

Tool

Description

query_cloudtrail

Search CloudTrail events by keyword, event name, user, or resource.

get_resource_history

Full audit trail for a specific AWS resource ID or ARN.

get_resource_compliance

AWS Config compliance status — drift and non-compliant rules.

get_configuration_history

What actually changed on a resource, with field-level before/after diffs.

get_image_vulnerabilities

ECR image vulnerability findings via Inspector v2 or basic scan.

get_database_insights

RDS Performance Insights and ElastiCache CloudWatch metrics.


Configuration

All settings use the MCP_ prefix:

Variable

Default

Description

MCP_LOKI_URL

""

Loki endpoint

MCP_PROMETHEUS_URL

""

Prometheus endpoint

MCP_TEMPO_URL

""

Tempo endpoint

MCP_ALERTMANAGER_URL

""

Alertmanager endpoint

MCP_ALERTMANAGER_URL

""

Alertmanager endpoint (required for get_alertmanager_history)

MCP_AWS_REGION

us-east-1

AWS region for CloudTrail/Config/ECR/RDS tools

MCP_DATADOG_API_KEY

""

Datadog API key (overrides Loki/Prometheus)

MCP_CLOUDWATCH_LOG_GROUP

""

CloudWatch log group (overrides Loki)

MCP_ENABLE_SANITIZATION

true

Auto-redact PII and secrets

MCP_MAX_LOG_LINES

500

Max log lines per query

MCP_MAX_QUERY_RANGE_HOURS

24

Max query time range

MCP_LOG_LEVEL

INFO

Log level


Security

  • Read-only: All 23 tools are strictly read-only. No write, delete, or mutation operations anywhere in the codebase.

  • No ingress: Communicates over stdio via kubectl exec. No exposed ports, no load balancers, no API key to rotate. Note the corollary: exec access to the pod is equivalent to read access to your telemetry, so restrict it accordingly.

  • RBAC: A scoped ClusterRole grants get/list on events, nodes, deployments, replicasets, and HPAs. No watch, no wildcards, no secrets, no pods/exec, no pods/log.

  • NetworkPolicy: Restricts egress to your observability stack, DNS, and — only when the AWS tools are enabled — outbound HTTPS. Set networkPolicy.allowAwsApiEgress=false to remove that last rule.

  • Redaction: Best-effort regex scrubbing of AWS access keys, JWTs, bearer tokens, password=-style assignments, database URIs, emails, and card/SSN patterns before output reaches your assistant. It catches the textbook cases; it does not catch modern token formats (ghp_, xoxb-, sk_live_), unlabelled secrets, or Prometheus label values and RDS Performance Insights SQL text. Treat it as defence in depth rather than a compliance boundary — see the Security wiki page for the full list of what is and is not covered.

  • Container: non-root (uid 1001), read-only root filesystem, all capabilities dropped.

What runs in the pod

The MCP protocol here is stdio-based, and your assistant starts its own server process through kubectl exec. The pod's own process is a small host (k8s-telemetry-mcp-host) that keeps the pod alive for those sessions and answers the health probes. If you were expecting a long-running server listening on a port, there isn't one — that is by design.


Backends Supported

Backend

Logs

Metrics

Traces

Loki + Prometheus + Tempo

Datadog

CloudWatch


Local Development

pip install -e ".[dev]"

MCP_LOKI_URL=http://localhost:3100 \
MCP_PROMETHEUS_URL=http://localhost:9090 \
python -m k8s_telemetry_mcp.server

The server reads MCP requests on stdin, so run it from a terminal and paste a request, or point a local assistant at it. A quick handshake check:

echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | python -m k8s_telemetry_mcp.server

Before opening a PR:

ruff check k8s_telemetry_mcp/ tests/
pytest

⚡ From Free Tool to 3 AM Hero

Tuesday 2:00 PM — The Free Win

You're tracking down a staging issue. You type into Claude Desktop:

"Why did the checkout pod restart 10 minutes ago?"

Claude calls get_k8s_events and query_pod_logs. In seconds:

"The pod was OOMKilled. It hit its 512Mi limit after processing a large JSON payload."

Fixed in 3 minutes. You would have spent 20 minutes tabbing between Lens, Grafana, and CloudWatch.


Saturday 3:15 AM — The Pain

PagerDuty fires. High Latency — Payment Gateway.

You roll out of bed. VPN. Okta. AWS Console. Grafana. Loki. Prometheus. 25 minutes of manual digging to find that a bad database migration locked a table. You roll back the deployment. It's 4:30 AM. Sleep is gone.

The tool that diagnosed your OOMKilled pod in 3 minutes on Tuesday had all the access it needed to find this too — it just needed someone at a keyboard to ask.


Monday 9:00 AM — The Realization

In the incident review, you remember Tuesday. You open the GitHub README and scroll to the bottom.

What if the tool ran itself when the alert fired?

That's exactly what KubeOpsAI Agent does.


🤖 KubeOpsAI Agent — Automated Incident Response

KubeOpsAI hooks into your Alertmanager webhooks. When an alert fires at 3 AM, it investigates using 18 of these collectors and posts a root-cause analysis to your Slack incident channel — before PagerDuty even wakes your engineer up.

Read-only by design. The agent investigates and explains. Your engineer makes the call and runs the fix. This is exactly why security teams approve it in 5 minutes instead of 6 months.

Alerting fires at 3:14 AM
        │
        ▼
  KubeOpsAI Agent
  ├── get_k8s_events      → OOMKilled × 3 in 10 min
  ├── query_pod_logs      → cache.put() called 12,000×/min
  ├── get_recent_deployments → checkout-api v2.4.1 at 03:00 UTC
  └── get_pod_metrics     → memory 180Mi → 512Mi limit
        │
        ▼
  Slack #incidents at 3:15 AM
  "Root cause: unbounded cache in v2.4.1.
   Recommended action: rollback to v2.4.0."
        │
        ▼
  Engineer wakes up to answer, not questions.
  Back to sleep by 3:20 AM.
  • Zero human interaction required

  • Runs inside your cluster — your data never leaves your VPC

  • Bring your own LLM key (AWS Bedrock, Anthropic, OpenAI)

  • A separate commercial product, sold on AWS Marketplace. This MCP server is free and open source, and stays that way — KubeOpsAI builds on it.

👉 kubeopsai.net


License

Apache License 2.0 — see LICENSE for details.

Support

Available Tools

23 tools
analyze_logsA

Analyze logs for a service — detects errors, anomalies, and patterns with recommendations.

Args: service_name: Service/pod name or regex pattern namespace: Kubernetes namespace timeframe_minutes: How many minutes of logs to analyze (1-1440) limit: Maximum log lines to analyze (1-500)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
namespaceNodefault
service_nameYes
timeframe_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 the full disclosure burden. It describes the analytical behavior and input ranges, but it does not explicitly state whether the operation is read-only, what permissions are required, or any rate/cost limits. 'Analyze' implies non-mutating, but transparency is only partially addressed.

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: a one-line purpose summary followed by a concise Args list. Every line adds useful information that the schema does not provide, and the main purpose is front-loaded.

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?

With all four parameters explained and an output schema available for return shape, the core invocation contract is covered. The description could add explicit notes on access requirements or alternatives, but nothing essential for calling the tool correctly is missing.

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 Args section fully compensates: it explains that service_name can be a pod name or regex, namespace refers to a Kubernetes namespace, timeframe_minutes is in minutes with a 1-1440 range, and limit is the maximum log lines with a 1-500 range. This adds meaning well 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 action and resource: 'Analyze logs for a service'. It further clarifies the purpose by saying it 'detects errors, anomalies, and patterns with recommendations', which distinguishes it from sibling log-query tools like query_pod_logs or query_logs_custom.

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 analytical framing, but it does not explicitly state when to prefer this tool over alternatives or when not to use it. An agent must infer from the summary and sibling names that this is for insight rather than raw log retrieval.

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

build_incident_timelineA

Build a chronological incident timeline combining logs, metrics, and traces.

Args: service_name: Affected service name namespace: Kubernetes namespace timeframe_minutes: Time window to analyze (1-1440)

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceNodefault
service_nameYes
timeframe_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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. It does disclose the core behavior — aggregating and ordering logs, metrics, and traces into a timeline — but it does not mention failure modes when one source is unavailable, access/permission needs, rate limits, or whether any correlation logic is applied beyond chronology.

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?

One front-loaded purpose sentence followed by three compact argument lines. Every sentence earns its place; the arg annotations add out-of-schema value rather than repeating it, and there is zero filler.

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 tool of moderate complexity that aggregates three signal types, the description gives enough to invoke it correctly — all inputs are documented and an output schema covers return values. However, it lacks explicit usage guidance, behavioral caveats, and any sense of edge cases, which leaves the agent to guess when this is the preferred choice among the many observability siblings.

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, and it does: each parameter gets semantic meaning beyond the schema's bare titles — 'Affected service name' for service_name, 'Kubernetes namespace' for namespace, and an explicit valid range (1-1440) for timeframe_minutes. It could add a bit more (e.g., name format requirements), but all three parameters are meaningfully documented.

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 a specific verb ('Build'), a concrete deliverable ('chronological incident timeline'), and the three data sources it combines ('logs, metrics, and traces'), which implies a cross-signal aggregation tool. This differentiates it from siblings that query individual sources such as query_logs_custom, get_trace, or get_pod_metrics, though it never names them explicitly.

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 implied rather than stated: the agent can infer this tool is for a consolidated chronological view across logs, metrics, and traces, but there is no explicit when-to-use or when-not-to-use guidance, and no alternative tools are named or contrasted.

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

check_slo_statusA

Check SLO compliance — error budgets, burn rate, and availability vs. latency targets.

Args: service_name: Service to check namespace: Kubernetes namespace availability_target: Target availability (0.0-1.0, default 99.9%) latency_target_ms: Target latency in milliseconds latency_percentile: Latency percentile to measure (default p99) window_hours: Measurement window in hours (1-720)

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceNodefault
service_nameYes
window_hoursNo
latency_target_msNo
latency_percentileNo
availability_targetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/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. It discloses the analytical behavior (compliance, error budgets, burn rate, availability vs. latency) and the key input dimensions, which is solid. It stops short of stating whether the operation has side effects or which data source backs it, but the described check is inherently read-only and non-destructive.

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: one summary line followed by a clear arg list. Every sentence serves a purpose, and the arg list maps directly to parameter names. There is no filler or repeated schema information beyond the valuable defaults and units.

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 six-parameter schema with zero description coverage and no annotations, the description does a good job of explaining every parameter's role and typical defaults. An output schema exists, so the return shape is covered separately. It lacks only a brief note on when to select this tool over metric/log-querying siblings, but the tool's purpose is sufficiently self-contained.

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 semantics for most parameters, including units (milliseconds, hours), range(0.0-1.0 for availability, 1-720 for window), and default values. The one gap is latency_percentile: it says 'default p99' while the schema expects a fractional default 0.99, which could lead an agent to pass 99 instead of 0.99. The description doesn't explicitly clarify the 0-1 fraction format.

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 ('Check') and a specific resource ('SLO compliance') and names the measurable aspects: error budgets, burn rate, availability, and latency targets. This clearly distinguishes it from sibling tools like query_prometheus or get_pod_metrics, which address raw data retrieval rather than SLO compliance assessment.

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 purpose is clear enough that an agent can infer when to use it, but the description provides no explicit guidance on when to choose this tool over siblings, nor any exclusions. It does not mention alternatives for cases where raw metrics or log queries are needed instead.

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

enrich_alertA

Enrich an alert with full context: recent logs, metrics, traces, and recommendations.

Args: alert_name: Name of the alert that fired service_name: Affected service name namespace: Kubernetes namespace timeframe_minutes: Context window in minutes (1-60)

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceNodefault
alert_nameYes
service_nameYes
timeframe_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations are absent, so the description carries the full burden of behavioral disclosure. It does reveal the composite output (logs, metrics, traces, recommendations), which is informative. However, it does not state that this is a read-only aggregation, whether it is costly/slow when aggregating multiple systems, or what happens when the alert is not found. Partially transparent.

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?

A single front-loaded summary sentence captures purpose and output, followed by a compact Args block. Every line adds meaning the schema lacks, and there is no filler or 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?

Purpose and parameters are well covered, and an output schema exists so return values need not be explained. But with zero annotations and a large sibling set, the missing routing guidance and the absence of safety/cost disclosure leave notable gaps. This is a minimum-viable definition rather than a complete one.

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 fully compensates by giving every argument a semantic gloss: alert_name ('Name of the alert that fired'), service_name ('Affected service name'), namespace ('Kubernetes namespace'), and timeframe_minutes ('Context window in minutes (1-60)'), including a range constraint not present 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 opening sentence uses a specific verb ('Enrich'), a clear resource ('an alert'), and a concrete outcome ('full context: recent logs, metrics, traces, and recommendations'). The multi-source aggregation nature implicitly distinguishes it from the single-source siblings like query_logs_custom, get_trace, and get_pod_metrics.

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 explicit when-to-use or when-not-to-use guidance is provided. The phrase 'Enrich an alert' implies the trigger condition (a fired alert), but the description never names alternatives or explains when a single-source tool such as get_trace or analyze_logs would be preferable, despite 22 siblings.

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

get_alertmanager_historyA

Get recent alerts and active silences from Prometheus Alertmanager. Requires MCP_ALERTMANAGER_URL to be configured.

Args: service_name: Filter alerts by service name (optional) namespace: Filter alerts by namespace label (optional) timeframe_minutes: How far back to look (1-1440) include_silences: Whether to include active silences (default: true)

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceNo
service_nameNo
include_silencesNo
timeframe_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It does clarify that this is a read operation returning alerts/silences and enumerates filters and the silences toggle, but it does not discuss output shape, pagination, errors, or behavior beyond the basic call. An output schema exists, which mitigates the return-shape gap.

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 definition is compact and front-loaded: a one-sentence purpose, a prerequisite line, then an Args list with no fluff. Every sentence contributes actionable information.

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?

With all parameters documented, no required params, a stated prerequisite, and an output schema available, the description gives enough to invoke the tool correctly. It misses only minor context such as explicit alternatives and filter-matching semantics, so it is not maximally 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?

Schema description coverage is 0%, but the Args block compensates by describing all four parameters. It adds useful semantics like time range bounds ('1-1440') and the default behavior of include_silences, going beyond the schema's bare titles and defaults.

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 opening sentence, 'Get recent alerts and active silences from Prometheus Alertmanager,' names a specific verb, resource, and return scope. It distinguishes the tool from observability siblings like query_prometheus by explicitly targeting Alertmanager alerts and silences.

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 states a prerequisite ('Requires MCP_ALERTMANAGER_URL to be configured') and its purpose implies use when recent alert or silence history is needed. However, it does not explicitly say when to prefer it over sibling tools such as query_prometheus or enrich_alert, nor does it give exclusions.

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

get_cluster_healthA

Get overall Kubernetes cluster health: node count, pod status, CPU/memory utilization.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 behavioral burden. It does convey that this is a read-only health query and names the metric categories included. Yet it does not clarify aggregation semantics, whether the data spans all namespaces, or whether it is a current snapshot, leaving some behavioral ambiguity.

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 a single front-loaded sentence with no filler. Every clause supplies a distinct piece of information about the tool's scope and outputs.

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 no-parameter tool with an output schema, the description covers the core purpose and the categories of returned health data; the output schema can handle detailed return formatting. The main missing piece is explicit differentiation from sibling observability tools, but the 'overall' scope makes the tool's role reasonably clear.

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 parameters, so there is no parameter meaning for the description to add beyond the 100% schema coverage. With 0 parameters, the baseline is 4, and the description appropriately avoids adding unnecessary parameter details.

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 names a specific verb ('Get'), a clear resource ('overall Kubernetes cluster health'), and enumerates concrete output categories (node count, pod status, CPU/memory utilization). The word 'overall' helps separate it from the more targeted sibling tools, though it does not explicitly reference an alternative.

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 'overall' wording implies this tool is for a high-level health summary rather than the focused checks performed by siblings like get_pod_metrics or get_node_pressure. However, there is no explicit when-to-use or when-not-to-use guidance, and no alternative tools are named.

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

get_configuration_historyA

Get the configuration-change history for one AWS resource, with field-level diffs.

Answers "what actually changed on this resource, and when". CloudTrail records that an API call happened; AWS Config records the resulting state, so this is what tells you a security group's ingress rules went from one value to another.

Each change carries a capture time and a config_item_id for citation, plus the resources AWS Config considers related — useful for establishing whether a changed resource is actually connected to a failing one.

Requires AWS Config to be enabled and config:GetResourceConfigHistory.

Args: resource_type: AWS Config resource type, e.g. 'AWS::EC2::SecurityGroup' resource_id: Resource ID, e.g. 'sg-0123456789abcdef0' timeframe_hours: How far back to look (1-720) limit: Maximum configuration snapshots to retrieve (1-100)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
resource_idYes
resource_typeYes
timeframe_hoursNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 burden of behavioral disclosure. It states that results are field-level diffs, that each change carries capture time, config_item_id, and related resources, and it requires AWS Config to be enabled plus the config:GetResourceConfigHistory permission. This is strong, honest behavioral context for a read-only historical lookup.

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 precise purpose sentence, then each paragraph earns its place: the CloudTrail contrast explains when to use it, the change-payload details justify citation usefulness, and the prerequisites and Args block are compact. No fluff or redundant restatement.

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?

Despite no annotations and zero schema descriptions, the tool's description alone makes calling it correctly feasible: it covers purpose, prerequisites, permissions, every parameter's semantics, and output characteristics (capture time, config_item_id, related resources). An output schema exists for return structure, so the description is complete enough for an agent to select and invoke the tool appropriately.

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. It does so thoroughly: each parameter is explained with type, range, and examples—resource_type uses 'AWS::EC2::SecurityGroup', resource_id uses 'sg-0123456789abcdef0', timeframe_hours is '1-720', and limit is '1-100'. This adds substantial 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 definition opens with a specific verb+resource: 'Get the configuration-change history for one AWS resource, with field-level diffs.' It distinguishes itself from CloudTrail by explaining that AWS Config records resulting state, not API calls, and it includes concrete examples of resource_type and resource_id.

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 clear when-to-use context: it answers 'what actually changed on this resource, and when' and contrasts with CloudTrail, which only records that an API call happened. It also states the prerequisite that AWS Config must be enabled and the required IAM permission. However, it does not explicitly compare against the sibling get_resource_history, so the differentiation is not exhaustive.

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

get_database_insightsA

Get database performance insights for RDS or ElastiCache.

Args: db_identifier: RDS instance/cluster ID or ElastiCache cluster ID db_type: 'rds' or 'elasticache' timeframe_minutes: Time window to analyze (1-1440)

ParametersJSON Schema
NameRequiredDescriptionDefault
db_typeNords
db_identifierYes
timeframe_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 word 'Get' implies a read-only operation, and supported services and the time-window limit (1-1440) are disclosed. However, it does not describe what happens on invalid identifiers, whether permissions are needed, or how the returned output is structured.

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 with the core purpose, followed by a clean Args list. Every line adds necessary information, with no repetition or filler.

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 read-only insight tool with a single required parameter, the description covers supported services, parameter semantics, and constraints. The presence of an output schema means return values are already specified structurally, so no further output explanation is required.

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 contains no property descriptions, but the description compensates fully by explaining every parameter: db_identifier is the instance/cluster ID, db_type has allowed values 'rds' and 'elasticache', and timeframe_minutes is the analysis window with its valid range. This is exactly what an agent needs to invoke the tool 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 action ('Get'), the resource ('database performance insights'), and the scope ('RDS or ElastiCache'). This makes it readily distinguishable from the sibling tools, which focus on logs, metrics, traces, and cluster health rather than database-specific insights.

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 the tool is relevant for RDS or ElastiCache performance investigations, but it does not explicitly say when to prefer it over alternatives like query_prometheus or get_pod_metrics. There is no exclusion or alternative-routing guidance.

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

get_image_vulnerabilitiesA

Get vulnerability findings for a container image in ECR. Uses AWS Inspector v2 if enabled, falls back to ECR basic scan. Requires ecr:DescribeImageScanFindings and inspector2:ListFindings IAM permissions.

Args: repository_name: ECR repository name image_tag: Image tag to check (default: latest) severity_filter: Severities to include e.g. ['CRITICAL', 'HIGH']

ParametersJSON Schema
NameRequiredDescriptionDefault
image_tagNolatest
repository_nameYes
severity_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/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 burden of behavioral disclosure. It does well by revealing that AWS Inspector v2 is used if enabled, with a fallback to ECR basic scan, and it lists the required IAM permissions. This goes beyond a generic 'get' and helps the agent anticipate permissions and behavior.

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

Conciseness5/5

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

The description is compact and front-loaded: purpose, key behavior, necessary permissions, then parameter explanations. Every sentence contributes useful information, and the Args section provides exactly the missing semantic detail 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?

The description covers purpose, backend behavior, permissions, and all parameter semantics. An output schema exists to explain the return structure, so the lack of return-value discussion is acceptable. Minor gaps remain around severity_filter default behavior and possible error cases, but the tool is sufficiently complete for correct 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?

Schema description coverage is 0%, so the description must explain the parameters itself. It does, giving meaningful semantics for repository_name, image_tag (default latest), and severity_filter (with an example value). This is enough for an agent to populate the arguments appropriately.

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 immediately states 'Get vulnerability findings for a container image in ECR' with a specific verb and resource. It also clarifies the exact scope (ECR, container image) and includes useful details about the underlying scanning mechanisms, making it easy for an agent to distinguish from the observability-focused sibling 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?

The description makes it clear that this tool is for container image vulnerability scanning, but it never explicitly states when to use it versus alternatives or when not to use it. Usage context is implied by the purpose, but there is no direct comparison or exclusion guidance.

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

get_k8s_eventsA

Get Kubernetes events for a namespace or pod. Answers 'why is my pod pending/OOMKilled/CrashLoopBackOff?' Requires rbac.enabled=true in Helm values.

Args: namespace: Kubernetes namespace pod_name: Filter events for a specific pod (optional) event_type: Filter by 'Warning' or 'Normal' (optional) timeframe_minutes: How far back to look (1-1440) limit: Maximum events to return (1-500)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
pod_nameNo
namespaceNodefault
event_typeNo
timeframe_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 must carry behavioral disclosure. It does reveal the RBAC prerequisite and filtering behavior, but it does not go into ordering, event expiration, empty-result behavior, or any side effects. 'Get' implies a read, but the description could be richer about operational constraints.

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 front-loaded with purpose, followed by a concise use-case statement and a necessary prerequisite. The Args list is clear and each line adds value, though the format is slightly list-heavy rather than prose.

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 five optional parameters, no annotations, and an output schema, the description covers the key invocation needs: every parameter is explained, the target use case is stated, and the RBAC requirement is disclosed. It stops short of describing fallback behavior or output semantics, but the output schema helps close that 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 schema has 0% description coverage, yet the description documents every parameter with meaning and bounds: namespace scope, pod_name as a filter, event_type with allowed values, timeframe 1-1440, and limit 1-500. This fully compensates for the schema's absence of per-parameter 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 specific verb-resource pairing ('Get Kubernetes events') and immediately scopes to namespace or pod. The phrase 'why is my pod pending/OOMKilled/CrashLoopBackOff?' clarifies the diagnostic intent and distinguishes it from sibling log and metric tools.

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 provides a clear when-to-use context (pod lifecycle problems) and a hard prerequisite ('Requires rbac.enabled=true'), giving an agent enough to know when this tool is relevant. However, it does not name alternative tools such as query_pod_logs or get_pod_metrics, nor explicitly state 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.

get_node_pressureA

Get Kubernetes node pressure conditions, resource capacity, and eviction status. Identifies nodes with MemoryPressure, DiskPressure, or PIDPressure.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/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 disclosure. It communicates a read-only inspection action and lists what conditions are identified, but it does not mention operational details such as cluster-wide scope, permissions, or how the data is collected.

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?

Two concise sentences with the main action and resource front-loaded, followed by the specific pressure conditions. There is no filler 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 zero-parameter tool with an output schema, the description is functionally complete: it names the resource and the three pressure types. It loses one point for not stating the scope of the query (e.g., all nodes in the cluster) or 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?

The tool has zero parameters, so there is no parameter semantics to clarify; per the baseline for zero-parameter tools, a score of 4 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Get') and resource ('Kubernetes node pressure conditions, resource capacity, and eviction status'), and then names the exact pressure types it returns. This clearly distinguishes it from the sibling logging, metrics, and history 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?

The usage context is implied by the domain—use this when you need node pressure or eviction status—but the description gives no explicit guidance about when to prefer it over alternatives like get_cluster_health or get_k8s_events, and no when-not-to-use conditions.

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

get_pod_metricsB

Get metrics for a Kubernetes pod (CPU, memory, restarts, network).

Args: pod_name: Pod name or regex pattern namespace: Kubernetes namespace metric_type: One of: cpu, memory, restarts, network_rx, network_tx

ParametersJSON Schema
NameRequiredDescriptionDefault
pod_nameYes
namespaceNodefault
metric_typeNocpu

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 details, but only mentions that pod_name can be a regex pattern and lists metric types. It does not state whether data is live or historical, whether regex can match multiple pods, what units/format are returned, or any operational caveats.

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 with the core purpose, followed by a clearly structured Args block. No redundant or vague sentences are present; every line adds useful 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?

The tool appears simple and has an output schema, so some missing return details are acceptable. However, the description lacks any context on time range, meaning of regex results, or distinctions from adjacent monitoring tools. It is minimally sufficient but not fully self-contained.

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 each parameter: pod_name accepts a name or regex, namespace is a Kubernetes namespace, and metric_type enumerates five valid values. This goes well beyond the bare schema titles and defaults.

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?

Description states a specific verb and resource: 'Get metrics for a Kubernetes pod' with the metric categories CPU, memory, restarts, and network in parentheses. This is clear and distinguishable from siblings like query_pod_logs, though it does not explicitly name an alternative for cases like custom Prometheus queries.

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 versus siblings like query_prometheus or query_k8s_events. The description only defines what the tool does, not the conditions that select it 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.

get_recent_deploymentsA

Get recent Kubernetes deployment changes — what was rolled out in the last N minutes. Useful for correlating deployments with incidents.

Args: namespace: Kubernetes namespace timeframe_minutes: How far back to look (1-1440)

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceNodefault
timeframe_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/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 behavioral disclosure burden. It makes clear this is a read-only historical retrieval operation scoped by namespace and time, but it does not disclose the response format, ordering, or possible failure/edge-case behavior. For a simple read tool this is adequate but not highly transparent.

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 short and front-loaded: purpose, time scope, and a use case appear in the first two sentences. The Arg section is minimal and directly maps to the schema. 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 two-parameter tool with defaults on both parameters, the description covers invocation correctly. However, there is no output schema, no annotation context, and no mention of what a 'deployment change' looks like in the response. It could also point to siblings like get_k8s_events or get_resource_history when a broader history is needed.

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's Args section documents both parameters: namespace means 'Kuber...' — well, it says 'Kubernetes namespace,' and timeframe_minutes has a range ('1-1440'). This meaningfully compensates for the lack of schema-level descriptions, though the namespace definition is thin.

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?

States a specific operation — 'Get recent Kubernetes deployment changes' — with an explicit time scope ('last N minutes') and a use case ('correlating deployments with incidents'). It is clearly a retrieval tool for deployment history, but it doesn't name a sibling to contrast against.

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 says it is 'Useful for correlating deployments with incidents,' giving an agent a concrete condition for selecting this tool. It doesn't mention alternatives or exclusions, so it stops short of a full routing guide.

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

get_resource_complianceA

Get AWS Config compliance status for resources. Shows drift and non-compliant rules. Requires AWS Config to be enabled and config:Describe* IAM permissions.

Args: resource_id: Specific resource ID (optional — omit for all rules summary) resource_type: AWS resource type e.g. 'AWS::EC2::Instance' (optional) compliance_filter: Filter by COMPLIANT, NON_COMPLIANT, or NOT_APPLICABLE

ParametersJSON Schema
NameRequiredDescriptionDefault
resource_idNo
resource_typeNo
compliance_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/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 auth requirements and prerequisites, and explains behavior around optional parameters, especially that omittig resource_id changes the result to a rules summary. The verb 'Get' implies a read-only operation. It does not cover pagination or rate limits, but for a compliance query with an output schema, this is sufficient.

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: purpose first, prerequisites second, then a focused Args list. Every sentence adds new information; there is no repeated or filler content. The structure makes it easy for an agent to scan and extract key details.

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 three optional parameters, no annotations, and an output schema, the description covers the essential call context: purpose, prerequisites, and parameter behavior. It could go further by explaining how the parameters interact and how 'all rules summary' behaves when resource_type is also omitted, but the current information is enough to invoke the tool correctly in most cases.

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: each parameter is explained with optionality, examples, or allowed values. For instance, resource_type gets a concrete example ('AWS::EC2::Instance') and compliance_filter lists accepted values (COMPLIANT, NON_COMPLIANT, NOT_APPLICABLE). This is exactly the semantics the schema alone lacks.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Get AWS Config compliance status for resources.' It clearly states what is obtained (compliance status, drift, non-compliant rules) and is distinct from sibling tools like get_resource_costs or get_configuration_history. No ambiguity about the tool's core function.

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: use this tool when you need AWS Config compliance status for resources. It also gives an explicit prerequisite ('Requires AWS Config to be enabled and config:Describe* permissions') and notes that omitting resource_id returns an 'all rules summary.' It does not name alternatives, so it misses the highest bar, but the usage context and prerequisites are clear.

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

get_resource_costsA

Get resource cost attribution by namespace with optimization suggestions. Note: Requires Prometheus backend. Cost estimates are approximate.

Args: namespace: Filter by namespace (optional — omit for all namespaces) timeframe_minutes: Usage averaging window (1-1440)

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceNo
timeframe_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations are entirely absent, so the description carries the full behavioral burden. It discloses a backend dependency (Prometheus) and warns that estimates are approximate, which are genuinely useful traits beyond the schema. However, it does not describe return shape, whether this is a read-only operation, or any latency/cost implications of a broad namespace query. Without annotations, the description still leaves meaningful behavioral unknowns.

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 tight and well-structured: one purpose sentence, one dependency/accuracy note, and a compact two-item Args list. Every sentence contributes operational information, and the most important scoping detail is front-loaded. No filler or repetition of the tool name.

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 two-parameter read-style tool with no output schema and no annotations, the description covers the essential decisions an agent needs: what the tool returns, how to filter, what averaging window is allowed, and what caveats apply. It falls short only in not describing the response format or what 'optimization suggestions' actually look like, but the low parameter count and straightforward purpose make the remaining gap minor.

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 value beyond the schema: it clarifies that namespace is optional and 'omit for all namespaces', which is not explicitly stated in the schema itself. It also adds a valid range for timeframe_minutes ('1-1440'), which the schema does not constrain. This gives an agent concrete usage guardrails that the JSON schema alone would not provide.

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

Purpose5/5

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

The description opens with a specific verb ('Get'), a clear resource ('resource cost attribution'), and a scoping dimension ('by namespace'). It also adds a distinguishing output feature ('optimization suggestions'), which separates it from sibling history/compliance tools without needing to see their schemas.

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 gives helpful operational context ('Requires Prometheus backend', 'Cost estimates are approximate') and explains parameter usage, but it never states when to prefer this tool over siblings like get_resource_compliance or get_resource_history. There is no explicit when/when-not guidance, so the agent must infer the tool's role from its name and resource focus.

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

get_resource_historyA

Get the full CloudTrail audit trail for a specific AWS resource. Shows who created, modified, and deleted it. Requires cloudtrail:LookupEvents IAM permission.

Args: resource_id: AWS resource ID or ARN timeframe_days: How many days back to search (1-90) limit: Maximum events to return (1-50)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
resource_idYes
timeframe_daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 behavioral disclosure burden. It usefully discloses the required cloudtrail:LookupEvents permission and the kind of information returned. It does not mention CloudTrail limitations such as the 90-day LookupEvents window, dependence on CloudTrail being enabled, or whether the operation is read-only, though 'Get' implies that.

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 ordered: purpose first, output semantics second, permission third, then a concise Args block. Every sentence carries information, and the Args block is justified because the schema itself has no parameter descriptions.

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 three-parameter query tool with no annotations, the description is largely complete: it covers purpose, output semantics, permission, and all parameter meanings. Since an output schema exists, return-value details are not required. The main gaps are the lack of a pointer to sibling tools and a caveat about CloudTrail retention/coverage limitations behind the word 'full.'

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 all three parameters in the Args block: resource_id is the AWS resource ID or ARN, timeframe_days is the search window of 1-90 days, and limit is the max events 1-50. This adds real meaning beyond the bare schema property names and defaults.

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 first sentence states a specific verb and resource: 'Get the full CloudTrail audit trail for a specific AWS resource.' The second line clarifies output semantics by saying it shows who created, modified, and deleted the resource. It is clear, but it does not explicitly differentiate itself from closely related siblings such as query_cloudtrail or get_configuration_history.

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 the intended use case through 'for a specific AWS resource' and the audit-trail framing, and it notes a required IAM permission. However, it never explicitly says when to prefer this tool over query_cloudtrail or other siblings, nor does it state 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.

get_scaling_historyA

Get HPA scaling history and current autoscaler status for deployments. Requires kube-state-metrics for historical data.

Args: namespace: Kubernetes namespace deployment_name: Filter to a specific deployment (optional) timeframe_minutes: How far back to look (1-1440)

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceNodefault
deployment_nameNo
timeframe_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 an important dependency on kube-state-metrics for historical data and constrains the timeframe range, which adds behavioral context. However, it does not mention read-only behavior, potential failure modes, or what 'current autoscaler status' includes beyond the basic operation.

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: the purpose is stated in the first sentence, followed by a critical prerequisite and a clean Args block. Every sentence adds value without redundant wording.

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 three simple optional parameters and an output schema, the description covers the essential inputs and the main dependency. It lacks explicit guidance on when to use it among the sibling tools, but the purpose and parameter semantics are sufficiently complete for correct 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?

Schema description coverage is 0%, but the description compensates by explaining all three parameters: namespace, optional deployment filter, and timeframe in minutes with a valid range. This gives the agent enough semantic understanding to call the tool with correct arguments, though each explanation is brief.

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 retrieves HPA scaling history and current autoscaler status for deployments, using a specific verb and resource. It does not explicitly distinguish itself from sibling tools, but the focus on HPA scaling is specific enough to differentiate it from nearby tools like get_pod_metrics or get_recent_deployments.

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 includes a useful prerequisite ('Requires kube-state-metrics for historical data'), which helps the agent understand a condition for successful use. However, it does not state when to prefer this tool over alternatives such as query_prometheus or get_pod_metrics, so usage guidance is mostly 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.

get_traceA

Retrieve a distributed trace by ID from Tempo.

Args: trace_id: Hexadecimal trace ID (16-32 characters)

ParametersJSON Schema
NameRequiredDescriptionDefault
trace_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 behavioral burden. It clearly indicates a read operation ('Retrieve') from Tempo, but does not disclose response behavior, error cases, or access requirements. This is adequate for a simple lookup but not richly transparent.

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 one focused sentence plus a parameter note with no wasted words. It front-loads the action and provides just enough detail about the argument format.

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 single-parameter retrieval tool with an output schema, the description is nearly complete. It states the source, the action, and the required input format. It could add sibling differentiation or non-use conditions, but these are not critical for correct 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?

Schema description coverage is 0%, so the description must compensate. It adds meaningful format constraints — hexadecimal and 16-32 characters — that are absent from the schema, helping the agent validate input before calling 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 uses a specific verb ('Retrieve'), a concrete resource ('distributed trace'), and a source ('Tempo'), making the tool's function immediately clear. It is also easily distinguished from sibling tools focused on logs, metrics, and cluster 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?

Usage context is implied rather than explicit: it should be used when a distributed trace needs to be retrieved by ID. However, it does not state when not to use it or mention any alternatives, leaving some routing to inference.

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

query_cloudtrailA

Search AWS CloudTrail events by keyword, event name, username, or resource. Requires cloudtrail:LookupEvents IAM permission.

Args: keyword: Search term matched against event name event_name: Exact CloudTrail event name (e.g. 'DeleteDeployment') username: Filter by IAM username or role session name resource_name: Filter by AWS resource name or ID timeframe_minutes: How far back to search (1-1440) limit: Maximum events to return (1-50)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
keywordNo
usernameNo
event_nameNo
resource_nameNo
timeframe_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 the burden of behavioral disclosure. It discloses the IAM requirement and search scoping but does not mention pagination, retry behavior, rate limits, whether the keyword field overlaps with event_name in query semantics, or what an empty result looks like. 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.

Conciseness4/5

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

The description is compact and front-loaded: a one-sentence purpose followed by a permission note and a clear list of args. The arg list is concise, but the permission sentence and args list are necessary for a tool this flexible. No filler, though the identical 'Filter by' phrasing for username and resource_name is slightly repetitive.

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?

All six parameters are explained, the permission prerequisite is stated, and an output schema exists, so return values are presumably structured. It lacks guidance on which parameters are mutually exclusive or how keyword interacts with event_name, and no explicit maximum result count is stated in the description beyond the schema's limit default.

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 provides inline Arg explanations for all six parameters, including the example 'DeleteDeployment' for event_name and a range for timeframe_minutes. This compensates for the schema gap and adds semantic value beyond type/constraint information.

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

Purpose5/5

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

The description uses a clear verb ('Search') with a specific resource ('AWS CloudTrail events') and enumerates concrete filter dimensions (keyword, event name, username, resource). Although no title is provided, the description is specific enough to distinguish from sibling log-query tools like query_logs_custom or search_traces, since it names AWS CloudTrail and its IAM requirement.

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 states it 'Requires cloudtrail:LookupEvents IAM permission,' which is useful guidance for when this tool is applicable. It does not explicitly compare to sibling tools or state when not to use it, but the mention of AWS CloudTrail and IAM permission gives enough context to infer appropriate usage relative to log/metrics siblings.

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

query_logs_customA

Execute a custom log query (LogQL for Loki, Datadog syntax, or CloudWatch Insights).

Args: query: Backend-native query string timeframe_minutes: How many minutes of logs to retrieve (1-1440) limit: Maximum number of log lines (1-500)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
timeframe_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/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 behavioral burden. It usefully discloses that the tool executes arbitrary backend-native queries and supports three different query syntaxes, and it provides limits for timeframe and line count. However, it does not describe the output/return format, error behavior, or any rate/cost implications of running custom queries.

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: one front-loaded purpose sentence followed by a clean Args block. Every sentence adds necessary information without repetition or filler.

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 tool with no output schema and no annotations, the description does not explain the return shape or how the query backend is selected/decided among Loki, Datadog, and CloudWatch Insights. It provides enough for basic invocation but leaves meaningful gaps an agent would benefit from knowing.

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 Args block adds meaningful semantics and ranges for all three parameters: query is a 'Backend-native query string', timeframe_minutes is 'How many minutes of logs to retrieve (1-1440)', and limit is 'Maximum number of log lines (1-500)'. The input schema only provides types, titles, and defaults, so the description substantially enriches the parameter understanding.

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 a specific operation: 'Execute a custom log query' and names the supported query syntaxes (LogQL, Datadog syntax, CloudWatch Insights). This distinguishes it from simpler log-fetching tools by emphasizing custom/backend-native queries, though it never explicitly names sibling 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?

The phrase 'custom log query' and the list of query languages imply that this tool is intended for backend-native queries not covered by prebuilt tools, but the description provides no explicit when-to-use or when-not-to-use guidance and names no alternatives. Usage context must be inferred rather than stated.

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

query_pod_logsA

Query logs from a Kubernetes pod. Returns sanitized logs with PII/secrets redacted.

Args: pod_name: Pod name or regex pattern (e.g. 'payment-service' or 'payment-.*') namespace: Kubernetes namespace container: Container name filter (optional) timeframe_minutes: How many minutes of logs to retrieve (1-1440) limit: Maximum number of log lines (1-500)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
pod_nameYes
containerNo
namespaceNodefault
timeframe_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral disclosure burden. It does disclose that logs are sanitized with PII/secrets redacted and implies a read-only query operation. It does not describe behavior for regex matching multiple pods, empty results, 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 compact and well-structured: an opening behavioral summary followed by a focused Args list. Every line adds useful information beyond the raw schema, and the format is easy for an agent to parse.

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 description covers the tool's core purpose, redaction behavior, and all parameter semantics, and an output schema exists for return values. It is less complete on sibling differentiation and edge-case behavior, so an agent may need to infer when to use this tool versus similar log-related siblings.

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 documents all five parameters with examples, constraints, and semantics that the schema lacks, such as regex patterns, timeout range, and limit bounds. 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.

Purpose4/5

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

The description states a specific action and resource: query logs from a Kubernetes pod, with sanitized output. It is clear and not tautological, though it does not explicitly distinguish itself from sibling tools like query_logs_custom.

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 tool's scope as a Kubernetes pod log query is implied by the description and parameter list. However, there is no explicit guidance about when to choose this tool over alternatives such as query_logs_custom, analyze_logs, or get_k8s_events.

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

query_prometheusA

Execute a raw PromQL query against Prometheus.

Args: query: PromQL expression range_query: Set to true for a time-series range query timeframe_minutes: Time range for range queries (1-1440) step: Step interval for range queries (e.g. '1m', '5m', '1h')

ParametersJSON Schema
NameRequiredDescriptionDefault
stepNo1m
queryYes
range_queryNo
timeframe_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

The readOnly annotation already signals no mutation, and the description does not contradict it. The description adds range-query behavior via range_query/timeframe/step, but does not disclose potential performance costs, auth requirements, or query result shape. With annotations present, 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?

A short, front-loaded first sentence followed by a compact Args list. Every word earns its place; there is no fluff 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 query tool with a schema covering all parameters and an output schema present, the description is nearly complete. It could be fully complete with a brief note on when to reach for this vs siblings, but the core information needed to invoke it correctly is present.

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?

Although the schema has no field descriptions, the Args list explains each parameter meaningfully: query is a PromQL expression, range_query toggles time-series, timeframe sets the range, and step provides format examples. This clearly exceeds what the schema alone provides.

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: 'Execute a raw PromQL query against Prometheus.' The phrase 'raw PromQL query' clearly differentiates this from sibling log, trace, and metric tools, so an agent can deterine its purpose immediately.

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 implied through 'raw PromQL query' — an agent can infer this is the tool for direct Prometheus queries. However, there is no explicit guidance on when to choose this over siblings like get_pod_metrics or query_logs_custom, and no exclusions are given.

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

search_tracesA

Search for distributed traces in Tempo by service, operation, or tags.

Args: service_name: Filter by service name operation: Filter by operation name tags: Filter by span tags (key-value pairs) min_duration: Minimum trace duration (e.g. '100ms', '1s') max_duration: Maximum trace duration timeframe_minutes: How far back to search (1-1440) limit: Maximum traces to return (1-100)

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
limitNo
operationNo
max_durationNo
min_durationNo
service_nameNo
timeframe_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/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 context. It makes the read-only search intent clear and exposes duration/timeframe/limit filters, but it doesn't mention result ordering, pagination, combination semantics of filters, or any operational caveats. This is adequate but not thorough.

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?

Purpose is stated in one sentence, then the parameter semantics are listed in a scannable Args block. Each line adds distinct information and the duration example '100ms', '1s' is efficient and useful.

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?

All seven parameters are explained and the output schema exists, so return shape is covered elsewhere. The main gap is the lack of when-to-use guidance versus sibling tools, but for invoking search_traces correctly the semantics are adequately specified.

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 carry parameter meaning. It provides a concise explanation for every parameter, including examples for min_duration and ranges for timeframe/limit, going well beyond the schema's bare titles and defaults.

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?

Description opens with a specific verb and resource: 'Search for distributed traces in Tempo by service, operation, or tags.' This clearly identifies the operation and its filters, though it doesn't explicitly contrast with the sibling get_trace, so it falls short of full sibling differentiation.

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 choose this tool over alternatives such as get_trace or query_logs_custom. The Args block describes how to filter but not the selection context, exclusions, or prerequisites.

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. 23 tool updatesv1.2.6
    • First observedanalyze_logs
    • First observedbuild_incident_timeline
    • First observedcheck_slo_status
    • First observedenrich_alert
    • First observedget_alertmanager_history
    • First observedget_cluster_health
    • First observedget_configuration_history
    • First observedget_database_insights
    • First observedget_image_vulnerabilities
    • First observedget_k8s_events
    • First observedget_node_pressure
    • First observedget_pod_metrics
    • First observedget_recent_deployments
    • First observedget_resource_compliance
    • First observedget_resource_costs
    • First observedget_resource_history
    • First observedget_scaling_history
    • First observedget_trace
    • First observedquery_cloudtrail
    • First observedquery_logs_custom
    • First observedquery_pod_logs
    • First observedquery_prometheus
    • First observedsearch_traces

TDQS

A3.9/5.0
Disambiguation4/5

Most tools have clearly distinct targets—logs, metrics, traces, cluster health, AWS Config, CloudTrail, alerts—so an agent can usually pick correctly. A few pairs overlap in raw inputs or sources (query_pod_logs vs analyze_logs, query_cloudtrail vs get_resource_history), but the descriptions clarify the different purposes.

Naming Consistency5/5

All tools follow a consistent operation_object snake_case pattern: query_* for raw backend queries, get_* for fetching known telemetry, and search/analyze/build/enrich/check for higher-level analysis. There is no stylistic mixing or unpredictable naming.

Tool Count4/5

23 tools is on the high side, but the server covers Kubernetes logs, metrics, traces, events, alerts, SLOs, cost, and AWS audit/config/inspection data, so each tool has a distinct role. It feels slightly over-packed rather than bloated, and the breadth justifies the count.

Completeness4/5

The surface covers the full observability workflow: raw queries, pod logs, metrics, traces, cluster health, events, deployments, alerts, SLOs, cost, and AWS audit/config/compliance. The main gap is resource discovery—there is no explicit list_pods/list_namespaces tool, so agents must already know target names or infer them from other tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/kubeopsai/k8s-telemetry-mcp'

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