Skip to main content
Glama
0xteamhq

Grafana MCP Server

by 0xteamhq

@leval/mcp-grafana

Complete TypeScript/JavaScript implementation of the Model Context Protocol (MCP) server for Grafana, enabling AI assistants to interact with Grafana dashboards, datasources, alerts, incidents, and more.

npm version npm downloads License MCP GitHub stars

๐Ÿš€ Features

  • 43 Comprehensive Tools: Complete Grafana functionality via MCP

  • Multiple MCP Clients Support: Works with Claude Desktop, Claude Code, Cursor, Zed, Codex

  • Type-Safe Implementation: Built with TypeScript for reliability

  • Easy Installation: Available via npm/npx - no compilation needed

  • Production Ready: Comprehensive error handling and logging

  • Full Authentication Support: Service accounts, API keys, basic auth, mTLS

Related MCP server: OpenTelemetry MCP Server

๐Ÿ“ฆ Installation

Option 1: Global Installation

npm install -g @leval/mcp-grafana

Option 2: Run with npx (no installation)

npx @leval/mcp-grafana

Option 3: Local Development

git clone https://github.com/levalhq/mcp-grafana.git
cd mcp-grafana
npm install
npm run build

๐Ÿ”ง Configuration

Environment Variables

Create a .env file in your project root:

# Required
GRAFANA_URL=https://your-grafana-instance.com

# Authentication (use one)
GRAFANA_SERVICE_ACCOUNT_TOKEN=glsa_xxxxxxxxxxxx  # Recommended
# OR
GRAFANA_USERNAME=username                        # Basic auth
GRAFANA_PASSWORD=password

# Optional
DEBUG=true                                       # Enable debug logging
TLS_CERT_FILE=/path/to/cert.pem                # mTLS certificate
TLS_KEY_FILE=/path/to/key.pem                  # mTLS key
TLS_CA_FILE=/path/to/ca.pem                    # Custom CA certificate
TLS_SKIP_VERIFY=true                            # Skip TLS verification

๐Ÿค– MCP Client Configuration

Claude Desktop

Config File Locations:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

Configuration:

{
  "mcpServers": {
    "grafana": {
      "command": "npx",
      "args": ["@leval/mcp-grafana"],
      "env": {
        "GRAFANA_URL": "https://your-grafana.com",
        "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxxxxxxxxxxx"
      }
    }
  }
}

Usage:

  1. Save the configuration file

  2. Restart Claude Desktop

  3. Look for the MCP icon (๐Ÿ”Œ) in the interface

  4. Ask Claude: "What dashboards are available in my Grafana?"


Claude Code (VS Code Extension)

{
  "claude.mcpServers": {
    "grafana": {
      "command": "npx",
      "args": ["@leval/mcp-grafana"],
      "env": {
        "GRAFANA_URL": "https://your-grafana.com",
        "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxxxxxxxxxxx"
      }
    }
  }
}

Or configure globally in VS Code settings:

  1. Open Command Palette (Cmd/Ctrl + Shift + P)

  2. Search for "Preferences: Open User Settings (JSON)"

  3. Add the claude.mcpServers configuration

Usage:

  • Open Claude panel in VS Code

  • The MCP server will start automatically

  • Ask: "Show me the error rate from our Prometheus metrics"


Cursor

Configuration: Add to .cursor/settings.json in your project root:

{
  "ai.mcpServers": {
    "grafana": {
      "command": "npx",
      "args": ["@leval/mcp-grafana"],
      "env": {
        "GRAFANA_URL": "https://your-grafana.com",
        "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxxxxxxxxxxx"
      }
    }
  }
}

Or configure globally:

  1. Open Cursor Settings (Cmd/Ctrl + ,)

  2. Go to "Features" โ†’ "AI" โ†’ "MCP Servers"

  3. Add the Grafana server configuration

Usage:

  • Press Cmd/Ctrl + K to open AI chat

  • The MCP indicator will show when connected

  • Try: "Analyze the Loki logs for errors in the last hour"


Zed

Configuration: Add to ~/.config/zed/settings.json:

{
  "assistant": {
    "version": "2",
    "mcp_servers": {
      "grafana": {
        "command": "npx",
        "args": ["@leval/mcp-grafana"],
        "env": {
          "GRAFANA_URL": "https://your-grafana.com",
          "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxxxxxxxxxxx"
        }
      }
    }
  }
}

Usage:

  1. Open Assistant panel (Cmd/Ctrl + ?)

  2. The MCP server starts automatically

  3. Ask: "List all datasources and their types"


Codex (GitHub Copilot Workspace)

Configuration: Add to .github/codex/mcp-config.json:

{
  "servers": {
    "grafana": {
      "command": "npx",
      "args": ["@leval/mcp-grafana"],
      "env": {
        "GRAFANA_URL": "https://your-grafana.com",
        "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxxxxxxxxxxx"
      }
    }
  }
}

Usage:

  • Open Codex workspace

  • The MCP server connects automatically

  • Use in prompts: "Create a dashboard based on our current metrics"


Continue.dev

Configuration: Add to ~/.continue/config.json:

{
  "models": [...],
  "mcpServers": {
    "grafana": {
      "command": "npx",
      "args": ["@leval/mcp-grafana"],
      "env": {
        "GRAFANA_URL": "https://your-grafana.com",
        "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxxxxxxxxxxx"
      }
    }
  }
}

Usage:

  • Open Continue panel in your IDE

  • MCP connection status shown in status bar

  • Ask: "What alerts are currently firing?"


Windsurf

Configuration: Add to .windsurf/mcp-servers.json:

{
  "grafana": {
    "command": "npx",
    "args": ["@leval/mcp-grafana"],
    "env": {
      "GRAFANA_URL": "https://your-grafana.com",
      "GRAFANA_SERVICE_ACCOUNT_TOKEN": "glsa_xxxxxxxxxxxx"
    }
  }
}

Usage:

  • Windsurf automatically detects and connects to MCP servers

  • Use Cascade AI with Grafana context

๐Ÿ“š Available Tools (43 Total)

Dashboard Management (5 tools)

Tool

Description

Example Usage

search_dashboards

Search for dashboards

"Find dashboards with 'cpu' in the name"

get_dashboard_by_uid

Get complete dashboard JSON

"Show me the dashboard with UID abc123"

get_dashboard_summary

Get dashboard metadata

"Summarize the monitoring dashboard"

get_dashboard_property

Extract specific properties

"Get all panel titles from dashboard xyz"

update_dashboard

Create or update dashboards

"Add a new panel to track memory usage"

Data Sources (3 tools)

Tool

Description

Example Usage

list_datasources

List all datasources

"What datasources are configured?"

get_datasource_by_uid

Get datasource by UID

"Show details for datasource uid-123"

get_datasource_by_name

Get datasource by name

"Get the Prometheus datasource config"

Prometheus (5 tools)

Tool

Description

Example Usage

query_prometheus

Execute PromQL queries

"Show CPU usage for the last hour"

list_prometheus_metric_names

List available metrics

"What metrics are available?"

list_prometheus_label_names

List label names

"Show all Prometheus labels"

list_prometheus_label_values

Get label values

"What values exist for the 'env' label?"

list_prometheus_metric_metadata

Get metric metadata

"Describe the node_cpu_seconds metric"

Loki Logs (5 tools)

Tool

Description

Example Usage

query_loki_logs

Execute LogQL queries

"Show error logs from the API service"

query_loki_stats

Get log stream statistics

"How many log entries in the last day?"

list_loki_label_names

List log label names

"What labels are in our logs?"

list_loki_label_values

Get log label values

"Show all namespaces in logs"

find_error_pattern_logs

Find error patterns

"Analyze error patterns in production"

Incident Management (4 tools)

Tool

Description

Example Usage

list_incidents

List incidents

"Show all active incidents"

get_incident

Get incident details

"Details for incident INC-123"

create_incident

Create new incident

"Create a critical incident for API outage"

add_activity_to_incident

Add notes to incidents

"Add update to incident INC-123"

Additional Categories

  • Alerting (3 tools): Alert rules, contact points

  • OnCall (5 tools): Schedules, shifts, on-call users

  • Sift (4 tools): Investigations, slow request analysis

  • Pyroscope (4 tools): Profiling data, performance analysis

  • Admin (2 tools): User and team management

  • Navigation (1 tool): Generate Grafana deeplinks

  • Asserts (1 tool): Entity assertions

๐Ÿ”’ Security

  1. In Grafana UI:

    • Go to Administration โ†’ Service accounts

    • Click "Add service account"

    • Name it (e.g., "mcp-server")

    • Click "Create"

    • Click "Add service account token"

    • Generate token and copy it

  2. Required Permissions:

    • dashboards:read - View dashboards

    • datasources:read - View datasources

    • alert.rules:read - View alert rules

    • logs:read - Query Loki

    • metrics:read - Query Prometheus

    • incidents:write - Manage incidents (if needed)

Best Practices

  • Use service account tokens instead of API keys

  • Store tokens in environment variables, not in code

  • Use read-only permissions where possible

  • Enable TLS/mTLS for production environments

  • Regularly rotate tokens

๐Ÿงช Testing

Quick Test

# Test connection
curl -H "Authorization: Bearer YOUR_TOKEN" \
  https://your-grafana.com/api/org

# Test with the MCP server
npx @leval/mcp-grafana --debug

Run Test Suite

# Clone the repository
git clone https://github.com/levalhq/mcp-grafana.git
cd mcp-grafana

# Install dependencies
npm install

# Run tests
npm test

# Test with your Grafana instance
node test/test-connection.js
node test/test-api.js

๐Ÿ“Š Performance

  • Startup time: < 1 second

  • Tool registration: < 100ms for all 43 tools

  • Query response: 200-500ms typical

  • Memory usage: ~50MB baseline

  • Connection pooling: Reuses HTTP connections

๐Ÿ› Troubleshooting

MCP Server Not Starting

# Check if running correctly
npx @leval/mcp-grafana --debug

# Should output:
# Starting MCP Grafana server with stdio transport...
# MCP server started with stdio transport

Connection Issues

# Test your credentials
curl -H "Authorization: Bearer YOUR_TOKEN" \
  https://your-grafana.com/api/org

# Check response - should return org details

Client Not Detecting Server

  1. Verify configuration file location

  2. Check JSON syntax is valid

  3. Restart the client application

  4. Look for MCP indicator in UI

  5. Check client logs for errors

Common Error Messages

Error

Solution

"Authentication failed"

Check your service account token

"No datasources found"

Verify datasource permissions

"Tool not found"

