Skip to main content
Glama

MCP Ambari API - Apache Hadoop Cluster Management Automation

πŸš€ Automate Apache Ambari operations with AI/LLM: Conversational control for Hadoop cluster management, service monitoring, configuration inspection, and precise Ambari Metrics queries via Model Context Protocol (MCP) tools.


License: MIT Python Docker Pulls BuyMeACoffee

Deploy to PyPI with tag PyPI PyPI - Downloads


Architecture & Internal (DeepWiki)

Ask DeepWiki


Related MCP server: Ambari MCP Server

πŸ“‹ Overview

MCP Ambari API is a powerful Model Context Protocol (MCP) server that enables seamless Apache Ambari cluster management through natural language commands. Built for DevOps engineers, data engineers, and system administrators who work with Hadoop ecosystems.

Features

  • βœ… Interactive Ambari Operations Hub – Provides an MCP-based foundation for querying and managing services through natural language instead of console or UI interfaces.

  • βœ… Real-time Cluster Visibility – Comprehensive view of key metrics including service status, host details, alert history, and ongoing requests in a single interface.

  • βœ… Metrics Intelligence Pipeline – Dynamically discovers and filters AMS appIds and metric names, connecting directly to time-series analysis workflows.

  • βœ… Automated Operations Workflow – Consolidates repetitive start/stop operations, configuration checks, user queries, and request tracking into consistent scenarios.

  • βœ… Built-in Operational Reports – Instantly delivers dfsadmin-style HDFS reports, service summaries, and capacity metrics through LLM or CLI interfaces.

  • βœ… Safety Guards and Guardrails – Requires user confirmation before large-scale operations and provides clear guidance for risky commands through prompt templates.

  • βœ… LLM Integration Optimization – Includes natural language examples, parameter mapping, and usage guides to ensure stable AI agent operations.

  • βœ… Flexible Deployment Models – Supports stdio/streamable-http transport, Docker Compose, and token authentication for deployment across development and production environments.

  • βœ… Performance-Oriented Caching Architecture – Built-in AMS metadata cache and request logging ensure fast responses even in large-scale clusters.

  • βœ… Scalable Code Architecture – Asynchronous HTTP, structured logging, and modularized tool layers enable easy addition of new features.

  • βœ… Production-Validated – Based on tools validated in test Ambari clusters, ready for immediate use in production environments.

  • βœ… Diversified Deployment Channels – Available through PyPI packages, Docker images, and other preferred deployment methods.

Docuement for Airflow REST-API

Topics

apache-ambari hadoop-cluster mcp-server cluster-automation devops-tools big-data infrastructure-management ai-automation llm-tools python-mcp


Example Queries - Cluster Info/Status

Go to More Example Queries


Example: Querying Ambari Cluster(1)


Example: Querying Ambari Cluster(2)


πŸš€ QuickStart Guide /w Docker

Note: The following instructions assume you are using the streamable-http mode for MCP Server.

Flow Diagram of Quickstart/Tutorial

Flow Diagram of Quickstart/Tutorial

1. Prepare Ambari Cluster (Test Target)

To set up a Ambari Demo cluster, follow the guide at: Install Ambari 3.0 with Docker

Example: Ambari Demo Cluster

2. Run Docker-Compose

Start the MCP-Server, MCPO(MCP-Proxy for OpenAPI), and OpenWebUI.

  1. Ensure Docker and Docker Compose are installed on your system.

  2. Clone this repository and navigate to its root directory.

  3. Set up environment configuration:

    # Copy environment template and configure your settings
    cp .env.example .env
    # Edit .env with your Ambari cluster information
  4. Configure your Ambari connection in .env file:

    # Ambari cluster connection
    AMBARI_HOST=host.docker.internal
    AMBARI_PORT=7070
    AMBARI_USER=admin
    AMBARI_PASS=admin
    AMBARI_CLUSTER_NAME=TEST-AMBARI
    
    # Ambari Metrics (AMS) collector
    AMBARI_METRICS_HOST=host.docker.internal
    AMBARI_METRICS_PORT=16188
    AMBARI_METRICS_PROTOCOL=http
    AMBARI_METRICS_TIMEOUT=15
    
    # (Optional) Enable authentication for streamable-http mode
    # Recommended for production environments
    REMOTE_AUTH_ENABLE=false
    REMOTE_SECRET_KEY=your-secure-secret-key-here
  5. Run:

    docker-compose up -d
  • OpenWebUI will be available at: http://localhost:${DOCKER_EXTERNAL_PORT_OPENWEBUI} (default: 3001)

  • The MCPO-Proxy will be accessible at: http://localhost:${DOCKER_EXTERNAL_PORT_MCPO_PROXY} (default: 8001)

  • The MCPO API Docs: http://localhost:${DOCKER_EXTERNAL_PORT_MCPO_PROXY}/mcp-ambari-api/docs

Example: MCPO-Proxy

3. Registering the Tool in OpenWebUI