Ensure all tools are enabled

"Connection timeout"

Check network and Grafana URL

"Permission denied"

Add required permissions to service account

๐Ÿ“ˆ Advanced Configuration

Disable Specific Tool Categories

npx @leval/mcp-grafana \
  --disable-incident \
  --disable-oncall \
  --disable-sift

Custom TLS Configuration

export TLS_CERT_FILE=/path/to/cert.pem
export TLS_KEY_FILE=/path/to/key.pem
export TLS_CA_FILE=/path/to/ca.pem
npx @leval/mcp-grafana

Debug Mode

npx @leval/mcp-grafana --debug
# Or
export DEBUG=true
npx @leval/mcp-grafana

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

# Fork and clone
git clone https://github.com/levalhq/mcp-grafana.git
cd mcp-grafana

# Install dependencies
npm install

# Make changes and test
npm test

# Build
npm run build

# Submit PR

Feature Status

All features from the original Go implementation have been migrated:

  • โœ… Core MCP server with stdio transport

  • โœ… Dashboard operations (search, retrieve, update, create)

  • โœ… Data source management

  • โœ… Prometheus queries and metadata

  • โœ… Loki log queries and label exploration

  • โœ… Incident management and timeline

  • โœ… Alert management and contact points

  • โœ… OnCall schedules and shifts

  • โœ… Sift investigations and analysis

  • โœ… Pyroscope profiling

  • โœ… Authentication methods (API key, service account, basic auth, mTLS)

  • โœ… TLS configuration and custom CA support

๐Ÿ“„ License

Apache-2.0 - See LICENSE file for details

๐Ÿ“ฆ NPM Package

This package is published on npm as @leval/mcp-grafana

# Install globally
npm install -g @leval/mcp-grafana

# Or use directly with npx
npx @leval/mcp-grafana

# View package info
npm info @leval/mcp-grafana

๐Ÿ†˜ Support

๐ŸŽ‰ Acknowledgments

This TypeScript implementation provides full feature parity with the original Go version, with improved npm ecosystem integration and support for all major MCP clients.

Made with โค๏ธ for the Grafana and AI community

Available Tools

43 tools
add_activity_to_incidentB

Add a note (userNote activity) to an existing incident's timeline

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe body of the activity
eventTimeNoThe time that the activity occurred
incidentIdYesThe ID of the incident to add activity to

TDQS

B3.2/5.0
Behavior2/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 states this adds a note to an incident's timeline, implying a write/mutation operation, but lacks details on permissions required, whether the operation is idempotent, rate limits, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is insufficient.

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, efficient sentence that front-loads the key action ('Add a note') and resource details. There is no wasted wording, making it easy to parse quickly.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is incomplete. It lacks behavioral details (e.g., side effects, error handling) and does not explain return values or success indicators, which are critical for an agent to use this tool effectively.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters (incidentId, body, eventTime) with their types and requirements. The description adds no additional meaning beyond what the schema provides, such as format examples or constraints, meeting the baseline for high schema coverage.

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

Purpose5/5

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

The description clearly states the specific action ('Add a note'), the resource type ('userNote activity'), and the target ('to an existing incident's timeline'). It distinguishes this from sibling tools like 'create_incident' (which creates incidents) and 'get_incident' (which retrieves incidents), making the purpose unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., incident must exist), exclusions, or compare it to other note-adding or incident-update tools, leaving usage context unclear.

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

create_incidentC

Create a new Grafana incident. Requires title, severity, and room prefix

ParametersJSON Schema
NameRequiredDescriptionDefault
attachCaptionNoCaption of the attachment
attachUrlNoURL of the attachment
isDrillNoWhether the incident is a drill
labelsNoLabels to add to the incident
roomPrefixYesThe prefix of the room to create the incident in
severityYesThe severity of the incident
statusNoThe status of the incident
titleYesThe title of the incident

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden. It states 'Create a new Grafana incident' which implies a write/mutation operation, but doesn't disclose behavioral traits like authentication requirements, rate limits, side effects, or what happens upon creation (e.g., does it return an incident ID?). This leaves significant gaps for a mutation tool.

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, efficient sentence that front-loads the core purpose and immediately specifies required parameters. There's no wasted language or redundancy, making it easy to parse quickly.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns, error conditions, or important behavioral context (like whether incidents are editable after creation). Given the complexity of creating incidents with 8 parameters, more guidance is needed.

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

Parameters3/5

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

The description lists three required parameters (title, severity, room prefix), which matches the schema's required fields. With 100% schema description coverage, the schema already documents all 8 parameters thoroughly. The description adds minimal value beyond confirming required fields, meeting the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('Create a new Grafana incident') and specifies required parameters (title, severity, room prefix). It distinguishes from sibling tools like 'get_incident' or 'list_incidents' by being a creation tool, though it doesn't explicitly contrast with other creation-related tools (none exist in the sibling list).

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

Usage Guidelines2/5

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

The description mentions required parameters but provides no guidance on when to use this tool versus alternatives. There are no explicit instructions about prerequisites, timing, or comparisons to other tools in the sibling list (e.g., when to create vs. get/list incidents).

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

fetch_pyroscope_profileC

Fetches a profile from a Pyroscope data source for a given time range

ParametersJSON Schema
NameRequiredDescriptionDefault
data_source_uidYesThe UID of the datasource to query
end_rfc_3339NoEnd time in RFC3339 format
matchersNoPrometheus-style matchers
max_node_depthNoMaximum depth of nodes in the profile
profile_typeYesProfile type to fetch
start_rfc_3339NoStart time in RFC3339 format

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action without behavioral details. It doesn't disclose whether this is a read-only operation, potential side effects (e.g., rate limits, authentication needs), response format, or error handling. For a tool with 6 parameters and no output schema, this leaves significant gaps in understanding how the tool behaves beyond its inputs.

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, efficient sentence with zero wasteโ€”it directly states the tool's purpose without fluff. It's appropriately sized for a straightforward fetch operation and front-loaded with the core action.

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

Completeness2/5

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

Given the complexity (6 parameters, no annotations, no output schema), the description is incomplete. It doesn't address what the tool returns (e.g., profile data structure), error conditions, or behavioral constraints. For a data-fetching tool with multiple inputs, more context is needed to guide effective use.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 6 parameters (e.g., data_source_uid, profile_type). The description adds minimal value beyond the schema by implying time-range usage but doesn't explain parameter interactions or provide examples (e.g., format for matchers). Baseline 3 is appropriate as the schema does the heavy lifting.

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 action ('fetches') and resource ('a profile from a Pyroscope data source') with specific context ('for a given time range'). It distinguishes from siblings like list_pyroscope_profile_types or query_prometheus by focusing on profile retrieval rather than listing or querying metrics. However, it doesn't explicitly differentiate from tools like get_sift_analysis that might involve similar data retrieval patterns.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid data source UID), when-not scenarios (e.g., for real-time vs. historical data), or direct alternatives among siblings like list_pyroscope_profile_types for discovery. Usage is implied by the action but not explicitly framed.

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

find_error_pattern_logsC

Searches Loki logs for elevated error patterns and returns the results

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd time for the investigation
labelsYesLabels to scope the analysis
nameYesThe name of the investigation
startNoStart time for the investigation

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It mentions 'returns the results' but doesn't disclose format, pagination, rate limits, permissions, or what 'elevated error patterns' entails. This is inadequate for a search tool with potential complexity.

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 a single, efficient sentence that front-loads the core purpose. It avoids redundancy but could be slightly more informative without losing conciseness.

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

Completeness2/5

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

For a search tool with 4 parameters, no annotations, and no output schema, the description is insufficient. It lacks details on result format, error handling, or behavioral traits, leaving significant gaps for an AI agent to operate effectively.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are documented in the schema. The description adds no additional meaning about parameters like 'labels' or time ranges, nor does it explain how 'name' relates to the investigation. Baseline 3 is appropriate as the schema handles documentation.

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 action ('searches') and resource ('Loki logs') with the specific goal of finding 'elevated error patterns'. It distinguishes itself from generic log query tools like 'query_loki_logs' by focusing on error pattern analysis, though it doesn't explicitly contrast with all siblings.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'query_loki_logs' or 'get_sift_analysis'. The description implies usage for error investigation but lacks explicit context, prerequisites, or exclusions.

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

find_slow_requestsC

Searches relevant Tempo datasources for slow requests and returns the results

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd time for the investigation
labelsYesLabels to scope the analysis
nameYesThe name of the investigation
startNoStart time for the investigation

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions searching and returning results but lacks details on behavioral traits such as permissions needed, rate limits, whether it's read-only or mutative, or how results are formatted. This is inadequate for a tool with no annotation coverage.

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 a single, efficient sentence with no wasted words. It's front-loaded with the core action, though it could be slightly more structured by explicitly mentioning key parameters or outcomes.

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

Completeness2/5

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

Given no annotations, no output schema, and 4 parameters (with 2 required), the description is incomplete. It doesn't cover behavioral aspects, result format, or usage context, making it insufficient for an agent to reliably invoke this tool without gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters (end, labels, name, start). The description adds no additional meaning beyond implying a search scope ('Tempo datasources'), but doesn't explain parameter interactions or semantics. Baseline 3 is appropriate as the schema does the heavy lifting.

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

Purpose3/5

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

The description states the tool 'searches relevant Tempo datasources for slow requests and returns the results', which provides a clear verb ('searches') and resource ('Tempo datasources for slow requests'). However, it doesn't differentiate from sibling tools like 'query_loki_logs' or 'get_sift_investigation' that might also search or analyze data, making the purpose somewhat vague in context.

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 guidance is provided on when to use this tool versus alternatives. The description mentions 'searches relevant Tempo datasources' but doesn't specify conditions, prerequisites, or exclusions compared to siblings like 'find_error_pattern_logs' or 'get_sift_analysis', leaving the agent without clear usage context.

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

get_alert_rule_by_uidB

Retrieves the full configuration and detailed status of a specific Grafana alert rule

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesThe uid of the alert rule

TDQS

B3.3/5.0
Behavior2/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 states the tool retrieves configuration and status, implying a read-only operation, but doesn't disclose behavioral traits like authentication requirements, rate limits, error handling, or what 'detailed status' includes. The description is minimal and lacks context beyond the basic action.

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, efficient sentence that front-loads the key action ('Retrieves') and resource. There is no wasted language, and it directly communicates the tool's function without unnecessary elaboration, making it highly concise and well-structured for quick understanding.

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

Completeness3/5

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

Given the tool's low complexity (1 parameter, no nested objects) and 100% schema coverage, the description is minimally adequate. However, with no annotations and no output schema, it lacks details on return values, error cases, or operational constraints. For a retrieval tool, this leaves gaps in understanding the full context, though it meets basic requirements.

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

Parameters3/5

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

The input schema has 100% description coverage, with the 'uid' parameter documented as 'The uid of the alert rule'. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or where to obtain the UID. With high schema coverage, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

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 verb ('Retrieves') and resource ('full configuration and detailed status of a specific Grafana alert rule'), making the purpose unambiguous. It distinguishes from sibling 'list_alert_rules' by specifying retrieval of a single rule by UID rather than listing multiple rules. However, it doesn't explicitly contrast with other alert-related tools beyond the sibling list.

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 when detailed information about a specific alert rule is needed, as opposed to 'list_alert_rules' for multiple rules. However, it doesn't provide explicit guidance on when to use this tool versus alternatives like 'get_assertions' or 'get_sift_investigation', nor does it mention prerequisites such as needing the rule's UID from prior listing.

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

get_assertionsC

Get assertion summary for a given entity with its type, name, env, site, namespace, and time range

ParametersJSON Schema
NameRequiredDescriptionDefault
endTimeYesThe end time in RFC3339 format
entityNameYesThe name of the entity
entityTypeYesThe type of the entity (e.g., Service, Node, Pod)
envNoThe environment of the entity
namespaceNoThe namespace of the entity
siteNoThe site of the entity
startTimeYesThe start time in RFC3339 format

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'Get assertion summary' which implies a read-only operation, but doesn't specify permissions, rate limits, pagination, or what the summary includes (e.g., format, fields). For a tool with 7 parameters and no annotations, this is a significant gap in transparency about how the tool behaves beyond basic input requirements.

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 a single, efficient sentence that lists all key parameters without unnecessary words. It's appropriately sized and front-loaded with the main purpose. However, it could be slightly more structured by separating the purpose from parameter details, but it remains clear and concise overall.

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

Completeness2/5

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

Given the complexity (7 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain what an 'assertion summary' is, what the output looks like, or behavioral aspects like error handling. For a tool retrieving summaries with multiple filters, more context is needed to guide effective use, especially without annotations or output schema to fill in gaps.

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

Parameters3/5

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

The description lists parameters (type, name, env, site, namespace, time range), but the input schema has 100% description coverage, providing detailed descriptions for all 7 parameters (e.g., 'The end time in RFC3339 format'). The description adds minimal value beyond the schema, as it doesn't explain relationships between parameters or provide additional context. With high schema coverage, the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get assertion summary for a given entity' with specific parameters (type, name, env, site, namespace, time range). It uses a specific verb ('Get') and resource ('assertion summary'), making the purpose clear. However, it doesn't differentiate from sibling tools like 'get_sift_analysis' or 'get_dashboard_summary' which might also retrieve summaries, so it doesn't fully distinguish from alternatives.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It lists parameters but doesn't mention prerequisites, exclusions, or compare it to sibling tools like 'get_sift_analysis' or 'get_dashboard_summary'. There's only implied usage based on needing an 'assertion summary' for an entity, but no explicit context or alternatives are provided.

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

get_current_oncall_usersB

Get the list of users currently on-call for a specific Grafana OnCall schedule

ParametersJSON Schema
NameRequiredDescriptionDefault
scheduleIdYesThe ID of the schedule to get current on-call users for

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states what the tool does without behavioral details. It doesn't disclose whether this is a read-only operation, potential rate limits, authentication needs, error handling, or what the return format looks like (e.g., list structure, timestamps).

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, efficient sentence that front-loads the core purpose with zero waste. Every word earns its place by specifying the action, resource, and context without redundancy.

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

Completeness3/5

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

For a simple read tool with one parameter and no output schema, the description is minimally adequate but lacks completeness. It doesn't explain return values, error cases, or behavioral traits, leaving gaps despite the straightforward input schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents the single parameter 'scheduleId'. The description adds no additional meaning beyond implying it's for a Grafana OnCall schedule, which aligns with the schema. Baseline 3 is appropriate as the schema does the heavy lifting.

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 verb ('Get') and resource ('list of users currently on-call'), specifying it's for a Grafana OnCall schedule. It distinguishes from siblings like 'list_oncall_users' by focusing on current on-call status rather than general listing, but doesn't explicitly contrast with 'get_oncall_shift' which might overlap.

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 guidance on when to use this tool versus alternatives like 'list_oncall_users' or 'get_oncall_shift' is provided. The description implies usage for current on-call status, but lacks context on prerequisites, exclusions, or comparisons with sibling tools.

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

get_dashboard_by_uidB

Retrieves the complete dashboard, including panels, variables, and settings, for a specific dashboard identified by its UID

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesThe UID of the dashboard

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states 'retrieves' implying a read operation, but doesn't disclose behavioral traits like authentication needs, rate limits, error handling, or response format. This is a significant gap for a tool with no annotation coverage.

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, efficient sentence that front-loads the key action and details. Every word earns its place with no redundancy, making it easy to parse quickly.

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

Completeness3/5

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

Given 1 parameter with full schema coverage and no output schema, the description adequately covers the basic purpose. However, as a retrieval tool with no annotations, it lacks details on return values, error cases, or operational constraints, leaving gaps in completeness.

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

Parameters3/5

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

Schema description coverage is 100%, with the parameter 'uid' documented as 'The UID of the dashboard'. The description adds minimal value beyond this, only reiterating 'identified by its UID'. Baseline 3 is appropriate since the schema does the heavy lifting.

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 verb ('retrieves') and resource ('complete dashboard'), specifying what it returns ('including panels, variables, and settings') and how it's identified ('by its UID'). It distinguishes from siblings like 'get_dashboard_summary' or 'get_dashboard_property' by emphasizing completeness, though it doesn't explicitly name alternatives.

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

Usage Guidelines3/5

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

The description implies usage when a full dashboard is needed via UID, but doesn't explicitly state when to use this vs. alternatives like 'get_dashboard_summary' or 'search_dashboards'. No exclusions or prerequisites are mentioned, leaving some ambiguity in context.

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

get_dashboard_panel_queriesC

Retrieve panel queries and information from a Grafana dashboard

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesThe UID of the dashboard

TDQS

C2.9/5.0
Behavior2/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 'Retrieve' which implies a read operation, but lacks details on permissions, rate limits, output format, or error handling. This is a significant gap for a tool with no annotation coverage.

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 a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded, though it could be slightly more informative without losing conciseness.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'panel queries and information' includes, how results are structured, or any behavioral traits, making it inadequate for a tool that retrieves data from a dashboard.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema fully documents the single parameter 'uid'. The description doesn't add any extra meaning beyond what's in the schema, such as explaining what a 'panel query' entails or how the UID is obtained, but the baseline is 3 since the schema does the heavy lifting.

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 action ('Retrieve') and target resource ('panel queries and information from a Grafana dashboard'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_dashboard_by_uid' or 'get_dashboard_summary', which might retrieve related dashboard data, so it misses full sibling distinction.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, context, or exclusions, such as how it differs from other dashboard-related tools in the sibling list, leaving usage unclear.

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

get_dashboard_propertyB

Get specific parts of a dashboard using JSONPath expressions to minimize context window usage

ParametersJSON Schema
NameRequiredDescriptionDefault
jsonPathYesJSONPath expression to extract specific data
uidYesThe UID of the dashboard

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool is for 'Get[ting]' data, implying a read-only operation, but doesn't clarify permissions, rate limits, error handling, or response format. The phrase 'minimize context window usage' hints at efficiency but lacks concrete behavioral details, leaving significant gaps for a tool with no annotation coverage.

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, efficient sentence that front-loads the core purpose ('Get specific parts of a dashboard') and includes a rationale ('to minimize context window usage'). There is zero waste, and every word earns its place, making it highly concise and well-structured.

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

Completeness2/5

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

Given no annotations, no output schema, and a tool that performs data extraction (which can have complex behavioral aspects like error cases or partial returns), the description is incomplete. It lacks details on what 'specific parts' means in practice, how JSONPath expressions are evaluated, or what the return format looks like, making it inadequate for full contextual understanding.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters ('uid' and 'jsonPath') well-documented in the schema. The description adds minimal value beyond the schema by mentioning 'JSONPath expressions' and 'dashboard', but doesn't provide additional syntax examples, format details, or constraints. Baseline 3 is appropriate as the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get specific parts of a dashboard using JSONPath expressions.' It specifies the verb ('Get'), resource ('dashboard'), and method ('JSONPath expressions'), distinguishing it from siblings like 'get_dashboard_by_uid' or 'get_dashboard_summary' by focusing on partial extraction. However, it doesn't explicitly contrast with these siblings, missing full differentiation.

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 context: 'to minimize context window usage' suggests this tool is for targeted data retrieval when full dashboard content is unnecessary. However, it lacks explicit guidance on when to use this tool versus alternatives like 'get_dashboard_by_uid' or 'get_dashboard_summary', and doesn't mention prerequisites or exclusions, leaving usage somewhat ambiguous.

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

get_dashboard_summaryB

Get a compact summary of a dashboard including title, panel count, panel types, variables, and other metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesThe UID of the dashboard

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the tool retrieves a summary, implying a read-only operation, but doesn't disclose behavioral traits such as authentication needs, rate limits, error handling, or whether it's idempotent. For a tool with no annotations, this leaves significant gaps in understanding how it behaves.

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, efficient sentence that front-loads the purpose and lists included metadata without unnecessary words. Every element (verb, resource, details) earns its place, making it easy to parse quickly.

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

Completeness3/5

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

Given no annotations, no output schema, and a simple single-parameter input, the description provides basic purpose but lacks completeness. It doesn't explain the return format, error cases, or how it differs from sibling tools, which is inadequate for full contextual understanding despite the tool's low complexity.

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

Parameters3/5

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

The input schema has 100% description coverage, clearly documenting the 'uid' parameter. The description adds no additional parameter semantics beyond implying the summary is for a specific dashboard identified by UID. This meets the baseline of 3 since the schema adequately covers the single parameter.

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 action ('Get a compact summary') and resource ('of a dashboard'), specifying what information is included (title, panel count, panel types, variables, metadata). It distinguishes from siblings like 'get_dashboard_by_uid' by emphasizing the 'compact summary' aspect rather than full details, though the distinction could be more explicit.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'get_dashboard_by_uid' or 'search_dashboards'. The description implies usage for summary metadata but doesn't specify scenarios, prerequisites, or exclusions, leaving the agent to infer based on tool names alone.

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

get_datasource_by_nameB

Retrieves detailed information about a specific datasource using its name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe name of the datasource

TDQS

B3.1/5.0
Behavior2/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 states this is a retrieval operation, implying read-only behavior, but doesn't disclose any behavioral traits such as error handling (e.g., what happens if the datasource doesn't exist), authentication requirements, rate limits, or the format of the returned information. This leaves significant gaps for an agent.

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

Conciseness5/5

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

The description is a single, well-structured sentence that efficiently conveys the core purpose without any wasted words. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.

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

Completeness3/5

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

Given the tool's low complexity (single parameter, no output schema, no annotations), the description is minimally adequate but incomplete. It covers the basic operation but lacks behavioral details (e.g., error cases) and contextual guidance, which are needed for full agent understanding in a server with many sibling tools.

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

Parameters3/5

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

The input schema has 100% description coverage, with the single parameter 'name' clearly documented. The description adds no additional semantic context beyond what's in the schema (e.g., it doesn't specify name format or constraints), so it meets the baseline of 3 where the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Retrieves') and resource ('detailed information about a specific datasource'), and it specifies the lookup method ('using its name'). However, it doesn't explicitly differentiate from sibling tools like 'get_datasource_by_uid' or 'list_datasources', which would require a 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get_datasource_by_uid' (which uses UID instead of name) or 'list_datasources' (which lists all datasources). It only states what it does, not when it's appropriate relative to other tools.

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

get_datasource_by_uidC

Retrieves detailed information about a specific datasource using its UID.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYesThe uid of the datasource

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states this is a retrieval operation, implying read-only behavior, but doesn't mention any constraints like authentication requirements, rate limits, error conditions, or what 'detailed information' includes. For a tool with no annotation coverage, this is insufficient.

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, well-structured sentence that efficiently conveys the core functionality without unnecessary words. It's front-loaded with the main action and resource, making it easy to parse. Every part of the sentence serves a clear purpose.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete for a retrieval tool. It doesn't specify what 'detailed information' includes, potential error cases, or how to handle missing datasources. With 100% schema coverage, the input is documented, but the lack of behavioral and output details leaves significant gaps for the agent.

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

Parameters3/5

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

Schema description coverage is 100%, with the single parameter 'uid' documented as 'The uid of the datasource'. The description adds that it's used to retrieve 'detailed information about a specific datasource', reinforcing the parameter's purpose but not providing additional semantic context beyond what the schema already covers. This meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the verb ('Retrieves') and resource ('detailed information about a specific datasource'), making the purpose unambiguous. It distinguishes from list_datasources by specifying retrieval by UID rather than listing all. However, it doesn't explicitly contrast with get_datasource_by_name, which is a sibling tool, leaving some room for improvement.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like get_datasource_by_name or list_datasources. It mentions using a UID but doesn't explain when UID-based lookup is preferred over name-based lookup or listing all datasources, leaving the agent to infer usage context.

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

get_incidentA

Get a single incident by ID. Returns the full incident details

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe ID of the incident to retrieve

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that it 'Returns the full incident details,' which adds some context about output behavior, but it lacks details on error handling (e.g., what happens if the ID is invalid), authentication requirements, rate limits, or whether it's a read-only operation. For a tool with no annotations, this is insufficient to fully understand its 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 extremely concise and front-loaded, consisting of only two sentences that directly state the tool's function and output. There is no wasted language or redundancy, making it easy to parse and understand quickly.

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

Completeness3/5

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

Given the tool's low complexity (one required parameter, no nested objects) and no output schema, the description provides basic completeness by stating the purpose and return value. However, it lacks details on error cases, permissions, or data format, which could be important for an agent to use it correctly. With no annotations and no output schema, the description should ideally include more behavioral context to be fully complete.

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

Parameters3/5

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

The input schema has 100% description coverage, with the 'id' parameter documented as 'The ID of the incident to retrieve.' The description adds no additional parameter semantics beyond what the schema provides, such as format examples or constraints. Given the high schema coverage, the baseline score of 3 is appropriate, as the schema adequately handles parameter documentation.

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

Purpose5/5

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

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('a single incident by ID'), distinguishing it from sibling tools like 'list_incidents' (which retrieves multiple incidents) and 'create_incident' (which creates new incidents). It explicitly mentions the scope ('single incident') and the action ('retrieve'), making the purpose unambiguous.

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 implies usage context by specifying 'by ID,' indicating it should be used when you have a specific incident identifier, as opposed to 'list_incidents' for browsing multiple incidents. However, it does not explicitly state when not to use it or mention alternatives like 'get_sift_investigation' for related resources, leaving some guidance gaps.

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

get_oncall_shiftC

Get detailed information for a specific Grafana OnCall shift

ParametersJSON Schema
NameRequiredDescriptionDefault
shiftIdYesThe ID of the shift to get details for

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Get[s] detailed information,' implying a read-only operation, but doesn't specify what 'detailed information' includes, whether it requires authentication, any rate limits, error conditions, or the response format. For a tool with no annotation coverage, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without any wasted words. It's appropriately sized for a simple lookup tool and front-loaded with the core action, making it easy to parse quickly.

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

Completeness2/5

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

For a tool with no annotations and no output schema, the description is incomplete. It doesn't explain what 'detailed information' includes, how to interpret results, or any behavioral nuances. Given the complexity of fetching shift details in an on-call system, more context is needed to help the agent use this tool effectively.

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

Parameters3/5

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

The input schema has 100% description coverage, with the 'shiftId' parameter clearly documented as 'The ID of the shift to get details for.' The description adds no additional meaning beyond this, such as format examples or constraints. Given the high schema coverage, a baseline score of 3 is appropriate, as the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get detailed information for a specific Grafana OnCall shift.' It uses a specific verb ('Get') and resource ('Grafana OnCall shift'), making it easy to understand. However, it doesn't explicitly distinguish this tool from potential siblings like 'get_current_oncall_users' or 'list_oncall_schedules,' which reduces clarity in a crowded toolset.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a shift ID), exclusions, or how it differs from related tools like 'list_oncall_schedules' or 'get_current_oncall_users.' This leaves the agent to infer usage from the tool name alone, which is insufficient.

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