πŸ“Œ Note: Web-UI configuration instructions are based on OpenWebUI v0.6.22. Menu locations and settings may differ in newer versions.

  1. logging in to OpenWebUI with an admin account

  2. go to "Settings" β†’ "Tools" from the top menu.

  3. Enter the mcp-ambari-api Tool address (e.g., http://localhost:8000/mcp-ambari-api) to connect MCP Tools with your Ambari cluster.

4. More Examples: Using MCP Tools to Query Ambari Cluster

Below is an example screenshot showing how to query the Ambari cluster using MCP Tools in OpenWebUI:

Example Query - Cluster Configuration Review & Recommendations

Example: Querying Ambari Cluster(2)

Example Query - Restart HDFS Service

Example: Querying Ambari Cluster(3) Example: Querying Ambari Cluster(3)


  • Terminology quick reference

    • appId: Ambari Metrics Service groups every metric under an application identifier (e.g., namenode, datanode, ambari_server, HOST). Think of it as the component or service emitting that timeseries.

    • metric name: The fully qualified string Ambari uses for each timeseries (e.g., jvm.JvmMetrics.MemHeapUsedM, dfs.datanode.BytesWritten). Exact names are required when querying AMS.

  • list_common_metrics_catalog: keyword search against the live metadata-backed metric catalog (cached locally). Use search="heap" or similar to narrow suggestions before running a time-series query.
    Example: β€œShow the heap-related metrics available for the NameNode appId.”

  • list_ambari_metric_apps: list discovered AMS appId values, optionally including metric counts; pass refresh=true or limit to control output.
    Example: β€œList every appId currently exposed by AMS.”

  • The natural-language query β€œAMSμ—μ„œ μ‚¬μš© κ°€λŠ₯ν•œ appId λͺ©λ‘λ§Œ λ³΄μ—¬μ€˜β€ maps to list_ambari_metric_apps and returns the exact identifiers you can copy into other tools.

  • list_ambari_metrics_metadata: raw AMS metadata explorer (supports app_id, metric_name_filter, host_filter, search, adjustable limit, default 50).
    Example: β€œGive me CPU-related metric metadata under HOST.”

  • query_ambari_metrics: fetch time-series data; the tool auto-selects curated metric names, falls back to metadata search when needed, and honors Ambari's default precision unless you explicitly supply precision="SECONDS", etc.
    Examples: β€œPlot the last 30 minutes of jvm.JvmMetrics.MemHeapUsedM for the NameNode.” / β€œCompare jvm.JvmMetrics.MemHeapUsedM for DataNode hosts bigtop-hostname0.demo.local and bigtop-hostname1.demo.local over the past 30 minutes.”

  • hdfs_dfadmin_report: produce a DFSAdmin-style capacity/DataNode summary (mirrors hdfs dfsadmin -report).

Live Metric Catalog (via AMS metadata)

  • Metric names are discovered on demand from /ws/v1/timeline/metrics/metadata and cached for quick reuse.

  • Use list_common_metrics_catalog or the ambari-metrics://catalog/all resource (append ?refresh=true to bypass the cache) to inspect the latest appId β†’ metric mapping. Query ambari-metrics://catalog/apps to list appIds or ambari-metrics://catalog/<appId> for a single app.

  • Typical appIds include ambari_server, namenode, datanode, nodemanager, resourcemanager, and HOST, but the list adapts to whatever the Ambari Metrics service advertises in your cluster.


πŸ” Ambari Metrics Query Requirements (Exact-Match Workflow)

Recent updates removed natural-language metric guessing in favor of deterministic, catalog-driven lookups. Keep the following rules in mind when you (or an LLM agent) call query_ambari_metrics:

  1. Always pass an explicit app_id. If it is missing or unsupported, the tool returns a list of valid appIds and aborts so you can choose one manually.

  2. Specify exact metric names. Use list_common_metrics_catalog(app_id="<target>", search="keyword"), list_ambari_metric_apps (to discover appIds), or the ambari-metrics://catalog/<appId> resource to browse the live per-app metric set and copy the identifier (e.g., jvm.JvmMetrics.MemHeapUsedM).

  3. Host-scope behavior: When hostnames is omitted the API returns cluster-wide aggregates. Provide one or more hosts (comma-separated) to focus on specific nodes.

  4. No fuzzy matches. The server now calls Ambari exactly as requested. If the metric is wrong or empty, Ambari will simply return no datapointsβ€”double-check the identifier via /ws/v1/timeline/metrics/metadata.

Example invocation:

query_ambari_metrics(
  metric_names="jvm.JvmMetrics.MemHeapUsedM",
  app_id="nodemanager",
  duration="1h",
  group_by_host=true
)

For multi-metric lookups, pass a comma-separated list of exact names. Responses document any auto-applied host filters so you can copy/paste them into subsequent requests.


πŸ› Usage & Configuration

This MCP server supports two connection modes: stdio (traditional) and streamable-http (Docker-based). You can configure the transport mode using CLI arguments or environment variables.

Configuration Priority: CLI arguments > Environment variables > Default values

CLI Arguments

  • --type (-t): Transport type (stdio or streamable-http) - Default: stdio

  • --host: Host address for HTTP transport - Default: 127.0.0.1

  • --port (-p): Port number for HTTP transport - Default: 8000

  • --auth-enable: Enable Bearer token authentication for streamable-http mode - Default: false

  • --secret-key: Secret key for Bearer token authentication (required when auth enabled)

Environment Variables

Variable

Description

Default

Project Default

PYTHONPATH

Python module search path for MCP server imports

-

/app/src

MCP_LOG_LEVEL

Server logging verbosity (DEBUG, INFO, WARNING, ERROR)

INFO

INFO

FASTMCP_TYPE

MCP transport protocol (stdio for CLI, streamable-http for web)

stdio

streamable-http

FASTMCP_HOST

HTTP server bind address (0.0.0.0 for all interfaces)

127.0.0.1

0.0.0.0

FASTMCP_PORT

HTTP server port for MCP communication

8000

8000

REMOTE_AUTH_ENABLE

Enable Bearer token authentication for streamable-http modeDefault: false (if undefined, empty, or null)

false

false

REMOTE_SECRET_KEY

Secret key for Bearer token authenticationRequired when REMOTE_AUTH_ENABLE=true

-

your-secret-key-here

AMBARI_HOST

Ambari server hostname or IP address

127.0.0.1

host.docker.internal

AMBARI_PORT

Ambari server port number

8080

8080

AMBARI_USER

Username for Ambari server authentication

admin

admin

AMBARI_PASS

Password for Ambari server authentication

admin

admin

AMBARI_CLUSTER_NAME

Name of the target Ambari cluster

TEST-AMBARI

TEST-AMBARI

DOCKER_EXTERNAL_PORT_OPENWEBUI

Host port mapping for Open WebUI container

8080

3001

DOCKER_EXTERNAL_PORT_MCP_SERVER

Host port mapping for MCP server container

8080

18001

DOCKER_EXTERNAL_PORT_MCPO_PROXY

Host port mapping for MCPO proxy container

8000

8001

Note: AMBARI_CLUSTER_NAME serves as the default target cluster for operations when no specific cluster is specified. All environment variables can be configured via the .env file.

Transport Selection Logic:

Configuration Priority: CLI arguments > Environment variables > Default values

Transport Selection Logic:

  • CLI Priority: --type streamable-http --host 0.0.0.0 --port 18001

  • Environment Priority: FASTMCP_TYPE=streamable-http FASTMCP_HOST=0.0.0.0 FASTMCP_PORT=18001

  • Legacy Support: FASTMCP_PORT=18001 (automatically enables streamable-http mode)

  • Default: stdio mode when no configuration is provided

Environment Setup

# 1. Clone the repository
git clone https://github.com/call518/MCP-Ambari-API.git
cd MCP-Ambari-API

# 2. Set up environment configuration
cp .env.example .env

# 3. Configure your Ambari connection in .env file
AMBARI_HOST=your-ambari-host
AMBARI_PORT=your-ambari-port  
AMBARI_USER=your-username
AMBARI_PASS=your-password
AMBARI_CLUSTER_NAME=your-cluster-name

πŸ” Security & Authentication

Bearer Token Authentication

For streamable-http mode, this MCP server supports Bearer token authentication to secure remote access. This is especially important when running the server in production environments.

Configuration

Enable Authentication:

# In .env file
REMOTE_AUTH_ENABLE=true
REMOTE_SECRET_KEY=your-secure-secret-key-here

Or via CLI:

python -m mcp_ambari_api --type streamable-http --auth-enable --secret-key your-secure-secret-key-here

Security Levels

  1. stdio mode (Default): Local-only access, no authentication needed

  2. streamable-http + REMOTE_AUTH_ENABLE=false/undefined: Remote access without authentication ⚠️ NOT RECOMMENDED for production

  3. streamable-http + REMOTE_AUTH_ENABLE=true: Remote access with Bearer token authentication βœ… RECOMMENDED for production

πŸ”’ Default Policy: REMOTE_AUTH_ENABLE defaults to false if undefined, empty, or null. This ensures the server starts even without explicit authentication configuration.

Client Configuration

When authentication is enabled, MCP clients must include the Bearer token in the Authorization header:

{
  "mcpServers": {
    "mcp-ambari-api": {
      "type": "streamable-http",
      "url": "http://your-server:8000/mcp",
      "headers": {
        "Authorization": "Bearer your-secure-secret-key-here"
      }
    }
  }
}

Security Best Practices

  • Always enable authentication when using streamable-http mode in production

  • Use strong, randomly generated secret keys (32+ characters recommended)

  • Use HTTPS when possible (configure reverse proxy with SSL/TLS)

  • Restrict network access using firewalls or network policies

  • Rotate secret keys regularly for enhanced security

  • Monitor access logs for unauthorized access attempts

Error Handling

When authentication fails, the server returns:

  • 401 Unauthorized for missing or invalid tokens

  • Detailed error messages in JSON format for debugging


Method 1: Local MCP (transport="stdio")

{
  "mcpServers": {
    "mcp-ambari-api": {
      "command": "uvx",
      "args": ["--python", "3.12", "mcp-ambari-api"],
      "env": {
        "AMBARI_HOST": "host.docker.internal",
        "AMBARI_PORT": "8080",
        "AMBARI_USER": "admin",
        "AMBARI_PASS": "admin",
        "AMBARI_CLUSTER_NAME": "TEST-AMBARI",
        "MCP_LOG_LEVEL": "INFO"
      }
    }
  }
}

Method 2: Remote MCP (transport="streamable-http")

On MCP-Client Host:

{
  "mcpServers": {
    "mcp-ambari-api": {
      "type": "streamable-http",
      "url": "http://localhost:18001/mcp"
    }
  }
}

With Bearer Token Authentication (Recommended for production):

{
  "mcpServers": {
    "mcp-ambari-api": {
      "type": "streamable-http", 
      "url": "http://localhost:18001/mcp",
      "headers": {
        "Authorization": "Bearer your-secure-secret-key-here"
      }
    }
  }
}

Example usage: Claude-Desktop

claude_desktop_config.json

{
  "mcpServers": {
    "mcp-ambari-api": {
      "command": "uvx",
      "args": ["--python", "3.12", "mcp-ambari-api"],
      "env": {
        "AMBARI_HOST": "localhost",
        "AMBARI_PORT": "7070",
        "AMBARI_USER": "admin",
        "AMBARI_PASS": "admin",
        "AMBARI_CLUSTER_NAME": "TEST-AMBARI",
        "MCP_LOG_LEVEL": "INFO"
      }
    }
  }
}

Example: Claude-Desktop(3)

(Option) Configure Multiple Ambari Cluster

{
  "mcpServers": {
    "Ambari-Cluster-A": {
      "command": "uvx",
      "args": ["--python", "3.12", "mcp-ambari-api"],
      "env": {
        "AMBARI_HOST": "a.foo.com",
        "AMBARI_PORT": "8080",
        "AMBARI_USER": "admin-user",
        "AMBARI_PASS": "admin-pass",
        "AMBARI_CLUSTER_NAME": "AMBARI-A",
        "MCP_LOG_LEVEL": "INFO"
      }
    },
    "Ambari-Cluster-B": {
      "command": "uvx",
      "args": ["--python", "3.12", "mcp-ambari-api"],
      "env": {
        "AMBARI_HOST": "b.bar.com",
        "AMBARI_PORT": "8080",
        "AMBARI_USER": "admin-user",
        "AMBARI_PASS": "admin-pass",
        "AMBARI_CLUSTER_NAME": "AMBARI-B",
        "MCP_LOG_LEVEL": "INFO"
      }
    }
  }
}

Remote Access with Authentication (Claude Desktop):

{
  "mcpServers": {
    "mcp-ambari-api-remote": {
      "type": "streamable-http",
      "url": "http://your-server-ip:18001/mcp",
      "headers": {
        "Authorization": "Bearer your-secure-secret-key-here"
      }
    }
  }
}

🎯 Core Features & Capabilities

Service Operations

  • Hadoop Service Management: Start, stop, restart HDFS, YARN, Spark, HBase, and more

  • Bulk Operations: Control all cluster services simultaneously

  • Status Monitoring: Real-time service health and performance tracking

Configuration Management

  • Unified Config Tool: Single interface for all configuration types (yarn-site, hdfs-site, etc.)

  • Bulk Configuration: Export and manage multiple configurations with filtering

  • Configuration Validation: Syntax checking and validation before applying changes

Monitoring & Alerting

  • Real-time Alerts: Current and historical cluster alerts with filtering

  • Request Tracking: Monitor long-running operations with detailed progress

  • Host Monitoring: Hardware metrics, component states, and resource utilization

Administration

  • User Management: Check cluster user administration

  • Host Management: Node registration, component assignments, and health monitoring


Available MCP Tools

This MCP server provides the following tools for Ambari cluster management:

Cluster Management

  • get_cluster_info - Retrieve basic cluster information and status

  • get_active_requests - List currently active/running operations

  • get_request_status - Check status and progress of specific requests

  • get_request_tasks - Get per-host/role task breakdown for a specific request. Supports filtering by status (status_filter="FAILED", "not:COMPLETED", etc.) and by hostname substring (host_filter="node01")

Service Management

  • get_cluster_services - List all services with their status

  • get_service_status - Get detailed status of a specific service

  • get_service_components - List components and host assignments for a service

  • get_service_details - Get comprehensive service information

  • start_service - Start a specific service

  • stop_service - Stop a specific service

  • restart_service - Restart a specific service

  • start_all_services - Start all services in the cluster

  • stop_all_services - Stop all services in the cluster

  • restart_all_services - Restart all services in the cluster

Configuration Tools

  • dump_configurations - Unified configuration tool (replaces get_configurations, list_configurations, and the former internal dump_all_configurations). Supports:

    • Single type: dump_configurations(config_type="yarn-site")

    • Bulk summary: dump_configurations(summarize=True)

    • Filter by substring (type or key): dump_configurations(filter="memory")

    • Service filter (narrow types by substring): dump_configurations(service_filter="yarn", summarize=True)

    • Keys only (no values): dump_configurations(include_values=False)

    • Limit number of types: dump_configurations(limit=10, summarize=True)

Breaking Change: get_configurations and list_configurations were removed in favor of this single, more capable tool.

Host Management

  • list_hosts - List all hosts in the cluster

  • get_host_details - Get detailed information for specific or all hosts (includes component states, hardware metrics, and service assignments)

User Management

  • list_users - List all users in the Ambari system with their usernames and API links

  • get_user - Get detailed information about a specific user including:

    • Basic profile (ID, username, display name, user type)

    • Status information (admin privileges, active status, login failures)

    • Authentication details (LDAP user status, authentication sources)

    • Group memberships, privileges, and widget layouts

Alert Management

  • get_alerts_history - Unified alert tool for both current and historical alerts:

    • Current mode (mode="current"): Retrieve current/active alerts with real-time status

      • Current alert states across cluster, services, or hosts

      • Maintenance mode filtering (ON/OFF)

      • Summary formats: basic summary and grouped by definition

      • Detailed alert information including timestamps and descriptions

    • History mode (mode="history"): Retrieve historical alert events from the cluster

      • Scope filtering: cluster-wide, service-specific, or host-specific alerts

      • Time range filtering: from/to timestamp support

      • Pagination support for large datasets

    • Common features (both modes):

      • State filtering: CRITICAL, WARNING, OK, UNKNOWN alerts

      • Definition filtering: filter by specific alert definition names

      • Multiple output formats: detailed, summary, compact

      • Unified API for consistent alert querying experience


🀝 Contributing & Support

How to Contribute

Technologies Used

  • Language: Python 3.12

  • Framework: Model Context Protocol (MCP)

  • API: Apache Ambari REST API

  • Transport: stdio (local) and streamable-http (remote)

  • Deployment: Docker, Docker Compose, PyPI

Dev Env.

  • WSL2(networkingMode = bridged) + Docker-Desktop

    • .wslconfig: tested with networkingMode = bridged

  • Python 3.12 venv

    ### Option-1: with uv
    uv venv --python 3.12 --seed
    
    ### Option-2: with pip
    python3.12 -m venv .venv
    source .venv/bin/activate
    pip install -U pip

πŸ› οΈ Adding Custom Tools

After you've thoroughly explored the existing functionality, you might want to add your own custom tools for specific monitoring or management needs. This MCP server is designed for easy extensibility.

Step-by-Step Guide

1. Add Helper Functions (Optional)

Add reusable data functions to src/mcp_ambari_api/functions.py:

async def get_your_custom_data(target_resource: str = None) -> List[Dict[str, Any]]:
    """Your custom data retrieval function."""
    # Example implementation - adapt to your Ambari service
    endpoint = f"/clusters/{AMBARI_CLUSTER_NAME}/your_custom_endpoint"
    if target_resource:
        endpoint += f"/{target_resource}"
    
    response_data = await make_ambari_request(endpoint)
    
    if response_data is None or "items" not in response_data:
        return []
    
    return response_data["items"]

2. Create Your MCP Tool

Add your tool function to src/mcp_ambari_api/mcp_main.py:

@mcp.tool()
@log_tool
async def get_your_custom_analysis(limit: int = 50, target_name: Optional[str] = None) -> str:
    """
    [Tool Purpose]: Brief description of what your tool does
    
    [Core Functions]:
    - Feature 1: Data aggregation and analysis
    - Feature 2: Resource monitoring and insights
    - Feature 3: Performance metrics and reporting
    
    [Required Usage Scenarios]:
    - When user asks "your specific analysis request"
    - Your business-specific monitoring needs
    
    Args:
        limit: Maximum results (1-100)
        target_name: Target resource/service name (optional)
    
    Returns:
        Formatted analysis results (success: formatted data, failure: English error message)
    """
    try:
        limit = max(1, min(limit, 100))  # Always validate input
        
        results = await get_your_custom_data(target_resource=target_name)
        
        if not results:
            return f"No custom analysis data found{' for ' + target_name if target_name else ''}."
        
        # Apply limit
        limited_results = results[:limit]
        
        # Format output
        result_lines = [
            f"Custom Analysis Results{' for ' + target_name if target_name else ''}",
            "=" * 50,
            f"Found: {len(limited_results)} items (total: {len(results)})",
            ""
        ]
        
        for i, item in enumerate(limited_results, 1):
            # Customize this formatting based on your data structure
            name = item.get("name", "Unknown")
            status = item.get("status", "N/A")
            result_lines.append(f"[{i}] {name}: {status}")
        
        return "\n".join(result_lines)
        
    except Exception as e:
        return f"Error: Exception occurred while retrieving custom analysis - {str(e)}"

3. Update Imports

Add your helper function to the imports section in src/mcp_ambari_api/mcp_main.py:

from mcp_ambari_api.functions import (
    format_timestamp,
    format_single_host_details,
    make_ambari_request,
    # ... existing imports ...
    get_your_custom_data,  # Add your new function here
)

4. Update Prompt Template (Recommended)

Add your tool description to src/mcp_ambari_api/prompt_template.md for better AI recognition:

### Custom Analysis Tools

**get_your_custom_analysis**
- "Show me custom analysis results"
- "Get custom analysis for target_name"
- "Display custom monitoring data"
- πŸ“‹ **Features**: Custom data aggregation, resource monitoring, performance insights

5. Test Your Tool

# Local testing with MCP Inspector
./run-mcp-inspector-local.sh

# Or test with Docker environment
docker-compose up -d
docker-compose logs -f mcp-server

# Test with natural language queries:
# "Show me custom analysis results"
# "Get custom analysis for my_target"

Important Notes

  • Always use @mcp.tool() and @log_tool decorators for proper registration and logging

  • Follow the existing error handling patterns - return English error messages starting with "Error:"

  • Use make_ambari_request() function for all Ambari API calls to ensure consistent authentication and error handling

  • Validate all input parameters before using them in API calls

  • Test thoroughly with both valid and invalid inputs

Example Use Cases

  • Custom service health checks beyond standard Ambari monitoring

  • Specialized configuration validation for your organization's standards

  • Custom alert aggregation and reporting formats

  • Integration with external monitoring systems via Ambari data

  • Automated compliance checking for cluster configurations


❓ Frequently Asked Questions

Q: What Ambari versions are supported?

A: Ambari 2.7+ is recommended. Earlier versions may work but are not officially tested.

Q: Can I use this with cloud-managed Hadoop clusters?

A: Yes, as long as Ambari API endpoints are accessible, it works with on-premise, cloud, and hybrid deployments.

Q: How do I troubleshoot connection issues?

A: Check your AMBARI_HOST, AMBARI_PORT, and network connectivity. Enable debug logging with MCP_LOG_LEVEL=DEBUG.

Q: How does this compare to Ambari Web UI?

A: This provides programmatic access via AI/LLM commands, perfect for automation, scripting, and integration with modern DevOps workflows.


Contributing

🀝 Got ideas? Found bugs? Want to add cool features?

We're always excited to welcome new contributors! Whether you're fixing a typo, adding a new monitoring tool, or improving documentation - every contribution makes this project better.

Ways to contribute:

  • πŸ› Report issues or bugs

  • πŸ’‘ Suggest new Ambari monitoring features

  • πŸ“ Improve documentation

  • πŸš€ Submit pull requests

  • ⭐ Star the repo if you find it useful!

Pro tip: The codebase is designed to be super friendly for adding new tools. Check out the existing @mcp.tool() functions in mcp_main.py and follow the Adding Custom Tools guide above.


πŸ“„ License

This project is licensed under the MIT License.

Available Tools

30 tools
dump_configurationsDump ConfigurationsA

Unified configuration introspection tool (supersedes get_configurations & list_configurations & dump_all_configurations).

Modes:

  1. Single type values: specify config_type=

  2. Bulk list (optionally narrowed by service_filter substring in type name)

  3. Filtering keys/types via filter substring

Args: config_type: focus on one type's latest tag (other bulk params ignored except filter on keys) service_filter: substring to restrict bulk types (ignored if config_type provided) filter: substring applied to type names OR property keys summarize: bulk mode summary lines only (counts + sample keys, forces include_values False) include_values: include key=value pairs (bulk/full mode only) limit: max number of types to output in bulk mode (0 = unlimited) max_chars: truncate final output if exceeds

ParametersJSON Schema
NameRequiredDescriptionDefault
config_typeNo
service_filterNo
filterNo
summarizeNo
include_valuesNo
limitNo
max_charsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description fully discloses behavioral traits: it supersedes other tools, has multiple modes, filtering, summarize, and truncation. It does not mention side effects or safety, but as a read tool, this is adequate.

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

Conciseness4/5

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

The description is well-structured with modes and args list, front-loading the main purpose. While somewhat lengthy, every sentence adds value; minor room for tightening.

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

Completeness4/5

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

With an output schema present, return values need not be explained. The description covers all parameters and usage scenarios thoroughly, missing only edge cases like empty results. Overall quite complete for a complex tool.

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

Parameters5/5

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

Given 0% schema description coverage, the description thoroughly explains each parameter (config_type, service_filter, filter, summarize, include_values, limit, max_chars) and their interactions, providing significant value beyond the schema.

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

Purpose5/5

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

The description explicitly states it is a unified configuration introspection tool that supersedes other similar tools. It clearly describes the function: dump configurations, and differentiates by covering multiple modes and parameters, thus distinguishing from sibling tools which are unrelated.

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 details when to use each mode: single type vs bulk, filtering options, and summarization. It provides clear context on parameter interactions but does not explicitly state when not to use this tool or mention alternatives among siblings, though siblings are not configuration-focused.

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

get_active_requestsA

Retrieves currently active (in progress) requests/operations in an Ambari cluster. Shows running operations, in-progress tasks, pending requests.

[Tool Role]: Dedicated tool for monitoring currently running Ambari operations

[Core Functions]:

  • Retrieve active/running Ambari operations (IN_PROGRESS, PENDING status)

  • Show real-time progress of ongoing operations

  • Monitor current cluster activity

[Required Usage Scenarios]:

  • When users ask for "active requests", "running operations", "current requests"

  • When users ask for "request list", "operation list", "task list"

  • When users want to see "current tasks", "running tasks", "in progress operations"

  • When users mention "running", "in progress", "current activity"

  • When users ask about Ambari requests, operations, or tasks

  • When checking if any operations are currently running

Returns: Active requests information (success: active request list, failure: error message)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

No annotations present, so description bears full weight. Discloses it shows real-time progress and returns success/failure. No side effects mentioned, but for a read-only tool this is sufficient.

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

Conciseness3/5

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

Description is verbose with redundant bullet points and repeated phrases. While informative, it could be trimmed without losing clarity.

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

Completeness5/5

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

For a parameterless tool with output schema, the description covers purpose, usage triggers, and return format. No gaps given the low complexity.

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

Parameters4/5

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

No parameters in schema, so description doesn't need to add parameter info. Schema coverage is 100% vacuously. Baseline 4 is appropriate.

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

Purpose5/5

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

Clearly states it retrieves currently active requests/operations in an Ambari cluster. Lists core functions and distinguishes from siblings like get_request_status by focusing on 'active' and 'in progress'.

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?

Provides extensive list of 'Required Usage Scenarios' covering various phrasings. Lacks explicit exclusions or when-not-to-use instructions, but the context is clear.

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

get_alerts_historyA

Retrieve current alerts or alert history from Ambari cluster.

[Tool Role]: Unified tool for retrieving both current/active alert status and historical alert events from Ambari cluster

[Core Functions]:

  • Current mode: Retrieve current alerts for entire cluster, specific service, or specific host

  • History mode: Retrieve alert history for entire cluster, specific service, or specific host

  • Support filtering by alert state (CRITICAL, WARNING, OK, UNKNOWN)

  • Support filtering by definition name

  • Current mode: Support filtering by maintenance state (ON, OFF)

  • History mode: Support filtering by time range with from_timestamp/to_timestamp

  • Support different output formats (detailed, summary, compact, groupedSummary for current)

  • History mode: Provide pagination support for large datasets

  • Provide current time context for LLM natural language time calculations

[Required Usage Scenarios]:

  • Current mode: When users request current alerts, active alerts, or alert status

  • Current mode: When monitoring immediate cluster health

  • Current mode: When investigating current issues or troubleshooting active problems

  • History mode: When users request alert history, past alerts, or historical alert data

  • History mode: When monitoring alert trends or analyzing alert patterns

  • History mode: When investigating past alert incidents or troubleshooting

  • When users mention alert status, current problems, cluster health, alert events, alert timeline, or alert logs

Args: mode: "current" for active alerts, "history" for past events (default: "current") cluster_name: Name of cluster (uses default if not specified) service_name: Filter by specific service name (e.g., HDFS, YARN) host_name: Filter by specific host name state_filter: Filter by alert state (CRITICAL, WARNING, OK, UNKNOWN) definition_name: Filter by alert definition name maintenance_state: Filter by maintenance state (ON, OFF) - current mode only from_timestamp: Start timestamp in milliseconds (Unix epoch) - history mode only to_timestamp: End timestamp in milliseconds (Unix epoch) - history mode only include_time_context: Add current time information for LLM natural language processing limit: Maximum number of alert entries to return page_size: Number of entries per page (default: 100) - history mode only start_page: Starting page number (default: 0) - history mode only format: Output format - 'detailed', 'summary', 'compact', or 'groupedSummary' (current mode only)

Returns: Alert information (success: formatted alerts, failure: English error message)

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNocurrent
cluster_nameNo
service_nameNo
host_nameNo
state_filterNo
definition_nameNo
maintenance_stateNo
from_timestampNo
to_timestampNo
include_time_contextNo
limitNo
page_sizeNo
start_pageNo
formatNodetailed

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

No annotations exist, so description carries full burden. It thoroughly explains the two modes, filtering capabilities, pagination, time context, and that it provides current time for LLM calculations. It is transparent about behavior without contradictions.

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

Conciseness4/5

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

The description is well-structured with clear sections (Tool Role, Core Functions, Usage Scenarios, Args, Returns) and front-loaded key info. However, it is somewhat verbose and has minor redundancy (e.g., first line repeated in Core Functions).

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

Completeness5/5

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

Given 14 parameters, no annotations, and an output schema, the description covers all aspects: modes, filtering, pagination, time context, output formats, and return value description. It is complete and leaves no critical gaps.

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

Parameters5/5

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

Schema description coverage is 0%, but the description lists all 14 parameters with explanations, mode-specific applicability, and defaults. It adds significant meaning beyond the schema, especially for mode-dependent parameters like maintenance_state, from_timestamp, to_timestamp, page_size, and format.

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

Purpose5/5

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

The description clearly states it retrieves current alerts or alert history from Ambari cluster, with two distinct modes. It distinguishes itself from sibling get_current_alerts by also handling history. The verb 'retrieve' and resource 'alerts' are specific.

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

Usage Guidelines4/5

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

The description provides explicit required usage scenarios for both current and history modes, and lists when to use based on user queries. However, it does not include exclusions or when not to use this tool versus siblings like get_current_alerts.

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

get_cluster_infoA

Retrieves basic information for an Ambari cluster.

[Tool Role]: Dedicated tool for real-time retrieval of overall status and basic information for an Ambari cluster.

[Core Functions]:

  • Retrieve cluster name, version, provisioning state, and security type

  • Provide formatted output for LLM automation and cluster monitoring

[Required Usage Scenarios]:

  • When users request cluster info, status, or summary

  • When monitoring cluster health or auditing cluster properties

  • When users mention cluster overview, Ambari cluster, or cluster details

Returns: Cluster basic information (success: formatted info, failure: English error message)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Describes the tool as 'real-time retrieval' with no side effects, and specifies return format (success: formatted info, failure: error message). With no annotations, the description adequately covers behavioral traits for a read-only operation, though it could mention freshness or auth expectations.

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?

Well-structured with clear sections and front-loaded purpose. A bit verbose with redundant items like 'formatted output for LLM automation', but still efficient and easy to parse.

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

Completeness4/5

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

Given the tool's simplicity (no params, output schema exists), the description provides complete context: purpose, usage scenarios, return format. Adequate for an agent to decide and invoke correctly.

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?

No parameters exist, so baseline is 4. The description adds no parameter information beyond the schema, but that is acceptable given zero parameters.

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?

Clearly states it retrieves basic information for an Ambari cluster, listing specific fields like name, version, provisioning state, and security type. Distinguishes from siblings by focusing on overall status vs. specific services or hosts.

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?

Provides explicit 'Required Usage Scenarios' with specific triggers (e.g., 'when users request cluster info, status, or summary'). Lacks exclusion criteria or alternative sibling mentions, but the guidance is clear and actionable.

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

get_cluster_servicesA

Retrieves the list of services with status in an Ambari cluster.

[Tool Role]: Dedicated tool for real-time retrieval of all running services and basic status information in an Ambari cluster

[Core Functions]:

  • Retrieve cluster service list with status via Ambari REST API

  • Provide service names, current state, and cluster information

  • Include detailed link information for each service

  • Display visual indicators for service status

[Required Usage Scenarios]:

  • When users mention "service list", "cluster services", "Ambari services"

  • When cluster status check is needed

  • When service management requires current status overview

  • When real-time cluster information is absolutely necessary

[Absolutely Prohibited Scenarios]:

  • General Hadoop knowledge questions

  • Service installation or configuration changes

  • Log viewing or performance monitoring

  • Requests belonging to other cluster management tools

Returns: Cluster service list with status information (success: service list with status, failure: error message)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses real-time retrieval via Ambari REST API, return content (service names, state, cluster info, links, visual indicators), and success/failure format. However, it is verbose and includes ambiguous 'visual indicators' without elaboration. Otherwise, it is adequately transparent.

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

Conciseness4/5

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

The description is structured with clear sections (Tool Role, Core Functions, Scenarios) and front-loaded with the core purpose. However, it is lengthy and repeats the concept of 'service list with status' multiple times. It earns its place but could be more concise.

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

Completeness5/5

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

Given zero parameters and the presence of an output schema, the description need not explain return values but does so explicitly. It also provides usage and prohibition scenarios, making the tool's context complete for an agent. No gaps are evident.

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?

There are no parameters, and schema coverage is 100% trivially. The baseline score for 0 parameters is 4. The description does not add parameter semantics because none exist, so it meets the baseline without needing compensation.

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 retrieves the list of services with status in an Ambari cluster. It specifies 'all running services' and 'basic status information,' and the 'Required Usage Scenarios' and 'Prohibited Scenarios' effectively distinguish this tool from siblings like get_service_details and get_service_status.

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

Usage Guidelines5/5

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

The description provides explicit 'Required Usage Scenarios' and 'Absolutely Prohibited Scenarios,' offering clear guidance on when to use this tool (e.g., when users mention 'service list') and when not to (e.g., general Hadoop questions, service installation). This directly helps the agent decide among siblings.

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

get_current_alertsA

Retrieve current alerts from Ambari cluster.

DEPRECATED: This function is deprecated in favor of get_alerts_history with mode="current". This wrapper is maintained for backward compatibility.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_nameNo
service_nameNo
host_nameNo
state_filterNo
definition_nameNo
maintenance_stateNo
formatNodetailed

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are present, so the description carries full burden. It implies a read operation via 'retrieve', but does not disclose any additional behavioral traits such as rate limits, authentication requirements, or side effects. The deprecation note is helpful but not sufficient for full transparency.

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

Conciseness5/5

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

The description is two sentences long, front-loading the purpose and immediately providing deprecation context. Every sentence earns its place with no wasted words.

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

Completeness3/5

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

An output schema exists, so return values are documented. However, the description lacks parameter explanations and does not clarify what 'current alerts' means or how filtering works. Given zero annotation coverage, the description is only partially complete.

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

Parameters2/5

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

Schema description coverage is 0%, meaning the input schema provides no parameter descriptions. The tool description does not explain any of the 7 parameters (e.g., cluster_name, service_name, state_filter), leaving the agent without guidance on how to use them.

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 'Retrieve current alerts from Ambari cluster', specifying the action and resource. It also distinguishes from sibling by noting deprecation in favor of get_alerts_history.

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

Usage Guidelines5/5

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

Explicitly states deprecation and provides the alternative get_alerts_history with mode='current', guiding the agent to prefer the replacement while acknowledging backward compatibility.

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

get_host_detailsA

Retrieves detailed information for a specific host or all hosts in the Ambari cluster.

[Tool Role]: Dedicated tool for retrieving comprehensive host details including metrics, hardware info, and components.

[Core Functions]:

  • If host_name provided: Query specific host information

  • If host_name not provided: Query all hosts and their detailed information

  • Return host hardware specs, state, metrics, and assigned components

  • Provide formatted output for LLM automation and cluster management

[Required Usage Scenarios]:

  • When users request specific host details or host status

  • When users request all hosts details or cluster-wide host information

  • When auditing or monitoring individual or all cluster nodes

  • When troubleshooting host-specific issues

Args: host_name: Name of the specific host to retrieve details for (optional, e.g., "bigtop-hostname0.demo.local")

Returns: Detailed host information (success: formatted details, failure: error message)

ParametersJSON Schema
NameRequiredDescriptionDefault
host_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so the description carries the full burden. It discloses that the tool returns hardware specs, state, metrics, components, and formatted output. It does not explicitly state read-only nature or authentication needs, but the behavior is well enough described for most cases.

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?

Well-structured with sections like Tool Role, Core Functions, Required Usage Scenarios. However, some redundancy exists (e.g., Core Functions repeats purpose). The description is front-loaded with the primary action.

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

Completeness4/5

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

Covers both modes (with and without host_name). Mentions return contents (hardware, metrics, state, components). An output schema exists so precise fields are not needed. For a single-parameter tool, this is sufficiently complete.

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

Parameters4/5

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

Schema coverage is 0% (no description on host_name param). The description adds significant value by explaining host_name is optional with an example value, and clarifies its role in filtering. This compensates for the missing schema description.

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?

Fully stated: 'Retrieves detailed information for a specific host or all hosts in the Ambari cluster.' Uses a specific verb and resource, and distinguishes from siblings like list_hosts (which likely only lists names) by specifying scope and detail level.

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?

Provides clear scenarios in 'Required Usage Scenarios' (e.g., when users request host details, auditing). Lacks explicit when-not-to-use or alternative sibling recommendations, but the context is clear enough for an agent to infer appropriate use.

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

get_prompt_templateA

Return the canonical English prompt template (optionally a specific section).

Simplified per project decision: only a single English template file PROMPT_TEMPLATE.md is maintained.

Args: section: (optional) section number or keyword (case-insensitive) e.g. "1", "purpose", "tool map". mode: (optional) if "headings" returns just the list of section headings with numeric indices.

ParametersJSON Schema
NameRequiredDescriptionDefault
sectionNo
modeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It explains that the tool returns the full template or a specific section, and a headings mode. It does not mention permissions, error handling, or other behavioral traits, but for a simple read operation, the description is sufficiently transparent.

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

Conciseness5/5

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

The description is concise, with the main purpose in the first sentence, followed by a brief note on project decision and parameter details. Every sentence adds value, with no unnecessary words.

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

Completeness5/5

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

Given the existence of an output schema, the description does not need to explain return values. It covers the parameters thoroughly, and the tool's complexity is low (2 optional params). The description is complete for an agent to understand and invoke the tool correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It does so by explaining both parameters: 'section' (optional section number or keyword) and 'mode' (if 'headings' returns heading list). This adds meaningful context beyond the schema's basic type definitions.

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: 'Return the canonical English prompt template (optionally a specific section).' The verb 'Return' and resource 'prompt template' are specific, and the tool is distinct from siblings which deal with different domains like cluster management or metrics.

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

Usage Guidelines4/5

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

The description explains the project decision (only one file) and the optional parameters, providing context for usage. However, it does not explicitly state when to use this tool over alternatives or when not to use it. Since it is the sole tool for this purpose, the guidance is adequate but lacks explicit exclusion or alternatives.

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

get_request_statusA

Retrieves the status and progress of a specific Ambari request operation.

[Tool Role]: Dedicated tool for real-time tracking and reporting of Ambari request status.

[Core Functions]:

  • Query the status, progress, and context of a request by its ID

  • Provide detailed status (PENDING, IN_PROGRESS, COMPLETED, FAILED, etc.)

  • Show progress percentage and timing information

  • Return actionable status for automation and LLM integration

[Required Usage Scenarios]:

  • When users ask for the status or progress of a specific operation/request

  • When monitoring or troubleshooting Ambari operations

  • When tracking bulk or individual service actions

  • When users mention request ID, operation status, or progress

Args: request_id: ID of the Ambari request to check (int)

Returns: Request status information (success: detailed status and progress, failure: error message) - Success: Multi-line string with request ID, status, progress, context, start/end time, and status description - Failure: English error message describing the problem

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description bears the full burden. It explains the tool returns status, progress, timing, and is intended for automation. It does not disclose authorization needs or side effects, but for a read-only operation this is adequate.

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

Conciseness4/5

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

The description is well-structured with sections, but somewhat verbose. It could be more concise without losing key information. Overall it is clear and logically organized.

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

Completeness4/5

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

Given the presence of an output schema, the description adequately outlines return values (status, progress, timing). It lacks details on error conditions or retry logic, but is sufficient for a simple status retrieval tool.

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 explains the 'request_id' parameter's purpose and type (int), but the input schema declares it as a string. This contradiction could mislead an agent. Since schema coverage is 0%, the description adds some meaning, but the inconsistency reduces reliability.

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 'Retrieves the status and progress of a specific Ambari request operation', using a specific verb and resource. It distinguishes itself from siblings like 'get_active_requests' and 'get_request_tasks' by focusing on a single request by ID.

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

Usage Guidelines4/5

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

The 'Required Usage Scenarios' section lists clear conditions for use, such as when users ask for status or during monitoring. However, it does not explicitly contrast with sibling tools like 'get_request_tasks' that might be more appropriate for detailed task-level information.

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

get_request_tasksA

Retrieves task-level details for a specific Ambari request (host-by-host breakdown).

[Tool Role]: Provides granular, per-host task information for an Ambari request, going beyond the summary level offered by get_request_status.

[Core Functions]:

  • List all tasks (host/role/status/timing) belonging to a request

  • Filter tasks by status (e.g. FAILED, IN_PROGRESS) or exclude a status (not:COMPLETED)

  • Filter tasks by hostname to inspect a specific host

  • Identify which hosts/roles are failing, pending, or still running

[Required Usage Scenarios]:

  • When users want to know which hosts or roles failed/are pending in an operation

  • When debugging a partially-failed bulk operation (e.g. "Start all services")

  • When users ask for task details, host-level progress, or remaining tasks

  • When request progress is near 100% but not complete and user wants to know what's left

Args: request_id: ID of the Ambari request to inspect (integer string) status_filter: Optional status to filter on. Use exact status names (PENDING, IN_PROGRESS, COMPLETED, FAILED, ABORTED, TIMEDOUT) or prefix with "not:" to exclude that status (e.g. "not:COMPLETED" shows only unfinished tasks). host_filter: Optional hostname substring to restrict results to matching hosts.

Returns: Task list formatted as a table (success) or an error message (failure). - Success: header with request summary + per-task rows (task_id, host, role, status, duration) - Failure: English error message describing the problem

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYes
status_filterNo
host_filterNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

The description details the behavior: listing tasks with filtering capabilities and return format. However, it does not explicitly state that the tool is read-only or mention authentication needs. Since annotations are absent, the description carries full burden but is still thorough.

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

Conciseness4/5

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

The description is well-structured with sections and front-loaded purpose. However, it is fairly long; while every sentence is useful, slight trimming could improve conciseness without losing value.

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

Completeness5/5

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

Given the tool's complexity (multiple filters, use cases), the description covers all necessary aspects: parameters, return format (table vs error), and usage scenarios. No output schema is needed as the description explains the output.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining each parameter: request_id as integer string, status_filter with exact statuses and 'not:' prefix logic, host_filter as substring. This adds critical meaning beyond the bare schema.

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

Purpose5/5

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

The description clearly states the tool retrieves task-level details for a specific Ambari request with a host-by-host breakdown, and it explicitly differentiates from the sibling tool 'get_request_status' which provides summary-level data.

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

Usage Guidelines5/5

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

The 'Required Usage Scenarios' section explicitly lists when to use this tool, such as debugging partially-failed operations or when request progress is near 100% but incomplete. It provides clear context for use vs. alternatives.

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

get_service_componentsA

Retrieves detailed components information for a specific service in the Ambari cluster.

[Tool Role]: Dedicated tool for retrieving service component details and host assignments.

[Core Functions]:

  • List all components for a service, including state and category

  • Show host assignments and instance counts

  • Provide formatted output for LLM automation and troubleshooting

[Required Usage Scenarios]:

  • When users request service component details or host info

  • When troubleshooting service health or scaling

  • When users mention component list, host assignments, or service breakdown

Args: service_name: Name of the service (e.g., "HDFS", "YARN", "HBASE")

Returns: Service components detailed information (success: formatted list, failure: English error message)

ParametersJSON Schema
NameRequiredDescriptionDefault
service_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It states it retrieves data and returns formatted output or errors, implying read-only behavior. However, it lacks details on permissions, idempotency, or potential side effects, making it adequate but not complete.

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

Conciseness5/5

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

The description is well-structured with clear sections including role, core functions, required scenarios, args, and returns. It is front-loaded with the main purpose and contains no unnecessary words.

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

Completeness4/5

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

Given the tool's simplicity (one parameter) and presence of output schema, the description covers purpose, usage, and return format adequately. It mentions failure behavior. A slight gap is not discussing authentication or permissions, but overall it is comprehensive.

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?

With 0% schema description coverage, the description adds value by specifying service_name with examples (e.g., 'HDFS', 'YARN'). This goes beyond the schema's bare property type, compensating for the lack of schema-level 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 it retrieves detailed components information for a specific service in the Ambari cluster. The verb 'retrieves' and resource 'components information' are specific, and it distinguishes from siblings like get_service_details by focusing on component-level details.

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 'Required Usage Scenarios' section provides explicit guidance on when to use, such as when users request component details or troubleshooting health. However, it does not mention when not to use or alternative tools, which prevents a perfect score.

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

get_service_detailsA

Retrieves detailed status and configuration information for a specific service in the Ambari cluster.

[Tool Role]: Dedicated tool for retrieving comprehensive service details, including state, components, and configuration.

[Core Functions]:

  • Retrieve service state, component list, and configuration availability

  • Provide formatted output for LLM automation and troubleshooting

[Required Usage Scenarios]:

  • When users request detailed service info or breakdown

  • When troubleshooting service health or auditing service setup

  • When users mention service details, service summary, or configuration status

Args: service_name: Name of the service to check (e.g., "HDFS", "YARN", "HBASE")

Returns: Detailed service information (success: comprehensive details, failure: English error message)

ParametersJSON Schema
NameRequiredDescriptionDefault
service_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations provided; description implies read-only behavior but does not explicitly state idempotence, safety, or side effects. Mentions 'formatted output for LLM automation' but no permission or rate limit context.

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

Conciseness3/5

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

Structured with sections but contains redundancy (e.g., 'Retrieves detailed status and configuration information' repeated in opening and Core Functions). Could be tighter.

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

Completeness4/5

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

Single-parameter tool with existing output schema; description covers success and failure return types. Lacks details on output fields but is acceptable given output schema.

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

Parameters4/5

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

Schema has 0% description coverage, but description adds examples ('HDFS', 'YARN', 'HBASE') and clarifies purpose beyond the bare schema type 'string'.

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 'Retrieves detailed status and configuration information for a specific service' and differentiates from siblings like get_service_status and get_service_components by emphasizing comprehensive details.

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?

Provides explicit 'Required Usage Scenarios' (detailed info requests, troubleshooting) but lacks comparative guidance on when to use alternatives like get_service_status.

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

get_service_statusA

Retrieves the status information for a specific service in an Ambari cluster.

[Tool Role]: Dedicated tool for real-time retrieval of specific service status and state information

[Core Functions]:

  • Retrieve specific service status via Ambari REST API

  • Provide detailed service state information (STARTED, STOPPED, INSTALLING, etc.)

  • Include service configuration and component information

[Required Usage Scenarios]:

  • When users ask about specific service status (e.g., "HDFS status", "YARN state")

  • When troubleshooting service issues

  • When monitoring specific service health

Args: service_name: Name of the service to check (e.g., "HDFS", "YARN", "HBASE")

Returns: Service status information (success: detailed status, failure: error message)

ParametersJSON Schema
NameRequiredDescriptionDefault
service_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It mentions real-time retrieval and state information but does not explicitly declare the tool as read-only or discuss side effects, permissions, or error behavior beyond a generic failure message.

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

Conciseness3/5

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

The description is well-structured with sections and bullet points but is somewhat verbose, repeating concepts like 'status' and 'state'. It could be more concise without losing clarity.

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 retrieval tool with one parameter, the description covers purpose and parameter adequately. However, it does not address when to use this tool versus similar siblings (e.g., get_service_details), and the output description is vague despite an output schema being present.

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 parameter service_name is clearly described with examples (e.g., 'HDFS', 'YARN', 'HBASE'), adding practical value beyond the schema which lacks a description field. Schema description coverage is 0%, so the description compensates well.

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

Purpose5/5

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

The description clearly states it retrieves status information for a specific service in an Ambari cluster, with a specific verb and resource. It distinguishes itself from sibling tools like get_service_details or get_cluster_services by focusing on real-time status and state.

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 includes 'Required Usage Scenarios' such as when users ask about specific service status, troubleshooting, and monitoring. However, it does not explicitly compare to sibling tools, leaving some ambiguity about when to use this tool over others like get_service_details.

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

get_userA

Get detailed information about a specific user.

Args: user_name: The username to retrieve details for

Returns: Detailed user information including profile, permissions, and authentication sources

ParametersJSON Schema
NameRequiredDescriptionDefault
user_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

The description implies a read-only operation ('Get detailed information') but does not explicitly state safety or side effects. With no annotations, the burden is on the description; it partially discloses the return content but omits auth requirements, rate limits, or potential error conditions.

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

Conciseness5/5

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

The description is concise, with a brief introductory sentence followed by structured sections for Args and Returns. It is front-loaded with the core purpose and uses minimal, efficient language.

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

Completeness4/5

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

Given the presence of an output schema, the description does not need to detail return values, but it lists the categories of information. The tool is simple with one parameter, and the description covers its basic usage. However, it lacks any mention of error cases or prerequisites.

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

Parameters4/5

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

The schema has 0% description coverage, but the description's 'Args' section explains that user_name is 'The username to retrieve details for'. This adds meaningful context beyond the bare schema type, compensating for the lack of 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 'Get detailed information about a specific user' with a specific verb and resource. It lists the categories of information returned (profile, permissions, authentication sources). However, it does not distinguish itself from the sibling tool 'list_users', which likely retrieves multiple users.

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 'list_users'. The description only states the function and requires a user_name, but does not explain scenarios or contexts for use.

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

hdfs_dfadmin_reportHDFS DFSAdmin ReportC

Produce a DFSAdmin-style capacity and DataNode report using Ambari metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_nameNo
lookback_minutesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. While 'report' implies a read operation, there is no explicit mention that it is non-destructive, no disclosure of authentication needs, rate limits, or potential side effects. The description's brevity leaves significant behavioral ambiguity.

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

Conciseness3/5

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

The description is a single sentence, which is concise, but it lacks structure. While it is not verbose, it does not efficiently front-load key details; it is under-specified rather than concisely informative.

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 tool that produces a report from Ambari metrics, the description is too minimal. It does not explain what the report contains beyond 'capacity and DataNode', does not describe parameter effects, and omits any usage context or prerequisites. The existence of an output schema partially compensates, but overall the description is incomplete.

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

Parameters1/5

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

The schema has 0% description coverage, and the description does not mention any of the two parameters (cluster_name, lookback_minutes). It fails to add any meaning or context beyond the parameter names and types, leaving the agent unable to understand how to use them.

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 produces a DFSAdmin-style capacity and DataNode report using Ambari metrics. The verb 'produce' and specific resource 'DFSAdmin-style capacity and DataNode report' differentiate it from sibling tools which deal with configurations, requests, alerts, and services.

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 any prerequisites, contexts, or exclusions for usage, leaving the agent without criteria to decide if this tool is appropriate.

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

list_ambari_metric_appsList Ambari Metric AppsC

Return discovered AMS appIds, optionally with metric counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
refreshNo
include_countsNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It implies a read-only operation by stating it returns data, but does not explicitly confirm it is non-destructive or disclose any behavioral traits beyond the basic output.

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 only 9 words, conveying the core functionality without redundancy. However, it could be expanded slightly to improve clarity on parameters.

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 simple tool with three parameters and an output schema, the description lacks detail on parameter behavior and usage context. It does not address when to use refresh or limit, leaving gaps for the agent.

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

Parameters2/5

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

With 0% schema description coverage, the description must compensate but only partially addresses one parameter: 'optionally with metric counts' hints at include_counts. The refresh and limit parameters are not explained at all.

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

Purpose4/5

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

The description clearly states that the tool returns 'discovered AMS appIds' and allows including metric counts. It uses a specific verb 'Return' and identifies the resource, but does not explicitly differentiate from sibling tools like list_ambari_metrics_metadata or list_common_metrics_catalog.

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, nor any prerequisites or context. It simply describes the output without indicating appropriate use cases.

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

list_ambari_metrics_metadataList Ambari Metrics MetadataC

Retrieve metric metadata from Ambari Metrics service with optional filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idNo
metric_name_filterNo
host_filterNo
searchNo
limitNo
include_dimensionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, and the description only states it retrieves metadata, lacking disclosure on permissions, rate limits, pagination, or response structure beyond what the output schema offers.

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?

Single sentence with no waste, but could include more detail without sacrificing 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 6 parameters and no schema descriptions, the description is too brief; it does not explain what metric metadata is or how filters affect results.

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

Parameters1/5

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

With 0% schema description coverage, the description does not explain any of the 6 parameters, failing to add meaning beyond parameter names and types.

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 verb 'retrieve', resource 'metric metadata', and source 'Ambari Metrics service', distinguishing it from sibling tools like query_ambari_metrics and list_ambari_metric_apps.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives; the description only mentions optional filters without providing context on preferred use cases.

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

list_common_metrics_catalogList Common Metrics CatalogC

List supported metrics per appId (exact names only).

ParametersJSON Schema
NameRequiredDescriptionDefault
app_idNo
searchNo
limitNo
min_scoreNo
include_descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 only states the basic function and does not disclose any behavioral traits such as how null appId is handled or safety.

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

Conciseness3/5

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

The description is one concise sentence, but it lacks structure and does not cover the tool's complexity. It is front-loaded but under-specified.

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 five parameters and output schema, the description is too brief. It fails to explain how to use parameters effectively, making the tool incomplete for an agent.

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

Parameters1/5

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

With 0% schema description coverage and no elaboration in the description, the agent is left to infer the meaning of parameters like search, limit, min_score, and include_description.

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

Purpose5/5

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

The description clearly states it lists supported metrics per appId with exact names only, distinguishing it from similar tools like list_ambari_metric_apps.

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 supported metrics by appId but provides no explicit guidance on when to use this tool versus siblings like list_ambari_metrics_metadata.

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

list_hostsA

Retrieves the list of hosts in the Ambari cluster.

[Tool Role]: Dedicated tool for listing all hosts registered in the Ambari cluster.

[Core Functions]:

  • Query Ambari REST API for host list

  • Return host names and API links

  • Provide formatted output for LLM automation and cluster management

[Required Usage Scenarios]:

  • When users request cluster host list or host details

  • When auditing or monitoring cluster nodes

Returns: List of hosts (success: formatted list, failure: error message)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations provided, so description carries burden. It mentions querying Ambari REST API and returning formatted output, but doesn't disclose potential side effects, rate limits, or authentication needs. Adequate but not exhaustive.

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

Conciseness5/5

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

Description is well-structured with headings (Tool Role, Core Functions, Required Usage Scenarios, Returns) and is concise without unnecessary content.

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

Completeness5/5

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

Tool is simple with no parameters and has an output schema. Description covers purpose, functions, usage scenarios, and return format, making it complete for the context.

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

Parameters4/5

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

Tool has zero parameters, and schema coverage is 100%. Per guidelines, baseline is 4. Description does not need to add parameter info.

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

Purpose5/5

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

Description clearly states 'Retrieves the list of hosts in the Ambari cluster.' It uses a specific verb and resource, and differentiates from sibling tools like get_host_details by focusing on listing all hosts.

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?

Description includes 'Required Usage Scenarios' (e.g., when users request host list, auditing), indicating when to use. However, it does not explicitly state when not to use or mention alternatives like get_host_details.

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

list_usersA

List all users in the Ambari system.

Returns a formatted list of all users with their basic information.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations exist, so the description must carry the full burden. It only states it returns a formatted list, but does not mention read-only nature, authentication needs, or potential side effects.

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

Conciseness5/5

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

Two brief sentences that are front-loaded with the action and scope, containing no extraneous information.

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

Completeness4/5

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

For a parameterless list tool with an output schema, the description adequately covers its purpose. It could mention that it is a read operation, but overall it is complete.

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

Parameters4/5

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

No parameters exist, so schema coverage is 100%. The description adds no parameter info, but none is needed. Baseline 4 applies.

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 'List all users in the Ambari system,' which is a specific verb+resource. It distinguishes from sibling 'get_user' by implying listing all vs. a single user.

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?

No explicit guidance on when to use this tool versus alternatives like 'get_user' is provided. The usage is implied but not clarified.

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

query_ambari_metricsQuery Ambari MetricsC

Fetch time-series metrics (exact metric names only) from Ambari Metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
metric_namesYes
app_idNo
hostnamesNo
durationNo1h
start_timeNo
end_timeNo
precisionNo
temporal_aggregatorNo
temporal_granularityNo
group_by_hostNo
include_pointsNo
max_pointsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations exist, so the description bears full responsibility for behavioral disclosure. It only mentions the constraint 'exact metric names only' but does not address data volume limits, rate limiting, authentication requirements, or other behavioral traits.

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

Conciseness3/5

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

The description is a single sentence, concise but overly brief. It front-loads the action but lacks necessary detail. Given the tool's complexity, the sentence is too short to be effective.

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?

Despite the presence of an output schema, the description fails to provide context for the numerous parameters or the exact nature of the returned metrics. It covers only the basic purpose, leaving many aspects unexplained.

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

Parameters1/5

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

With 0% schema description coverage and 12 parameters (including optional ones like app_id, hostnames, duration), the description does not explain any parameter. The agent must infer parameter usage from names alone, which is insufficient.

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 explicitly states 'Fetch time-series metrics (exact metric names only) from Ambari Metrics,' which clearly identifies the verb (fetch), resource (time-series metrics), and constraint (exact metric names). It distinguishes itself from sibling tools like 'list_ambari_metrics_metadata' and 'list_ambari_metric_apps'.

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, such as listing metrics first or using other query tools. The description simply states what it does without contextual usage advice.

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

restart_all_servicesA

Restarts all services in the Ambari cluster (stop all, then start all).

[Tool Role]: Dedicated tool for automated bulk restart of all Ambari services, ensuring safe stop and start sequence.

[Core Functions]:

  • Stop all running services and wait for completion

  • Start all services and wait for completion

  • Return clear success or error message for LLM automation

[Required Usage Scenarios]:

  • When users request to "restart all services", "bulk restart", "cluster-wide restart"

  • When troubleshooting or recovering cluster-wide issues

  • When maintenance or configuration changes require a full restart

Returns: Bulk restart operation result (success: English completion message, failure: English error message) - Success: "All services restart operation completed successfully." - Failure: "Error: ..." with details

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the stop-all-then-start-all behavior, waiting for completion, and return messages. However, it omits details about whether the operation is synchronous or asynchronous, or potential side effects like service downtime.

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

Conciseness3/5

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

The description uses a structured format with labeled sections (Tool Role, Core Functions, etc.), which aids readability but adds verbosity. Some redundancy exists (e.g., explaining the stop-start sequence twice). Could be more concise.

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

Completeness4/5

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

Given no parameters and presence of an output schema, the description sufficiently explains purpose, usage, and return format. It lacks mention of prerequisites or authorization, but these are not critical for a restart tool. Overall adequate.

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

Parameters4/5

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

The input schema has zero parameters, so the description does not need to add parameter meaning. The baseline is 4 as no parameters are present.

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 defines 'restart_all_services' as a dedicated tool for automated bulk restart of all Ambari services, specifying the stop-then-start sequence. It distinguishes itself from sibling tools by explicitly being for 'all services' vs. single-service operations.

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 lists required usage scenarios such as when users request 'restart all services' or for maintenance. It provides clear context but does not explicitly exclude cases where single-service restart tools (e.g., 'restart_service') would be more appropriate.

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

restart_host_componentA

Restarts a specific component on a specific host in the Ambari cluster (stop then start).

[Tool Role]: Dedicated tool for restarting individual host-level components, enabling fine-grained control without affecting other hosts or the overall service.

[Core Functions]:

  • Stop the specified component on the given host and wait for completion

  • Start the component and return request information

  • Return clear success or error message for LLM automation

[Required Usage Scenarios]:

  • When users request to restart a component on a specific host (e.g., "restart DataNode on host-A")

  • When recovering a stuck or malfunctioning single component instance

  • When applying config changes that require a component-level restart

Args: host_name: Hostname where the component resides (e.g., "hdp-node-01.example.com") component_name: Name of the component to restart (e.g., "DATANODE", "NODEMANAGER")

Returns: Restart operation result (success: request info, failure: error message)

ParametersJSON Schema
NameRequiredDescriptionDefault
host_nameYes
component_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Describes stop-then-start process, wait for completion, and return info. No annotations provided, but description covers key behavioral aspects.

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?

Concise yet comprehensive with clear sections (Tool Role, Core Functions, Required Usage Scenarios, Args, Returns) and no unnecessary text.

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

Completeness4/5

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

Covers all necessary context: parameters, behavior, return values, and usage scenarios. Could be slightly more complete regarding error details, but adequate.

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

Parameters4/5

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

Schema has 0% description coverage, but description provides examples and explanation for host_name and component_name, adding value beyond 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?

Clearly states 'Restarts a specific component on a specific host' with verb and resource, and distinguishes from siblings like restart_service, start_host_component, etc.

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

Usage Guidelines5/5

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

Explicitly lists when to use (component restart requests, recovery, config changes) and implies when not to via sibling context.

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

restart_serviceA

Restarts a specific service in an Ambari cluster (stop then start).

[Tool Role]: Dedicated tool for automated restart of Ambari services, ensuring safe stop and start sequence.

[Core Functions]:

  • Stop the specified service and wait for completion

  • Start the service and wait for completion

  • Return clear success or error message for LLM automation

[Required Usage Scenarios]:

  • When users request to "restart" a service (e.g., "restart HDFS", "restart YARN")

  • When troubleshooting or recovering service issues

  • When maintenance or configuration changes require a restart

  • When users mention service restart, safe restart, or automated restart

Args: service_name: Name of the service to restart (e.g., "HDFS", "YARN")

Returns: Restart operation result (success: English completion message, failure: English error message) - Success: "Service '' restart operation completed successfully." - Failure: "Error: ..." with details

ParametersJSON Schema
NameRequiredDescriptionDefault
service_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It explains the stop-start sequence, waiting for completion, and return messages. However, it does not mention permissions, side effects, or concurrency considerations, which would enhance 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 structured with sections like [Tool Role], [Core Functions], and [Required Usage Scenarios], making it front-loaded with key information. However, it is somewhat verbose and includes redundancy (e.g., Args section repeats schema).

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

Completeness5/5

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

Given the tool's simplicity (single parameter, no annotations, but output schema exists), the description provides comprehensive information: behavior, scenarios, and return format. The agent can confidently invoke the tool based on this description alone.

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

Parameters4/5

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

The schema has 1 parameter (service_name) with 0% description coverage. The description adds: 'Name of the service to restart (e.g., "HDFS", "YARN")', providing example values that compensate for the lack of schema documentation. It does not add constraints but is helpful.

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

Purpose5/5

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

The description clearly states it restarts a specific Ambari service with a stop-then-start sequence. It distinguishes from siblings like start_service, stop_service, and restart_all_services by focusing on the single-service restart action.

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

Usage Guidelines4/5

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

The description explicitly lists required usage scenarios: when users request 'restart', troubleshooting, or maintenance. However, it does not explicitly state when not to use this tool versus alternatives like restart_all_services, though the scenarios provide sufficient guidance.

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

start_all_servicesA

Starts all services in an Ambari cluster (equivalent to "Start All" in Ambari Web UI).

[Tool Role]: Dedicated tool for bulk starting all services in the cluster, automating mass startup.

[Core Functions]:

  • Start all installed services simultaneously

  • Return request information for progress tracking

  • Provide clear success or error message for LLM automation

[Required Usage Scenarios]:

  • When users request to "start all services", "start everything", "cluster startup"

  • When recovering cluster after maintenance or outage

  • When users mention mass startup, bulk start, or cluster bring-up

Returns: Start operation result (success: request info, failure: English error message)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool returns progress tracking info and error messages, but does not mention prerequisites, potential side effects, or authorization needs, which is acceptable for a non-destructive start operation.

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

Conciseness4/5

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

The description is well-structured with sections and front-loaded with the main purpose. It is slightly verbose but every section adds value and maintains readability.

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

Completeness5/5

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

Given no annotations, zero parameters, and an output schema mentioned, the description fully covers the tool's functionality, return values, and usage scenarios, making it complete for an automated agent.

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

Parameters4/5

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

The input schema has no parameters (0 params), so the description correctly adds no additional parameter information. Per rules, baseline for 0 params is 4.

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 starts all services in an Ambari cluster, with a specific verb (starts) and resource (all services). It distinguishes from siblings like start_service and restart_all_services by emphasizing bulk startup.

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 'Required Usage Scenarios' section lists explicit contexts where this tool should be used, such as cluster startup or recovery. However, it does not explicitly mention when not to use it or name alternative tools for single service operations.

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

start_host_componentA

Starts a specific component on a specific host in the Ambari cluster.

[Tool Role]: Dedicated tool for starting individual host-level components, enabling fine-grained control without affecting other hosts or the overall service.

[Core Functions]:

  • Start the specified component on the given host

  • Skip if the component is already in STARTED state

  • Return request information for progress tracking

[Required Usage Scenarios]:

  • When a specific host's component is STOPPED but the overall service is STARTED

  • When users request to start a component on a specific host (e.g., "start DataNode on host-A")

  • When recovering a single component instance without restarting the entire service

Args: host_name: Hostname where the component resides (e.g., "hdp-node-01.example.com") component_name: Name of the component to start (e.g., "DATANODE", "NODEMANAGER")

Returns: Start operation result (success: request info, failure: error message)

ParametersJSON Schema
NameRequiredDescriptionDefault
host_nameYes
component_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Without annotations, the description carries the burden. It discloses key behaviors: the component is started only if not already STARTED ('Skip if already in STARTED state'), and it returns request information for progress tracking. It also mentions fine-grained control without affecting other hosts. This provides adequate transparency 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.

Conciseness4/5

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

The description is well-structured with headings ([Tool Role], [Core Functions], etc.) and front-loads key information. While it is somewhat verbose, each section provides necessary detail without redundancy. It could be slightly more concise, but it's effective.

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

Completeness5/5

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

Given the simplicity of two string parameters, the presence of an output schema, and sibling context, the description covers all essential aspects: purpose, usage scenarios, core functions (with idempotency), parameter examples, and return value. It is complete for an agent to select and invoke correctly.

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

Parameters4/5

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

The input schema has 0% description coverage, but the description includes an 'Args' section with examples for each parameter (e.g., host_name: 'hdp-node-01.example.com', component_name: 'DATANODE', 'NODEMANAGER'). These examples clarify the expected format and meaning, adding value beyond the schema.

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

Purpose5/5

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

The description explicitly states 'Starts a specific component on a specific host in the Ambari cluster', with clear verb and resource. It distinguishes from sibling tools like start_service and restart_host_component by noting it's a 'Dedicated tool for starting individual host-level components, enabling fine-grained control without affecting other hosts or the overall service.'

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 includes a 'Required Usage Scenarios' section listing three specific scenarios when to use this tool (e.g., 'when a specific host's component is STOPPED but the overall service is STARTED'). It does not explicitly state when not to use it, but the scenarios imply appropriate contexts, and sibling tools provide alternatives.

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

start_serviceA

Starts a specific service in the Ambari cluster.

[Tool Role]: Dedicated tool for automated start of Ambari services, ensuring safe and monitored startup.

[Core Functions]:

  • Start the specified service and initiate Ambari request

  • Return request information for progress tracking

  • Provide clear success or error message for LLM automation

[Required Usage Scenarios]:

  • When users request to "start" a service (e.g., "start HDFS", "start YARN")

  • When recovering stopped services

  • When maintenance or configuration changes require a service start

  • When users mention service start, bring up service, or automated start

Args: service_name: Name of the service to start (e.g., "HDFS", "YARN", "HBASE")

Returns: Start operation result (success: request info, failure: error message) - Success: Multi-line string with request ID, status, monitor URL, and instructions for progress tracking - Failure: English error message describing the problem

ParametersJSON Schema
NameRequiredDescriptionDefault
service_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It describes the action ('initiate Ambari request'), return types (success with request info, failure with error message), and mentions 'safe and monitored startup'. However, it does not disclose potential side effects, authentication needs, or prerequisites (e.g., service must be stopped). This is adequate but not highly transparent.

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

Conciseness4/5

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

The description is well-structured with sections (Tool Role, Core Functions, etc.), making it easy to scan. It is somewhat lengthy but each section adds useful information. Could be slightly more concise without losing clarity.

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

Completeness4/5

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

For a simple single-parameter tool, the description covers the core action, return types, and usage scenarios. It does not mention output schema details (though context indicates an output schema exists), but the description already explains the return format. It lacks prerequisites or edge cases, but overall is sufficiently complete given the tool's simplicity.

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 one required parameter (service_name) with no description. The description adds value by providing examples ('HDFS', 'YARN', 'HBASE') and a clear purpose. With schema description coverage at 0%, this compensation is strong, though it could include format constraints or allowed values.

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

Purpose5/5

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

The description clearly states it 'Starts a specific service in the Ambari cluster' using a specific verb and resource. The 'Core Functions' and 'Required Usage Scenarios' further reinforce the purpose and differentiate it from sibling tools like stop_service, restart_service, and start_all_services.

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

Usage Guidelines4/5

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

It explicitly lists required usage scenarios (e.g., when users request to start a service, recovering stopped services). It does not directly state when not to use, but the naming of sibling tools implies alternatives (e.g., start_all_services for bulk). The guidance is clear but could be slightly more explicit about exclusions.

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

stop_all_servicesA

Stops all services in an Ambari cluster (equivalent to "Stop All" in Ambari Web UI).

[Tool Role]: Dedicated tool for bulk stopping all services in the cluster, automating mass shutdown.

[Core Functions]:

  • Stop all running services simultaneously

  • Return request information for progress tracking

  • Provide clear success or error message for LLM automation

[Required Usage Scenarios]:

  • When users request to "stop all services", "stop everything", "cluster shutdown"

  • When cluster maintenance or troubleshooting requires mass shutdown

  • When users mention mass shutdown, bulk stop, or cluster halt

Returns: Stop operation result (success: request info, failure: English error message)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description discloses the tool's bulk stopping behavior and return value (request info or error message). However, it does not mention the destructive nature (all services stopped), whether it requires confirmation, or any prerequisites like cluster state. This leaves some behavioral gaps.

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

Conciseness4/5

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

The description is structured with clear sections (role, core functions, usage scenarios) and is front-loaded with purpose. Some phrases are slightly redundant (e.g., 'Dedicated tool' and 'bulk stopping'), but overall it is concise and well-organized.

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

Completeness4/5

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

Given the tool has no parameters and an output schema (likely documented elsewhere), the description covers the core behavior, return value, and usage scenarios. It doesn't mention limitations or side effects beyond what is implied, but for a simple action tool, it is sufficiently complete.

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

Parameters4/5

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

The tool has zero parameters, and the input schema is empty with 100% coverage. The description does not need to add parameter meaning, and it properly avoids mentioning non-existent parameters. Baseline 4 is appropriate.

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

Purpose5/5

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

The description clearly states the tool stops all services in an Ambari cluster, using the exact phrase 'Stop All' from the Ambari Web UI. It distinctively sets this tool apart from siblings like 'stop_service' (single service) and 'start_all_services' (opposite action).

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

Usage Guidelines4/5

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

The description explicitly lists required usage scenarios like 'stop all services', 'stop everything', and 'cluster shutdown', making it clear when to use. It does not explicitly exclude other scenarios, but the context implies it should not be used for stopping individual services.

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

stop_host_componentA

Stops a specific component on a specific host in the Ambari cluster.

[Tool Role]: Dedicated tool for stopping individual host-level components, enabling fine-grained control without affecting other hosts or the overall service.

[Core Functions]:

  • Stop the specified component on the given host

  • Skip if the component is already in INSTALLED (stopped) state

  • Return request information for progress tracking

[Required Usage Scenarios]:

  • When users request to stop a component on a specific host (e.g., "stop DataNode on host-A")

  • When decommissioning or isolating a specific node's component

  • When troubleshooting a single component instance

Args: host_name: Hostname where the component resides (e.g., "hdp-node-01.example.com") component_name: Name of the component to stop (e.g., "DATANODE", "NODEMANAGER")

Returns: Stop operation result (success: request info, failure: error message)

ParametersJSON Schema
NameRequiredDescriptionDefault
host_nameYes
component_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses that it skips if the component is already in INSTALLED state and returns request info for progress tracking. However, it doesn't detail authorization needs or side effects beyond stopping the component.

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

Conciseness4/5

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

The description is well-structured with clear sections (Tool Role, Core Functions, etc.) and is front-loaded with the main purpose. However, there is some redundancy (first sentence restated in Tool Role), and it could be slightly more concise.

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

Completeness4/5

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

Given the simple input schema (two strings) and existence of output schema, the description provides adequate context. It covers core functions and usage scenarios, though could mention error handling or prerequisites like host existence. Overall, it is fairly complete for a straightforward tool.

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

Parameters4/5

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

Schema coverage is 0%, so description adds significant value: host_name is defined as 'Hostname where the component resides' with an example, and component_name as 'Name of the component to stop' with examples like 'DATANODE'. This compensates for the lack of schema descriptions.

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

Purpose5/5

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

The description clearly states the tool stops a specific component on a host, using specific verbs and resources. It distinguishes from sibling tools like 'start_host_component' and 'restart_host_component', and provides examples like 'stop DataNode on host-A'.

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

Usage Guidelines5/5

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

The 'Required Usage Scenarios' section explicitly states when to use, e.g., when users request to stop a component on a specific host, decommissioning, or troubleshooting. It contrasts with broader service-level operations, and mentions the skip-if-already-stopped behavior.

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

stop_serviceA

Stops a specific service in the Ambari cluster.

[Tool Role]: Dedicated tool for automated stop of Ambari services, ensuring safe and monitored shutdown.

[Core Functions]:

  • Stop the specified service and initiate Ambari request

  • Return request information for progress tracking

  • Provide clear success or error message for LLM automation

[Required Usage Scenarios]:

  • When users request to "stop" a service (e.g., "stop HDFS", "stop YARN")

  • When maintenance or troubleshooting requires a service shutdown

  • When users mention service stop, shutdown, or automated stop

Args: service_name: Name of the service to stop (e.g., "HDFS", "YARN", "HBASE")

Returns: Stop operation result (success: request info, failure: error message) - Success: Multi-line string with request ID, status, monitor URL, and instructions for progress tracking - Failure: English error message describing the problem

ParametersJSON Schema
NameRequiredDescriptionDefault
service_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

No annotations are provided, so the description fully carries the burden. It details behavioral traits including safe and monitored shutdown, return of request info for progress tracking, and clear success/error messages.

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

Conciseness4/5

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

The description is well-structured with sections like [Tool Role] and [Core Functions], but it is somewhat verbose. It front-loads the purpose effectively.

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

Completeness5/5

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

Given the single parameter and presence of output schema (mentioned in description), the description fully explains the return value structure and covers all necessary context for a stop operation.

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

Parameters5/5

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

The single parameter service_name has 0% schema description coverage. The description adds meaning by stating it is the name of the service to stop and provides examples (e.g., HDFS, YARN).

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

Purpose5/5

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

The description clearly states it stops a specific service in the Ambari cluster, using the verb 'stops' and the resource 'service'. It distinguishes from siblings like start_service and restart_service.

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

Usage Guidelines5/5

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

The description explicitly lists required usage scenarios such as when users request to stop a service or during maintenance, providing clear guidance on when to use this tool.

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

Tool Schema Changelog

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

  1. 30 tool updatesv3.7.5
    • Changeddump_configurations10 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / config_type / title
        Removed value: -"Config Type"
      • removedInput schema / properties / filter / title
        Removed value: -"Filter"
      • removedInput schema / properties / include_values / title
        Removed value: -"Include Values"
      • removedInput schema / properties / limit / title
        Removed value: -"Limit"
      • removedInput schema / properties / max_chars / title
        Removed value: -"Max Chars"
      • removedInput schema / properties / service_filter / title
        Removed value: -"Service Filter"
      • removedInput schema / properties / summarize / title
        Removed value: -"Summarize"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedget_active_requests3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedget_alerts_history17 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / cluster_name / title
        Removed value: -"Cluster Name"
      • removedInput schema / properties / definition_name / title
        Removed value: -"Definition Name"
      • removedInput schema / properties / format / title
        Removed value: -"Format"
      • removedInput schema / properties / from_timestamp / title
        Removed value: -"From Timestamp"
      • removedInput schema / properties / host_name / title
        Removed value: -"Host Name"
      • removedInput schema / properties / include_time_context / title
        Removed value: -"Include Time Context"
      • removedInput schema / properties / limit / title
        Removed value: -"Limit"
      • removedInput schema / properties / maintenance_state / title
        Removed value: -"Maintenance State"
      • removedInput schema / properties / mode / title
        Removed value: -"Mode"
      • removedInput schema / properties / page_size / title
        Removed value: -"Page Size"
      • removedInput schema / properties / service_name / title
        Removed value: -"Service Name"
      • removedInput schema / properties / start_page / title
        Removed value: -"Start Page"
      • removedInput schema / properties / state_filter / title
        Removed value: -"State Filter"
      • removedInput schema / properties / to_timestamp / title
        Removed value: -"To Timestamp"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedget_cluster_info3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedget_cluster_services3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedget_current_alerts10 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / cluster_name / title
        Removed value: -"Cluster Name"
      • removedInput schema / properties / definition_name / title
        Removed value: -"Definition Name"
      • removedInput schema / properties / format / title
        Removed value: -"Format"
      • removedInput schema / properties / host_name / title
        Removed value: -"Host Name"
      • removedInput schema / properties / maintenance_state / title
        Removed value: -"Maintenance State"
      • removedInput schema / properties / service_name / title
        Removed value: -"Service Name"
      • removedInput schema / properties / state_filter / title
        Removed value: -"State Filter"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedget_host_details4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / host_name / title
        Removed value: -"Host Name"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedget_prompt_template5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / mode / title
        Removed value: -"Mode"
      • removedInput schema / properties / section / title
        Removed value: -"Section"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedget_request_status4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / request_id / title
        Removed value: -"Request Id"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Addedget_request_tasks
    • Changedget_service_components4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / service_name / title
        Removed value: -"Service Name"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedget_service_details4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / service_name / title
        Removed value: -"Service Name"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedget_service_status4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / service_name / title
        Removed value: -"Service Name"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedget_user4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / user_name / title
        Removed value: -"User Name"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedhdfs_dfadmin_report5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / cluster_name / title
        Removed value: -"Cluster Name"
      • removedInput schema / properties / lookback_minutes / title
        Removed value: -"Lookback Minutes"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedlist_ambari_metric_apps6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / include_counts / title
        Removed value: -"Include Counts"
      • removedInput schema / properties / limit / title
        Removed value: -"Limit"
      • removedInput schema / properties / refresh / title
        Removed value: -"Refresh"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedlist_ambari_metrics_metadata9 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / app_id / title
        Removed value: -"App Id"
      • removedInput schema / properties / host_filter / title
        Removed value: -"Host Filter"
      • removedInput schema / properties / include_dimensions / title
        Removed value: -"Include Dimensions"
      • removedInput schema / properties / limit / title
        Removed value: -"Limit"
      • removedInput schema / properties / metric_name_filter / title
        Removed value: -"Metric Name Filter"
      • removedInput schema / properties / search / title
        Removed value: -"Search"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedlist_common_metrics_catalog8 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / app_id / title
        Removed value: -"App Id"
      • removedInput schema / properties / include_description / title
        Removed value: -"Include Description"
      • removedInput schema / properties / limit / title
        Removed value: -"Limit"
      • removedInput schema / properties / min_score / title
        Removed value: -"Min Score"
      • removedInput schema / properties / search / title
        Removed value: -"Search"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedlist_hosts3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedlist_users3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedquery_ambari_metrics15 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / app_id / title
        Removed value: -"App Id"
      • removedInput schema / properties / duration / title
        Removed value: -"Duration"
      • removedInput schema / properties / end_time / title
        Removed value: -"End Time"
      • removedInput schema / properties / group_by_host / title
        Removed value: -"Group By Host"
      • removedInput schema / properties / hostnames / title
        Removed value: -"Hostnames"
      • removedInput schema / properties / include_points / title
        Removed value: -"Include Points"
      • removedInput schema / properties / max_points / title
        Removed value: -"Max Points"
      • removedInput schema / properties / metric_names / title
        Removed value: -"Metric Names"
      • removedInput schema / properties / precision / title
        Removed value: -"Precision"
      • removedInput schema / properties / start_time / title
        Removed value: -"Start Time"
      • removedInput schema / properties / temporal_aggregator / title
        Removed value: -"Temporal Aggregator"
      • removedInput schema / properties / temporal_granularity / title
        Removed value: -"Temporal Granularity"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedrestart_all_services3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Addedrestart_host_component
    • Changedrestart_service4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / service_name / title
        Removed value: -"Service Name"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedstart_all_services3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Addedstart_host_component
    • Changedstart_service4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / service_name / title
        Removed value: -"Service Name"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Changedstop_all_services3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
    • Addedstop_host_component
    • Changedstop_service4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / service_name / title
        Removed value: -"Service Name"
      • removedOutput schema / properties / result / title
        Removed value: -"Result"
      • removedOutput schema / title
        Removed value: -"_WrappedResult"
  2. 5 tool updatesv1.0.0
    • Addedhdfs_dfadmin_report
    • Addedlist_ambari_metric_apps
    • Addedlist_ambari_metrics_metadata
    • Addedlist_common_metrics_catalog
    • Addedquery_ambari_metrics
  3. 21 tool updates
    • First observeddump_configurations
    • First observedget_active_requests
    • First observedget_alerts_history
    • First observedget_cluster_info
    • First observedget_cluster_services
    • First observedget_current_alerts
    • First observedget_host_details
    • First observedget_prompt_template
    • First observedget_request_status
    • First observedget_service_components
    • First observedget_service_details
    • First observedget_service_status
    • First observedget_user
    • First observedlist_hosts
    • First observedlist_users
    • First observedrestart_all_services
    • First observedrestart_service
    • First observedstart_all_services
    • First observedstart_service
    • First observedstop_all_services
    • First observedstop_service

TDQS

A3.5/5.0
Disambiguation3/5

Most tools have distinct purposes, but there is significant overlap in some areas. For example, get_service_status, get_service_details, and get_service_components all relate to service information, which could cause confusion. Additionally, get_alerts_history and get_current_alerts (deprecated) overlap, though the deprecation helps. The tools are generally scoped to different resources or actions, but the service-related tools are ambiguous.

Naming Consistency4/5

The majority of tools follow a consistent verb_noun pattern (e.g., get_cluster_info, list_hosts, restart_service), which is clear and predictable. However, there are a few deviations like hdfs_dfadmin_report and list_ambari_metric_apps that use different conventions, slightly breaking consistency. Overall, the naming is mostly uniform and readable.

Tool Count3/5

With 26 tools, the count is on the higher side for an Ambari API server, which might feel heavy but is reasonable given the domain's complexity. It covers monitoring, management, and metrics, but some tools could potentially be consolidated (e.g., service-related tools). The count is borderline, as it approaches the upper limit of what's typical for a well-scoped server.

Completeness4/5

The tool set provides comprehensive coverage for Ambari cluster management, including monitoring (alerts, metrics, requests), service control (start/stop/restart), and information retrieval (cluster, hosts, services, users). Minor gaps exist, such as no explicit tool for creating or deleting services or users, but core operations are well-covered, and agents can likely work around these omissions.

Maintenance

ActivitySlowing
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

  • A
    license
    C
    quality
    A
    maintenance
    Monitor and manage Apache Airflow clusters through natural language queries via MCP tools: DAG inspection, task monitoring, health checks, and cluster analytics without API complexity. * Guide: https://call518.medium.com/mcp-airflow-api-a-model-context-protocol-mcp-server-for-apache-airflow-5dfdfb2
    54
    51
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to manage Apache Ambari clusters, including services, hosts, alerts, and configurations via the MCP protocol.
    40
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for interacting with QUADS infrastructure systems via API, enabling resource management and automation through LLM applications.
    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/call518/MCP-Ambari-API'

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