get_sift_analysisC

Retrieves a specific analysis from an investigation by its UUID

ParametersJSON Schema
NameRequiredDescriptionDefault
analysisIdYesThe UUID of the specific analysis
investigationIdYesThe UUID of the investigation

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states a read operation ('retrieves'), which implies safety, but doesn't cover critical aspects like authentication requirements, rate limits, error handling, or what happens if IDs are invalid. This leaves significant gaps for a tool that accesses sensitive investigation data.

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, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every part of the sentence earns its place.

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

Completeness2/5

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

For a tool with no annotations and no output schema, the description is incomplete. It doesn't explain what an 'analysis' contains, the return format, or behavioral traits like data sensitivity. Given the context (investigation data access), more detail is needed to help an agent use it correctly and safely.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters clearly documented in the schema. The description adds no additional semantic context beyond implying UUIDs are used for identification. This meets the baseline of 3 since the schema does the heavy lifting, but the description doesn't enhance understanding (e.g., explaining relationship between investigation and analysis IDs).

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 action ('retrieves') and resource ('a specific analysis from an investigation'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'get_sift_investigation' or 'list_sift_investigations', which would require mentioning it fetches a single analysis rather than a list or investigation details.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing investigation and analysis), exclusions, or comparisons to siblings like 'list_sift_investigations' for browsing analyses. Usage is implied but not explicitly stated.

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

get_sift_investigationC

Retrieves an existing Sift investigation by its UUID

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe UUID of the investigation

TDQS

C2.9/5.0
Behavior2/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 'Retrieves an existing Sift investigation,' implying a read-only operation, but doesn't cover aspects like authentication requirements, rate limits, error handling, or what data is returned. This leaves significant gaps in understanding the tool's 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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it highly concise and well-structured.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what an 'investigation' entails, what data is retrieved, or how it differs from sibling tools. For a tool with no structured behavioral data, more context is needed to fully understand its use.

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

Parameters3/5

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

The input schema has 100% description coverage, with the 'id' parameter documented as 'The UUID of the investigation.' The description adds no additional parameter semantics beyond this, so it meets the baseline of 3 for high schema coverage without extra value.

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 action ('Retrieves') and resource ('an existing Sift investigation'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_sift_analysis' or 'list_sift_investigations', which would require more specific context about what distinguishes an 'investigation' from 'analysis' or 'list' operations.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'list_sift_investigations' for browsing or 'get_sift_analysis' for related data, nor does it specify prerequisites or exclusions, leaving usage context unclear.

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

list_alert_rulesB

Lists Grafana alert rules, returning a summary including UID, title, current state, and labels

ParametersJSON Schema
NameRequiredDescriptionDefault
label_selectorsNoLabel matchers to filter alert rules
limitNoMaximum number of results to return
pageNoPage number to return

TDQS

B3.1/5.0
Behavior2/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 the tool returns a summary with specific fields (UID, title, current state, labels), which is helpful, but doesn't cover critical aspects like pagination behavior (implied by 'limit' and 'page' parameters but not explained), rate limits, authentication requirements, error conditions, or whether it's read-only (though 'Lists' implies it).

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, efficient sentence that front-loads the core purpose and includes key return details. Every word earns its place with no redundancy or wasted verbiage, making it easy to parse quickly.

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

Completeness3/5

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

For a list tool with no annotations and no output schema, the description is minimally adequate. It specifies the resource and return fields, but lacks details on pagination, filtering behavior, or error handling. Given the 3 parameters and absence of structured behavioral hints, it should provide more context to be fully helpful.

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

Parameters3/5

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

The description adds no parameter-specific information beyond what's in the schema, which has 100% coverage with clear descriptions for 'label_selectors', 'limit', and 'page'. The baseline is 3 since the schema does the heavy lifting, but the description doesn't compensate with additional context like example usage or parameter interactions.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Lists Grafana alert rules' with a specific verb ('Lists') and resource ('Grafana alert rules'). It distinguishes from some siblings like 'get_alert_rule_by_uid' by indicating it returns multiple rules, but doesn't explicitly differentiate from other list tools like 'list_incidents' or 'list_contact_points' beyond the resource type.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_alert_rule_by_uid' for retrieving a single rule, or other list tools for different resources. There's no context about prerequisites, typical use cases, or exclusions.

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

list_contact_pointsB

Lists Grafana notification contact points, returning a summary including UID, name, and type

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return
nameNoFilter contact points by name

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool returns (summary with UID, name, type) but doesn't mention important behavioral aspects like whether results are paginated, authentication requirements, rate limits, error conditions, or whether this is a read-only operation. For a list tool with zero annotation coverage, this leaves significant gaps.

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

Conciseness5/5

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

The description is a single, well-structured sentence that efficiently communicates the core functionality. It's front-loaded with the main action and includes the return format without unnecessary elaboration. Every word earns its place.

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 list tool with 2 parameters and 100% schema coverage but no annotations or output schema, the description provides basic completeness. It states what's being listed and the return format, but lacks behavioral context that would be helpful for an agent. The absence of output schema means the description's mention of return format is valuable, but more behavioral transparency would improve completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents both parameters (limit and name). The description adds no additional parameter semantics beyond what's in the schema. According to scoring rules, when schema coverage is high (>80%), the baseline is 3 even with no param info in the description.

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 verb ('Lists') and resource ('Grafana notification contact points'), making the purpose immediately understandable. It distinguishes from siblings by specifying the exact resource type, though it doesn't explicitly differentiate from other list tools like list_alert_rules or list_datasources beyond naming the resource.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, when this tool is appropriate versus other list tools, or any context-specific usage recommendations. The agent must infer usage from the tool name alone.

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

list_datasourcesB

List available Grafana datasources. Optionally filter by datasource type.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoThe type of datasources to search for (e.g., "prometheus", "loki")

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions optional filtering but doesn't describe key behaviors such as pagination, rate limits, authentication requirements, or the format of returned data. For a list operation with no annotation coverage, this leaves significant gaps in understanding how the tool behaves in practice.

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, efficient sentence that front-loads the core purpose ('List available Grafana datasources') and adds a brief qualifier about optional filtering. There is no wasted text, and it's structured to convey essential information without unnecessary elaboration.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete for a tool that lists resources. It doesn't address behavioral aspects like pagination, error handling, or data format, which are critical for an AI agent to use the tool effectively. While the purpose is clear, the overall context needed for reliable operation is insufficient.

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

Parameters3/5

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

The input schema has 100% description coverage, with the 'type' parameter documented as filtering by datasource type (e.g., 'prometheus', 'loki'). The description adds minimal value beyond this, only restating that filtering is optional. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, as the description doesn't provide additional semantic context.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'List available Grafana datasources' with an optional filter by type. It specifies the verb ('List') and resource ('Grafana datasources'), making the action clear. However, it doesn't explicitly differentiate from sibling tools like 'get_datasource_by_name' or 'get_datasource_by_uid', which are more specific retrieval 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 implies usage context by mentioning optional filtering by datasource type, suggesting it's for browsing or filtering datasources. However, it doesn't provide explicit guidance on when to use this tool versus alternatives like 'get_datasource_by_name' or 'get_datasource_by_uid', nor does it specify prerequisites or exclusions, leaving some ambiguity.

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

list_incidentsB

List Grafana incidents. Allows filtering by status and optionally including drill incidents

ParametersJSON Schema
NameRequiredDescriptionDefault
drillNoWhether to include drill incidents
limitNoMaximum number of incidents to return
statusNoThe status of incidents to include

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions filtering capabilities (status, drill incidents) and implies a listing operation, but fails to describe critical behaviors such as pagination (though 'limit' parameter hints at it), return format, ordering, error handling, or any rate limits. For a list tool with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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, efficient sentence that front-loads the core purpose ('List Grafana incidents') and immediately adds key filtering details. Every word earns its place, with no redundant or vague phrasing, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of a list operation with filtering, no annotations, and no output schema, the description is incomplete. It lacks information on return values (e.g., structure of incident objects), pagination beyond the 'limit' parameter, error cases, or any behavioral nuances. While it covers basic filtering, it doesn't compensate for the absence of structured output or annotation data, leaving the agent with insufficient context for reliable use.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all parameters (drill, limit, status) with descriptions and enums. The description adds marginal value by mentioning 'filtering by status and optionally including drill incidents,' which aligns with the schema but doesn't provide additional syntax, format details, or context beyond what's already structured. Baseline 3 is appropriate when the schema does the heavy lifting.

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 verb ('List') and resource ('Grafana incidents'), making the purpose immediately understandable. It distinguishes itself from sibling tools like 'get_incident' (singular retrieval) by indicating it returns multiple incidents. However, it doesn't explicitly differentiate from other list tools (e.g., 'list_alert_rules') beyond the resource type.

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

Usage Guidelines3/5

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

The description implies usage context through 'Allows filtering by status and optionally including drill incidents,' suggesting when to use it for filtered listings. However, it doesn't provide explicit guidance on when to choose this tool over alternatives like 'get_incident' for single incidents or other list tools for different resources, nor does it mention any exclusions or prerequisites.

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

list_loki_label_namesA

Lists all available label names (keys) found in logs within a specified Loki datasource and time range

ParametersJSON Schema
NameRequiredDescriptionDefault
datasourceUidYesThe UID of the datasource to query
endRfc3339NoThe end time of the query in RFC3339 format
startRfc3339NoThe start time of the query in RFC3339 format

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool lists label names but doesn't describe output format (e.g., array of strings), pagination, rate limits, authentication requirements, or error conditions. For a read-only query tool with no annotation coverage, this leaves significant gaps in understanding how the tool behaves beyond its basic purpose.

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, well-structured sentence that efficiently conveys the tool's purpose without redundancy. It front-loads the key action ('Lists all available label names') and includes essential qualifiers ('found in logs within a specified Loki datasource and time range'), making it easy to parse quickly with zero 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 read-only query tool with three parameters and no output schema, the description is adequate but incomplete. It covers the purpose and parameters indirectly, but lacks details on behavioral aspects like output format, error handling, or performance considerations. Given the absence of annotations and output schema, the description should do more to compensate, but it meets minimum viability for basic use.

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

Parameters3/5

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

Schema description coverage is 100%, with all three parameters clearly documented in the input schema. The description adds minimal value beyond the schema by mentioning 'Loki datasource and time range,' which aligns with the parameters but doesn't provide additional syntax, format details, or usage context. This meets the baseline score of 3 when the schema does the heavy lifting.

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 ('Lists all available label names') and the resource ('found in logs within a specified Loki datasource and time range'), using specific terminology. It distinguishes itself from sibling tools like 'list_loki_label_values' by focusing on label names rather than values, and from 'query_loki_logs' by returning metadata rather than log content.

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

Usage Guidelines3/5

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

The description implies usage for exploring label metadata in Loki logs within a time range, but provides no explicit guidance on when to use this tool versus alternatives like 'list_prometheus_label_names' or 'list_pyroscope_label_names' for other data sources. It also doesn't mention prerequisites or exclusions, leaving the agent to infer context from the tool name and description alone.

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

list_loki_label_valuesB

Retrieves all unique values associated with a specific labelName within a Loki datasource and time range

ParametersJSON Schema
NameRequiredDescriptionDefault
datasourceUidYesThe UID of the datasource to query
endRfc3339NoThe end time of the query in RFC3339 format
labelNameYesThe name of the label to retrieve values for
startRfc3339NoThe start time of the query in RFC3339 format

TDQS

B3.2/5.0
Behavior2/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 states the tool retrieves data, implying a read-only operation, but doesn't disclose behavioral traits such as rate limits, authentication needs, error handling, or the format of returned values. The description is minimal and lacks context about what 'unique values' entails (e.g., sorted, paginated).

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, efficient sentence that front-loads the core action ('Retrieves all unique values') and specifies key constraints ('associated with a specific labelName within a Loki datasource and time range'). There is no wasted language, and it's appropriately sized for the tool's complexity.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete for a tool with four parameters. It doesn't explain what the tool returns (e.g., format of values, potential errors), behavioral aspects like performance or limits, or how it differs from similar sibling tools. For a read operation with temporal parameters, more context is needed to guide effective use.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters (datasourceUid, endRfc3339, labelName, startRfc3339) with clear descriptions. The description adds minimal value beyond the schema by mentioning 'time range' (implied by startRfc3339 and endRfc3339) and 'Loki datasource' (implied by datasourceUid). Baseline 3 is appropriate as the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Retrieves') and resource ('all unique values associated with a specific labelName within a Loki datasource and time range'). It distinguishes from sibling tools like 'list_loki_label_names' by focusing on values rather than names, but doesn't explicitly differentiate from 'list_prometheus_label_values' or 'list_pyroscope_label_values' which have similar patterns for different datasources.

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 context by specifying 'within a Loki datasource and time range,' suggesting when to use it (for Loki label values with temporal constraints). However, it doesn't provide explicit guidance on when to choose this over alternatives like 'list_prometheus_label_values' or 'list_pyroscope_label_values,' nor does it mention prerequisites or exclusions beyond the required parameters.

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

list_oncall_schedulesB

List Grafana OnCall schedules, optionally filtering by team ID

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoThe page number to return (1-based)
scheduleIdNoThe ID of a specific schedule to retrieve
teamIdNoThe ID of the team to list schedules for

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions filtering capability but doesn't describe pagination behavior (implied by 'page' parameter), rate limits, authentication requirements, or what happens when no filters are applied. For a list operation with 3 parameters and no annotation coverage, this leaves significant behavioral gaps.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose and includes the key optional capability. Every word earns its place with zero redundancy or unnecessary elaboration.

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 list operation with 3 well-documented parameters but no annotations and no output schema, the description provides adequate basic context but leaves gaps. It doesn't address pagination behavior, response format, error conditions, or how the optional parameters interact. The description is complete enough for basic usage but insufficient for full understanding of tool behavior.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value by mentioning team ID filtering but doesn't provide additional context about parameter interactions (e.g., whether scheduleId overrides other filters) or usage patterns beyond what's in the 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 clearly states the action ('List') and resource ('Grafana OnCall schedules'), making the purpose immediately understandable. It distinguishes from some siblings like 'get_oncall_shift' (singular retrieval) but doesn't explicitly differentiate from other list tools like 'list_oncall_teams' or 'list_oncall_users' that operate on different resources.

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

Usage Guidelines3/5

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

The description provides implied usage context through the optional filtering capability ('optionally filtering by team ID'), suggesting when this tool might be preferred over unfiltered listing. However, it doesn't explicitly state when to use this tool versus alternatives like 'list_oncall_teams' or provide any exclusion criteria or prerequisites.

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

list_oncall_teamsB

List teams configured in Grafana OnCall

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoThe page number to return

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'List' implies a read operation, it doesn't mention whether this requires authentication, what format the results come in, whether it's paginated (though the page parameter suggests it is), or any rate limits. The description is minimal and leaves important behavioral aspects unspecified.

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, efficient sentence that states exactly what the tool does with zero wasted words. It's appropriately sized for a simple listing tool and gets straight to the point without unnecessary elaboration.

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

Completeness3/5

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

For a simple listing tool with one documented parameter and no output schema, the description is minimally adequate. However, without annotations and with sibling tools that could cause confusion, it should ideally provide more context about what 'teams configured in Grafana OnCall' means specifically and how this differs from other team listing tools.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents the single 'page' parameter. The description doesn't add any parameter information beyond what's in the schema, nor does it explain the pagination behavior or default values. This meets the baseline expectation when schema coverage is complete.

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 verb ('List') and resource ('teams configured in Grafana OnCall'), making the purpose specific and understandable. However, it doesn't distinguish this tool from its sibling 'list_teams' (which appears to list general Grafana teams), leaving some ambiguity about the exact scope 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?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'list_teams' and 'get_current_oncall_users' available, there's no indication of when this specific oncall team listing is appropriate versus those other team/user listing tools.

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

list_oncall_usersB

List users from Grafana OnCall. Can retrieve all users, a specific user, or filter by username

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoThe page number to return
userIdNoThe ID of a specific user to retrieve
usernameNoUsername to filter by

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions retrieval capabilities but fails to describe critical behaviors such as pagination handling (implied by the 'page' parameter), authentication requirements, rate limits, or the format of returned data. For a read operation with zero annotation coverage, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose ('List users from Grafana OnCall') and succinctly explains the key functionalities. There is no wasted verbiage, and every part of the sentence contributes directly to understanding the tool's scope and options.

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

Completeness2/5

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

Given the complexity of a list/retrieve tool with three parameters and no output schema, the description is incomplete. It lacks details on behavioral aspects (e.g., pagination, auth), doesn't explain the return format, and offers minimal guidance on usage. With no annotations to compensate, the description fails to provide sufficient context for an agent to use the tool effectively beyond basic parameter input.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all three parameters ('page', 'userId', 'username') with clear descriptions. The description adds marginal value by summarizing the filtering options ('all users, a specific user, or filter by username'), but it doesn't provide additional syntax, format details, or usage examples beyond what the schema offers. This meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the verb ('List') and resource ('users from Grafana OnCall'), making the purpose evident. It distinguishes the tool by specifying it can retrieve all users, a specific user, or filter by username, which helps differentiate it from sibling tools like 'list_users_by_org' or 'get_current_oncall_users'. However, it doesn't explicitly contrast with these siblings, so it's not a perfect 5.

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 scenarios (retrieving all users, a specific user, or filtering by username), but it doesn't provide explicit guidance on when to use this tool versus alternatives like 'get_current_oncall_users' or 'list_users_by_org'. No exclusions or prerequisites are mentioned, leaving the agent to infer context from the tool name and parameters alone.

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

list_prometheus_label_namesB

List label names in a Prometheus datasource. Allows filtering by series selectors and time range.

ParametersJSON Schema
NameRequiredDescriptionDefault
datasourceUidYesThe UID of the datasource to query
endRfc3339NoThe end time of the time range
limitNoMaximum number of results
matchesNoLabel matchers to filter the results
startRfc3339NoThe start time of the time range

TDQS

B3.3/5.0
Behavior2/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. While it mentions the tool's filtering capabilities, it doesn't describe important behavioral aspects like whether this is a read-only operation, what permissions are required, whether results are paginated, potential rate limits, or what format the results take. For a query tool with 5 parameters and no annotations, this leaves significant gaps in understanding how the tool behaves.

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 perfectly concise at two sentences with zero wasted words. The first sentence establishes the core purpose, and the second sentence adds the key capability (filtering). Every word earns its place, and the information is front-loaded with the most important details first.

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

Completeness3/5

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

Given the tool's moderate complexity (5 parameters, nested filtering logic), no annotations, and no output schema, the description is minimally adequate but incomplete. It covers the basic purpose and filtering capabilities but doesn't address important contextual information like what the output looks like, error conditions, performance characteristics, or how this tool fits into broader Prometheus query workflows. The 100% schema coverage helps, but for a query tool with no output schema, more guidance on results would be beneficial.

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

Parameters3/5

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

The schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by mentioning filtering by 'series selectors' (which corresponds to the 'matches' parameter) and 'time range' (which corresponds to 'startRfc3339' and 'endRfc3339'). However, it doesn't provide additional context about parameter interactions, default behaviors, or practical usage examples that would help an agent understand how to use these parameters effectively together.

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 action ('List label names') and resource ('in a Prometheus datasource'), making the purpose immediately understandable. It distinguishes from sibling tools like 'list_prometheus_label_values' and 'list_prometheus_metric_names' by focusing specifically on label names. However, it doesn't explicitly differentiate from 'list_loki_label_names' or 'list_pyroscope_label_names' which serve similar functions for different data sources.

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 context by mentioning filtering capabilities ('Allows filtering by series selectors and time range'), suggesting when this tool might be preferred over simpler listing tools. However, it doesn't provide explicit guidance on when to use this versus alternatives like 'list_prometheus_label_values' or 'list_prometheus_metric_names', nor does it mention any prerequisites or exclusions for usage.

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

list_prometheus_label_valuesB

Get the values for a specific label name in Prometheus. Allows filtering by series selectors and time range.

ParametersJSON Schema
NameRequiredDescriptionDefault
datasourceUidYesThe UID of the datasource to query
endRfc3339NoThe end time of the query
labelNameYesThe name of the label to query
limitNoMaximum number of results
matchesNoSelectors to filter the results
startRfc3339NoThe start time of the query

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions filtering and time range capabilities, which adds some context beyond basic purpose. However, it lacks critical details such as whether this is a read-only operation, potential rate limits, authentication requirements, error handling, or the format of returned values. For a tool with 6 parameters and no annotations, this is a significant 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 description is a single, efficient sentence that front-loads the core purpose and adds filtering context. There is no wasted verbiage or redundancy, making it easy to parse quickly. Every word earns its place by contributing to understanding the tool's functionality.

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

Completeness2/5

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

Given the complexity (6 parameters, nested objects in 'matches', no output schema, and no annotations), the description is insufficient. It doesn't explain the return format, error conditions, or behavioral nuances like pagination (implied by 'limit' parameter) or how filtering works in practice. For a tool with this level of complexity and no structured support, the description should provide more operational context.

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

Parameters3/5

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

Schema description coverage is 100%, meaning all parameters are documented in the schema itself. The description adds marginal value by mentioning 'filtering by series selectors and time range,' which loosely corresponds to the 'matches', 'startRfc3339', and 'endRfc3339' parameters. However, it doesn't provide additional syntax, examples, or constraints beyond what the schema already specifies, so it meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get the values for a specific label name in Prometheus.' It specifies the verb ('Get'), resource ('values for a specific label name'), and domain ('Prometheus'). However, it doesn't explicitly differentiate from its sibling 'list_prometheus_label_names' or other Prometheus query tools, which prevents a perfect score.

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 context by mentioning filtering capabilities ('Allows filtering by series selectors and time range'), which suggests when this tool might be preferred over simpler queries. However, it doesn't provide explicit guidance on when to use this versus alternatives like 'list_prometheus_label_names' or 'query_prometheus', nor does it mention prerequisites or exclusions.

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

list_prometheus_metric_metadataC

List Prometheus metric metadata. Returns metadata about metrics currently scraped from targets.

ParametersJSON Schema
NameRequiredDescriptionDefault
datasourceUidYesThe UID of the datasource to query
limitNoThe maximum number of metrics to return
limitPerMetricNoThe maximum number of metrics to return per metric
metricNoThe metric to query

TDQS

C2.9/5.0
Behavior2/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 mentions the return type ('metadata about metrics') but lacks critical behavioral details: it doesn't specify if this is a read-only operation, what format the metadata is in (e.g., JSON structure), whether it's paginated or limited by default, or any authentication requirements. The description is minimal and leaves key behaviors undocumented.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose and followed by a clarifying detail about returns. Every word earns its place with zero waste, making it highly efficient and easy to parse quickly.

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

Completeness2/5

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

Given the complexity (4 parameters, no annotations, no output schema), the description is incomplete. It doesn't address the tool's behavior (e.g., read-only nature, response format), usage context, or how parameters affect results. For a tool with multiple parameters and no structured output, more detail is needed to guide effective use.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters (datasourceUid, limit, limitPerMetric, metric). The description adds no additional meaning beyond what's in the schemaโ€”it doesn't explain how parameters interact (e.g., 'metric' filters results) or provide examples. With high schema coverage, the baseline is 3, and the description doesn't compensate further.

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 verb ('List') and resource ('Prometheus metric metadata'), and specifies what it returns ('metadata about metrics currently scraped from targets'). It distinguishes from some siblings like 'list_prometheus_metric_names' by focusing on metadata rather than just names, though it doesn't explicitly contrast with all relevant siblings like 'query_prometheus'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose it over 'list_prometheus_metric_names' (for names only) or 'query_prometheus' (for metric values), nor does it specify prerequisites like needing a datasource. Usage is implied but not explicitly stated.

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

list_prometheus_metric_namesC

List metric names in a Prometheus datasource. Retrieves all metric names and filters them using regex.

ParametersJSON Schema
NameRequiredDescriptionDefault
datasourceUidYesThe UID of the datasource to query
limitNoThe maximum number of results to return
pageNoThe page number to return
regexNoThe regex to match against the metric names

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'Retrieves all metric names and filters them using regex,' which implies a read-only operation with filtering, but lacks details on permissions, rate limits, pagination behavior (despite 'limit' and 'page' parameters), error handling, or response format. For a tool with 4 parameters and no annotations, this is insufficient transparency.

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 a single, efficient sentence that front-loads the core purpose. It avoids redundancy and waste, making it appropriately concise. However, it could be slightly more structured by separating the filtering aspect for clarity, but overall it's well-sized for the tool's complexity.

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

Completeness2/5

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

Given the tool has 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like pagination, response format, or error conditions, which are critical for an agent to use the tool correctly. The description alone is inadequate for a tool of this complexity without additional structured data.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all parameters. The description adds minimal value beyond the schema by mentioning regex filtering, but doesn't explain parameter interactions, default values, or usage examples. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't significantly enhance 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 the action ('List metric names') and resource ('in a Prometheus datasource'), making the purpose evident. It distinguishes from some siblings like 'list_prometheus_label_names' by focusing on metric names, but doesn't explicitly differentiate from 'query_prometheus' which might also retrieve metrics. The description is specific but could be more precise about 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention siblings like 'list_prometheus_label_names' for labels or 'query_prometheus' for metric values, nor does it specify prerequisites or exclusions. Usage is implied by the name and description alone, with no explicit context for selection.

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

list_pyroscope_label_namesB

Lists all available label names found in profiles within a Pyroscope datasource

ParametersJSON Schema
NameRequiredDescriptionDefault
data_source_uidYesThe UID of the datasource to query
end_rfc_3339NoEnd time in RFC3339 format
matchersNoPrometheus-style matchers
start_rfc_3339NoStart time in RFC3339 format

TDQS

B3.4/5.0
Behavior2/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 mentions 'Lists all available label names' but doesn't disclose behavioral traits like whether this is a read-only operation, if it requires specific permissions, rate limits, pagination behavior, or what the output format looks like. For a tool with 4 parameters and no annotations, this is a significant 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 description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to understand at a glance. Every part of the sentence earns its place.

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

Completeness2/5

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

Given the tool's complexity (4 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain the return values, behavioral constraints, or how parameters like matchers and time ranges affect the results. For a query tool with multiple inputs, more context is needed to guide effective usage.

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

Parameters3/5

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

The schema description coverage is 100%, so all parameters are documented in the schema. The description doesn't add any additional meaning beyond what the schema provides (e.g., it doesn't explain how matchers interact with label names or the time range's effect). With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate with extra insights.

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 specific action ('Lists all available label names') and the resource ('found in profiles within a Pyroscope datasource'). It distinguishes itself from sibling tools like list_pyroscope_label_values and list_prometheus_label_names by specifying it's for Pyroscope label names, not values or Prometheus labels.

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

Usage Guidelines3/5

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

The description implies usage for retrieving label names from Pyroscope profiles, but doesn't explicitly state when to use this tool versus alternatives like list_pyroscope_label_values or list_prometheus_label_names. It provides basic context but lacks explicit guidance on exclusions or specific use cases.

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

list_pyroscope_label_valuesC

Lists all available label values for a particular label name in profiles

ParametersJSON Schema
NameRequiredDescriptionDefault
data_source_uidYesThe UID of the datasource to query
end_rfc_3339NoEnd time in RFC3339 format
matchersNoPrometheus-style matchers
nameYesA label name
start_rfc_3339NoStart time in RFC3339 format

TDQS

C2.9/5.0
Behavior2/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 but offers minimal information. It states what the tool does but doesn't cover critical aspects like whether it's a read-only operation, potential rate limits, authentication needs, error handling, or the format of returned values. This leaves significant gaps in understanding how the tool behaves in practice.

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, clear sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it efficient and easy to parse, with no wasted information.

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

Completeness2/5

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

Given the tool has 5 parameters, no annotations, and no output schema, the description is insufficiently complete. It lacks details on behavioral traits (e.g., read-only nature, error cases), usage context, and output format, which are critical for an AI agent to invoke this tool correctly in a real-world scenario.

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

Parameters3/5

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

Schema description coverage is 100%, meaning all parameters are documented in the input schema. The description doesn't add any semantic details beyond what's in the schema (e.g., explaining relationships between parameters like 'start_rfc_3339' and 'end_rfc_3339', or clarifying 'matchers' usage). Baseline score of 3 is appropriate as the schema handles parameter documentation adequately.

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 action ('Lists') and resource ('all available label values for a particular label name in profiles'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_pyroscope_label_names' or 'list_prometheus_label_values', which would require mentioning Pyroscope-specific context or contrasting with other listing tools.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools (e.g., 'list_pyroscope_label_names' for names instead of values, or 'list_prometheus_label_values' for a different data source), prerequisites, or specific contexts where this tool is preferred, leaving usage ambiguous.

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

list_pyroscope_profile_typesB

Lists all available profile types in a Pyroscope datasource

ParametersJSON Schema
NameRequiredDescriptionDefault
data_source_uidYesThe UID of the datasource to query
end_rfc_3339NoEnd time in RFC3339 format
start_rfc_3339NoStart time in RFC3339 format

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It states the action ('Lists') but doesn't describe what 'lists' entailsโ€”e.g., whether it returns a simple array, paginated results, or error handling for invalid inputs. It also omits rate limits, authentication needs, or side effects. For a read operation with zero annotation coverage, this is inadequate.

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, efficient sentence that front-loads the core purpose with zero wasted words. It's appropriately sized for a simple list operation and earns its place by clearly stating what the tool does.

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

Completeness3/5

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

Given the tool's low complexity (a read-only list operation), 100% schema coverage, and no output schema, the description is minimally adequate. However, it lacks behavioral details (e.g., return format, error cases) that would be helpful for an agent, especially without annotations. It's complete enough to understand the basics but leaves gaps in practical usage.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters (data_source_uid, end_rfc_3339, start_rfc_3339) with clear descriptions. The description adds no additional meaning beyond implying a query scope ('in a Pyroscope datasource'), which the schema's data_source_uid already covers. Baseline 3 is appropriate when the schema does the heavy lifting.

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 verb ('Lists') and resource ('all available profile types in a Pyroscope datasource'), making the purpose immediately understandable. It distinguishes from siblings like 'fetch_pyroscope_profile' (which retrieves specific profiles) by focusing on listing types. However, it doesn't explicitly differentiate from other list tools (e.g., 'list_pyroscope_label_names'), so it's not a perfect 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid datasource UID), exclusions, or comparisons to siblings like 'list_pyroscope_label_names' or 'fetch_pyroscope_profile'. The agent must infer usage from the name and parameters alone.

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

list_sift_investigationsC

Retrieves a list of Sift investigations with an optional limit

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of investigations to return

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'Retrieves a list' but doesn't clarify if this is a read-only operation, what permissions are required, whether results are paginated, the default ordering, or error conditions. For a list tool with zero annotation coverage, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose ('Retrieves a list of Sift investigations') and includes the key constraint ('with an optional limit'). There is no wasted verbiage, making it highly concise and well-structured for quick comprehension.

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

Completeness2/5

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

Given the complexity of listing investigations (which may involve permissions, pagination, or filtering) and the lack of annotations and output schema, the description is incomplete. It doesn't explain what an investigation entails, the return format, or behavioral aspects like rate limits. For a tool with no structured support, the description should provide more contextual detail to guide effective use.

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

Parameters3/5

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

The description mentions an 'optional limit', which aligns with the single parameter in the input schema. Since schema description coverage is 100% (the 'limit' parameter is fully documented in the schema), the description adds minimal value beyond what the schema provides. The baseline score of 3 is appropriate as the schema handles the parameter documentation adequately.

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 action ('Retrieves') and resource ('list of Sift investigations'), distinguishing it from sibling tools like 'get_sift_investigation' (singular) and 'get_sift_analysis'. However, it doesn't specify what 'Sift investigations' are or how they differ from general 'incidents' (e.g., in 'list_incidents'), leaving some ambiguity about the resource scope.

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

Usage Guidelines2/5

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

The description mentions an 'optional limit' but provides no guidance on when to use this tool versus alternatives like 'list_incidents' or 'get_sift_investigation'. It lacks context on prerequisites, filtering criteria, or typical use cases, leaving the agent to infer usage from the name alone.

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

list_teamsC

Search for Grafana teams by a query string. Returns a list of matching teams with details

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoThe query to search for teams

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the action ('Search') and outcome ('Returns a list'), but fails to detail critical behaviors like pagination, rate limits, authentication requirements, error handling, or what 'details' includes. For a search tool with zero annotation coverage, this is a significant gap in transparency.

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 concise and front-loaded, consisting of two clear sentences that state the action and outcome without unnecessary details. It efficiently communicates the core functionality, though it could be slightly improved by integrating usage context without adding bulk.

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

Completeness2/5

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

Given the complexity of a search tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits, output format specifics, and usage guidelines. While it states the purpose, it does not provide enough context for an agent to fully understand how to invoke and interpret results effectively.

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

Parameters3/5

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

The input schema has 100% description coverage, with the 'query' parameter documented as 'The query to search for teams.' The description adds no additional parameter semantics beyond this, such as query syntax examples or search scope. With high schema coverage, the baseline score of 3 is appropriate, as the schema handles the parameter documentation adequately.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Search for Grafana teams by a query string. Returns a list of matching teams with details.' It specifies the verb ('Search'), resource ('Grafana teams'), and outcome. However, it does not explicitly differentiate from sibling tools like 'list_oncall_teams' or 'list_users_by_org', which reduces clarity in distinguishing use cases.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It lacks context such as prerequisites, when to choose this over other listing tools (e.g., 'list_oncall_teams'), or any exclusions. This absence of usage context leaves the agent without direction for tool selection.

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

list_users_by_orgB

List users by organization. Returns a list of users with details like userid, email, role etc

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/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 mentions the return format ('list of users with details like userid, email, role etc'), which adds some behavioral context, but lacks critical information such as pagination, permissions required, rate limits, or whether it's read-only.

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 a single, efficient sentence that front-loads the purpose and includes return details. It avoids unnecessary words, though it could be slightly more structured by separating purpose from output details.

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

Completeness3/5

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

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate. It covers the purpose and return format, but as a list tool with no behavioral annotations, it should ideally include more context like pagination or filtering options.

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 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, earning a baseline score of 4 for not introducing confusion.

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 verb ('List') and resource ('users by organization'), specifying what the tool does. It distinguishes itself from other list tools by focusing on users organized by organization, though it doesn't explicitly differentiate from sibling tools like 'list_oncall_users' or 'list_teams'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context, or exclusions, leaving the agent to infer usage from the name alone.

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

query_loki_logsB

Executes a LogQL query against a Loki datasource to retrieve log entries or metric values

ParametersJSON Schema
NameRequiredDescriptionDefault
datasourceUidYesThe UID of the datasource to query
directionNoDirection of the query
endRfc3339NoThe end time of the query in RFC3339 format
limitNoMaximum number of log lines to return (default: 10, max: 100)
logqlYesThe LogQL query to execute against Loki
startRfc3339NoThe start time of the query in RFC3339 format

TDQS

B3.2/5.0
Behavior2/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 mentions the tool executes queries and retrieves data but fails to describe critical behaviors: whether it's read-only or mutative, potential rate limits, authentication requirements, error handling, or the format of returned results. This leaves significant gaps for an AI agent.

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

Conciseness5/5

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

The description is a single, well-structured sentence that efficiently conveys the tool's purpose without redundancy. It front-loads the key action and outcome, making it easy to parse, with no wasted words or unnecessary elaboration.

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

Completeness2/5

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

For a tool with 6 parameters, no annotations, and no output schema, the description is incomplete. It lacks behavioral context (e.g., safety, limits), usage guidance, and details on return values. While concise, it doesn't compensate for the missing structured information, leaving the AI agent with insufficient operational understanding.

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

Parameters3/5

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

The schema description coverage is 100%, providing detailed documentation for all 6 parameters. The description adds minimal value beyond the schema, only implying that 'logql' is the core query parameter and 'datasourceUid' identifies the target. No additional syntax, format examples, or constraints are provided beyond what's in the schema.

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

Purpose5/5

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

The description clearly states the specific action ('Executes a LogQL query'), target resource ('against a Loki datasource'), and outcome ('to retrieve log entries or metric values'). It distinguishes itself from sibling tools like query_loki_stats and query_prometheus by focusing on LogQL queries for log retrieval rather than statistics or Prometheus 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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like query_loki_stats (for statistics) or query_prometheus (for Prometheus queries), nor does it specify prerequisites such as needing a valid datasource UID or appropriate permissions.

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

query_loki_statsC

Retrieves statistics about log streams matching a given LogQL selector within a Loki datasource

ParametersJSON Schema
NameRequiredDescriptionDefault
datasourceUidYesThe UID of the datasource to query
endRfc3339NoThe end time of the query in RFC3339 format
logqlYesThe LogQL matcher expression to execute
startRfc3339NoThe start time of the query in RFC3339 format

TDQS

C2.9/5.0
Behavior2/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 the tool retrieves statistics but doesn't specify what types of statistics (e.g., count, rate, volume), whether it's a read-only operation, potential rate limits, authentication needs, or error handling. This leaves significant gaps in understanding how the tool behaves beyond its basic purpose.

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, well-structured sentence that efficiently conveys the core purpose without unnecessary details. It's front-loaded with the main action and resource, making it easy to parse, and every word contributes to understanding the tool's function.

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

Completeness2/5

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

Given the complexity of querying logs with LogQL and no annotations or output schema, the description is insufficient. It doesn't explain what statistics are returned, how results are formatted, or any behavioral traits like performance implications. For a tool with four parameters and no structured output information, more context is needed to ensure effective use.

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

Parameters3/5

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

The input schema has 100% description coverage, clearly documenting all four parameters. The description adds minimal value beyond the schema by mentioning 'LogQL selector' and 'Loki datasource', which align with the 'logql' and 'datasourceUid' parameters. However, it doesn't provide additional context like parameter interactions or examples, so the baseline score of 3 is appropriate.

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 action ('Retrieves statistics') and target ('about log streams matching a given LogQL selector within a Loki datasource'), making the purpose evident. However, it doesn't explicitly differentiate from its sibling 'query_loki_logs', which appears to retrieve log content rather than statistics, leaving some ambiguity about sibling distinction.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'query_loki_logs' or other query tools in the sibling list. It lacks context about prerequisites, such as needing a valid datasource or LogQL knowledge, and offers no exclusions or comparison to other tools.

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

query_prometheusA

Query Prometheus using a PromQL expression. Supports both instant and range queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
datasourceUidYesThe UID of the datasource to query
endTimeNoThe end time for range queries
exprYesThe PromQL expression to query
queryTypeYesThe type of query to use
startTimeYesThe start time (RFC3339 or relative like "now-1h")
stepSecondsNoThe time series step size in seconds for range queries

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions support for instant and range queries, but does not cover critical aspects such as authentication requirements, rate limits, error handling, or the format of returned data. For a query tool with no annotation coverage, this leaves significant gaps in understanding its 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 a single, efficient sentence that front-loads the core purpose ('Query Prometheus using a PromQL expression') and adds a useful detail ('Supports both instant and range queries'). There is no wasted language, making it highly concise and well-structured.

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

Completeness3/5

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

Given the complexity of a Prometheus query tool with 6 parameters and no output schema, the description is incomplete. It lacks details on return values, error conditions, or behavioral traits, which are crucial for effective use. However, the high schema coverage mitigates some gaps, but overall it does not provide sufficient context for a tool of this nature.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all parameters thoroughly. The description adds minimal value by mentioning 'instant and range queries,' which loosely relates to the queryType parameter, but does not provide additional semantics beyond what the schema specifies. This meets the baseline for high schema coverage.

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

Purpose5/5

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

The description clearly states the specific action ('Query Prometheus'), the method ('using a PromQL expression'), and the scope ('both instant and range queries'). It distinguishes itself from sibling tools like query_loki_logs or query_loki_stats by specifying Prometheus and PromQL, making the purpose unambiguous and distinct.

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

Usage Guidelines3/5

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

The description implies usage for Prometheus queries with PromQL, but does not explicitly state when to use this tool versus alternatives like list_prometheus_metric_names or query_loki_logs. It mentions support for instant and range queries, which provides some context, but lacks explicit guidance on scenarios or prerequisites.

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

search_dashboardsB

Search for Grafana dashboards by a query string. Returns a list of matching dashboards with details like title, UID, folder, tags, and URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe query to search for

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the tool returns a list of matching dashboards with details, which covers basic behavior, but lacks critical information: it doesn't mention pagination, rate limits, authentication requirements, error handling, or whether it's read-only (implied but not explicit). For a search tool with zero annotation coverage, this is insufficient.

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

Conciseness5/5

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

The description is two concise sentences: the first states the purpose, the second details the return value. It's front-loaded with the core function and wastes no words, making it easy to parse quickly.

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

Completeness3/5

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

Given no annotations, no output schema, and a simple single-parameter input schema, the description provides basic completeness: it covers what the tool does and what it returns. However, it lacks details on behavioral aspects like pagination or error handling, which are important for a search operation. It's adequate but has clear gaps.

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

Parameters3/5

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

The input schema has 100% description coverage, with the 'query' parameter documented as 'The query to search for'. The description adds no additional meaning beyond this, such as query syntax examples or search scope details. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Search for Grafana dashboards by a query string' specifies the verb (search) and resource (Grafana dashboards). It distinguishes from siblings like 'get_dashboard_by_uid' (specific fetch) and 'update_dashboard' (mutation), but doesn't explicitly differentiate from other list/search tools like 'list_datasources'.

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

Usage Guidelines3/5

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

The description implies usage for searching dashboards with a query, but provides no explicit guidance on when to use this vs. alternatives like 'get_dashboard_by_uid' (for known UID) or 'list_datasources' (for other resources). It mentions returning a list with details, which suggests it's for broad searches, but lacks clear when/when-not criteria.

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

update_dashboardC

Create or update a dashboard using either full JSON or efficient patch operations

ParametersJSON Schema
NameRequiredDescriptionDefault
dashboardNoThe full dashboard JSON
folderUidNoThe UID of the dashboard's folder
messageNoSet a commit message for the version history
operationsNoArray of patch operations for targeted updates
overwriteNoOverwrite the dashboard if it exists
uidNoUID of existing dashboard to update

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the tool can 'create or update' but doesn't disclose behavioral traits like required permissions, whether updates are destructive, how conflicts are handled, or what happens on success/failure. For a mutation tool with zero annotation coverage, this is a significant gap in safety and operational context.

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, efficient sentence that front-loads the core purpose. Every word earns its place: 'Create or update a dashboard' establishes the action, and 'using either full JSON or efficient patch operations' adds necessary modality. There's no redundancy or fluff.

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

Completeness2/5

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

Given the tool's complexity (6 parameters, mutation operation, nested objects) and lack of annotations or output schema, the description is incomplete. It doesn't cover behavioral aspects like permissions, side effects, error handling, or return values. For a tool that can create or update dashboards, more context is needed to use it safely and effectively.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 6 parameters. The description adds minimal value beyond the schema by hinting at two modes (full JSON vs patch operations), which loosely maps to the 'dashboard' and 'operations' parameters. However, it doesn't explain the relationship between parameters or provide usage examples, so it meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Create or update a dashboard' specifies the verb and resource. It distinguishes between two modes (full JSON vs patch operations), which adds specificity. However, it doesn't explicitly differentiate from sibling tools like 'get_dashboard_by_uid' or 'search_dashboards' beyond the create/update action.

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

Usage Guidelines2/5

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

The description mentions two usage modes (full JSON or patch operations) but provides no guidance on when to choose one over the other. It doesn't indicate prerequisites (e.g., needing a dashboard UID for updates), when to use this vs sibling tools like 'get_dashboard_by_uid' for retrieval, or any constraints. This leaves the agent without clear decision criteria.

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

TDQS

B3.2/5.0
Disambiguation4/5

Most tools have distinct purposes targeting specific resources like dashboards, incidents, or datasources, with clear action differentiation (e.g., list_alert_rules vs. get_alert_rule_by_uid). However, some overlap exists in list operations across different data sources (e.g., list_loki_label_names and list_prometheus_label_names) which could cause minor confusion, though descriptions help clarify the datasource focus.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, such as list_alert_rules, get_dashboard_by_uid, and query_loki_logs. All tools use snake_case without deviation, making them predictable and easy to parse for agents, with verbs like 'list', 'get', 'query', and 'create' applied uniformly across resources.

Tool Count2/5

With 43 tools, the count is excessive for a single server, leading to potential cognitive overload and reduced usability. While Grafana's broad scope (incidents, dashboards, datasources, etc.) justifies many tools, this high number feels heavy and could overwhelm agents, suggesting the surface might benefit from consolidation or modularization.

Completeness5/5

The tool set provides comprehensive coverage for Grafana's domain, including CRUD operations for incidents, dashboards, and datasources, along with querying, listing, and analysis tools across Loki, Prometheus, and Pyroscope. There are no obvious gaps; agents can perform full lifecycle management and detailed investigations without dead ends.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

  • F
    license
    C
    quality
    D
    maintenance
    Enables AI-powered integration with Grafana instances through 52 MCP tools for dashboard management, Prometheus/Loki queries, alerting, and administrative functions. Supports complete Grafana functionality including metrics exploration, log analysis, and incident response through natural language.
    80
    1
  • F
    license
    A
    quality
    D
    maintenance
    Enables AI agents to query Prometheus metrics and Loki logs for intelligent alert investigation and troubleshooting. Provides service discovery, metric querying, log searching, and correlation tools to help identify root causes of issues.
    9
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to query Prometheus metrics, monitor alerts, and analyze system health through read-only access to your Prometheus server with built-in query safety and optional AI-powered metric analysis.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to query Grafana dashboards, alerts, and datasources for observability insights and incident investigation.
    MIT

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/0xteamhq/mcp-grafana'

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