MCP-Ambari-API
The MCP-Ambari-API server provides a powerful natural language interface to automate Apache Ambari operations for comprehensive Hadoop cluster management via AI/LLM tools.
Cluster Management: Retrieve cluster information, status, and track active operations and request progress
Service Operations: Start, stop, and restart individual Hadoop services (HDFS, YARN, Spark, HBase, etc.) or all services simultaneously, with real-time status monitoring
Configuration Management: Unified configuration introspection, filtering, and bulk operations across all service types
Host Management: List hosts and retrieve detailed information including hardware metrics, component states, and service assignments
User Management: List users and retrieve detailed profiles, permissions, and authentication information
Alert Management: Retrieve current and historical alerts with advanced filtering by state, service, host, time range, and maintenance status
AI/LLM Integration: Natural language interface designed for seamless integration with modern AI workflows
Flexible Deployment: Supports both local (
stdio) and remote (streamable-http) connection modes
Provides comprehensive management of Apache Hadoop clusters through Ambari API, enabling service control (start/stop/restart HDFS, YARN, Spark, etc.), configuration management, real-time monitoring, alert management, host administration, and user management via natural language commands.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP-Ambari-APIshow me the status of all HDFS services"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.
Architecture & Internal (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


π QuickStart Guide /w Docker
Note: The following instructions assume you are using the
streamable-httpmode for MCP Server.
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

2. Run Docker-Compose
Start the MCP-Server, MCPO(MCP-Proxy for OpenAPI), and OpenWebUI.
Ensure Docker and Docker Compose are installed on your system.
Clone this repository and navigate to its root directory.
Set up environment configuration:
# Copy environment template and configure your settings cp .env.example .env # Edit .env with your Ambari cluster informationConfigure your Ambari connection in
.envfile:# 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-hereRun:
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

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.
logging in to OpenWebUI with an admin account
go to "Settings" β "Tools" from the top menu.
Enter the
mcp-ambari-apiTool 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 Query - Restart HDFS Service

π Metrics & Trends
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). Usesearch="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 AMSappIdvalues, optionally including metric counts; passrefresh=trueorlimitto control output.
Example: βList every appId currently exposed by AMS.βThe natural-language query βAMSμμ μ¬μ© κ°λ₯ν appId λͺ©λ‘λ§ λ³΄μ¬μ€β maps to
list_ambari_metric_appsand returns the exact identifiers you can copy into other tools.list_ambari_metrics_metadata: raw AMS metadata explorer (supportsapp_id,metric_name_filter,host_filter,search, adjustablelimit, 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 supplyprecision="SECONDS", etc.
Examples: βPlot the last 30 minutes ofjvm.JvmMetrics.MemHeapUsedMfor the NameNode.β / βComparejvm.JvmMetrics.MemHeapUsedMfor DataNode hostsbigtop-hostname0.demo.localandbigtop-hostname1.demo.localover the past 30 minutes.βhdfs_dfadmin_report: produce a DFSAdmin-style capacity/DataNode summary (mirrorshdfs dfsadmin -report).
Live Metric Catalog (via AMS metadata)
Metric names are discovered on demand from
/ws/v1/timeline/metrics/metadataand cached for quick reuse.Use
list_common_metrics_catalogor theambari-metrics://catalog/allresource (append?refresh=trueto bypass the cache) to inspect the latestappId β metricmapping. Queryambari-metrics://catalog/appsto list appIds orambari-metrics://catalog/<appId>for a single app.Typical appIds include
ambari_server,namenode,datanode,nodemanager,resourcemanager, andHOST, 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:
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.Specify exact metric names. Use
list_common_metrics_catalog(app_id="<target>", search="keyword"),list_ambari_metric_apps(to discover appIds), or theambari-metrics://catalog/<appId>resource to browse the live per-app metric set and copy the identifier (e.g.,jvm.JvmMetrics.MemHeapUsedM).Host-scope behavior: When
hostnamesis omitted the API returns cluster-wide aggregates. Provide one or more hosts (comma-separated) to focus on specific nodes.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 (stdioorstreamable-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 |
| Python module search path for MCP server imports | - |
|
| Server logging verbosity (DEBUG, INFO, WARNING, ERROR) |
|
|
| MCP transport protocol (stdio for CLI, streamable-http for web) |
|
|
| HTTP server bind address (0.0.0.0 for all interfaces) |
|
|
| HTTP server port for MCP communication |
|
|
| Enable Bearer token authentication for streamable-http modeDefault: false (if undefined, empty, or null) |
|
|
| Secret key for Bearer token authenticationRequired when REMOTE_AUTH_ENABLE=true | - |
|
| Ambari server hostname or IP address |
|
|
| Ambari server port number |
|
|
| Username for Ambari server authentication |
|
|
| Password for Ambari server authentication |
|
|
| Name of the target Ambari cluster |
|
|
| Host port mapping for Open WebUI container |
|
|
| Host port mapping for MCP server container |
|
|
| Host port mapping for MCPO proxy container |
|
|
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 18001Environment Priority:
FASTMCP_TYPE=streamable-http FASTMCP_HOST=0.0.0.0 FASTMCP_PORT=18001Legacy Support:
FASTMCP_PORT=18001(automatically enables streamable-http mode)Default:
stdiomode 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-hereOr via CLI:
python -m mcp_ambari_api --type streamable-http --auth-enable --secret-key your-secure-secret-key-hereSecurity Levels
stdio mode (Default): Local-only access, no authentication needed
streamable-http + REMOTE_AUTH_ENABLE=false/undefined: Remote access without authentication β οΈ NOT RECOMMENDED for production
streamable-http + REMOTE_AUTH_ENABLE=true: Remote access with Bearer token authentication β RECOMMENDED for production
π Default Policy:
REMOTE_AUTH_ENABLEdefaults tofalseif 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"
}
}
}
}
(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 statusget_active_requests- List currently active/running operationsget_request_status- Check status and progress of specific requestsget_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 statusget_service_status- Get detailed status of a specific serviceget_service_components- List components and host assignments for a serviceget_service_details- Get comprehensive service informationstart_service- Start a specific servicestop_service- Stop a specific servicerestart_service- Restart a specific servicestart_all_services- Start all services in the clusterstop_all_services- Stop all services in the clusterrestart_all_services- Restart all services in the cluster
Configuration Tools
dump_configurations- Unified configuration tool (replacesget_configurations,list_configurations, and the former internaldump_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_configurationsandlist_configurationswere removed in favor of this single, more capable tool.
Host Management
list_hosts- List all hosts in the clusterget_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 linksget_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 statusCurrent 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 clusterScope 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
π Report Bugs: GitHub Issues
π‘ Request Features: Feature Requests
π§ Submit PRs: Contributing Guidelines
π Improve Docs: Help make documentation better
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 withnetworkingMode = 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 insights5. 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_tooldecorators for proper registration and loggingFollow 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 handlingValidate 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 toolsdump_configurationsDump ConfigurationsA
Unified configuration introspection tool (supersedes get_configurations & list_configurations & dump_all_configurations).
Modes:
Single type values: specify config_type=
Bulk list (optionally narrowed by service_filter substring in type name)
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
| Name | Required | Description | Default |
|---|---|---|---|
| config_type | No | ||
| service_filter | No | ||
| filter | No | ||
| summarize | No | ||
| include_values | No | ||
| limit | No | ||
| max_chars | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | current | |
| cluster_name | No | ||
| service_name | No | ||
| host_name | No | ||
| state_filter | No | ||
| definition_name | No | ||
| maintenance_state | No | ||
| from_timestamp | No | ||
| to_timestamp | No | ||
| include_time_context | No | ||
| limit | No | ||
| page_size | No | ||
| start_page | No | ||
| format | No | detailed |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cluster_name | No | ||
| service_name | No | ||
| host_name | No | ||
| state_filter | No | ||
| definition_name | No | ||
| maintenance_state | No | ||
| format | No | detailed |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| host_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| section | No | ||
| mode | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | ||
| status_filter | No | ||
| host_filter | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| service_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| service_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| service_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| user_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cluster_name | No | ||
| lookback_minutes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| refresh | No | ||
| include_counts | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | No | ||
| metric_name_filter | No | ||
| host_filter | No | ||
| search | No | ||
| limit | No | ||
| include_dimensions | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| app_id | No | ||
| search | No | ||
| limit | No | ||
| min_score | No | ||
| include_description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| metric_names | Yes | ||
| app_id | No | ||
| hostnames | No | ||
| duration | No | 1h | |
| start_time | No | ||
| end_time | No | ||
| precision | No | ||
| temporal_aggregator | No | ||
| temporal_granularity | No | ||
| group_by_host | No | ||
| include_points | No | ||
| max_points | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| host_name | Yes | ||
| component_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| service_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| host_name | Yes | ||
| component_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| service_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| host_name | Yes | ||
| component_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| service_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
30 tool updates
v3.7.5- Changed
dump_configurations10 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / config_type / titleRemoved value: -"Config Type" - removed
Input schema / properties / filter / titleRemoved value: -"Filter" - removed
Input schema / properties / include_values / titleRemoved value: -"Include Values" - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / max_chars / titleRemoved value: -"Max Chars" - removed
Input schema / properties / service_filter / titleRemoved value: -"Service Filter" - removed
Input schema / properties / summarize / titleRemoved value: -"Summarize" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_active_requests3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_alerts_history17 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / cluster_name / titleRemoved value: -"Cluster Name" - removed
Input schema / properties / definition_name / titleRemoved value: -"Definition Name" - removed
Input schema / properties / format / titleRemoved value: -"Format" - removed
Input schema / properties / from_timestamp / titleRemoved value: -"From Timestamp" - removed
Input schema / properties / host_name / titleRemoved value: -"Host Name" - removed
Input schema / properties / include_time_context / titleRemoved value: -"Include Time Context" - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / maintenance_state / titleRemoved value: -"Maintenance State" - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - removed
Input schema / properties / page_size / titleRemoved value: -"Page Size" - removed
Input schema / properties / service_name / titleRemoved value: -"Service Name" - removed
Input schema / properties / start_page / titleRemoved value: -"Start Page" - removed
Input schema / properties / state_filter / titleRemoved value: -"State Filter" - removed
Input schema / properties / to_timestamp / titleRemoved value: -"To Timestamp" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_cluster_info3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_cluster_services3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_current_alerts10 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / cluster_name / titleRemoved value: -"Cluster Name" - removed
Input schema / properties / definition_name / titleRemoved value: -"Definition Name" - removed
Input schema / properties / format / titleRemoved value: -"Format" - removed
Input schema / properties / host_name / titleRemoved value: -"Host Name" - removed
Input schema / properties / maintenance_state / titleRemoved value: -"Maintenance State" - removed
Input schema / properties / service_name / titleRemoved value: -"Service Name" - removed
Input schema / properties / state_filter / titleRemoved value: -"State Filter" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_host_details4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / host_name / titleRemoved value: -"Host Name" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_prompt_template5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / mode / titleRemoved value: -"Mode" - removed
Input schema / properties / section / titleRemoved value: -"Section" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_request_status4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / request_id / titleRemoved value: -"Request Id" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Added
get_request_tasks - Changed
get_service_components4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / service_name / titleRemoved value: -"Service Name" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_service_details4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / service_name / titleRemoved value: -"Service Name" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_service_status4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / service_name / titleRemoved value: -"Service Name" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
get_user4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / user_name / titleRemoved value: -"User Name" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
hdfs_dfadmin_report5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / cluster_name / titleRemoved value: -"Cluster Name" - removed
Input schema / properties / lookback_minutes / titleRemoved value: -"Lookback Minutes" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
list_ambari_metric_apps6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / include_counts / titleRemoved value: -"Include Counts" - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / refresh / titleRemoved value: -"Refresh" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
list_ambari_metrics_metadata9 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / app_id / titleRemoved value: -"App Id" - removed
Input schema / properties / host_filter / titleRemoved value: -"Host Filter" - removed
Input schema / properties / include_dimensions / titleRemoved value: -"Include Dimensions" - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / metric_name_filter / titleRemoved value: -"Metric Name Filter" - removed
Input schema / properties / search / titleRemoved value: -"Search" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
list_common_metrics_catalog8 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / app_id / titleRemoved value: -"App Id" - removed
Input schema / properties / include_description / titleRemoved value: -"Include Description" - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / min_score / titleRemoved value: -"Min Score" - removed
Input schema / properties / search / titleRemoved value: -"Search" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
list_hosts3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
list_users3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
query_ambari_metrics15 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / app_id / titleRemoved value: -"App Id" - removed
Input schema / properties / duration / titleRemoved value: -"Duration" - removed
Input schema / properties / end_time / titleRemoved value: -"End Time" - removed
Input schema / properties / group_by_host / titleRemoved value: -"Group By Host" - removed
Input schema / properties / hostnames / titleRemoved value: -"Hostnames" - removed
Input schema / properties / include_points / titleRemoved value: -"Include Points" - removed
Input schema / properties / max_points / titleRemoved value: -"Max Points" - removed
Input schema / properties / metric_names / titleRemoved value: -"Metric Names" - removed
Input schema / properties / precision / titleRemoved value: -"Precision" - removed
Input schema / properties / start_time / titleRemoved value: -"Start Time" - removed
Input schema / properties / temporal_aggregator / titleRemoved value: -"Temporal Aggregator" - removed
Input schema / properties / temporal_granularity / titleRemoved value: -"Temporal Granularity" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
restart_all_services3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Added
restart_host_component - Changed
restart_service4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / service_name / titleRemoved value: -"Service Name" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
start_all_services3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Added
start_host_component - Changed
start_service4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / service_name / titleRemoved value: -"Service Name" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Changed
stop_all_services3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
- Added
stop_host_component - Changed
stop_service4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / service_name / titleRemoved value: -"Service Name" - removed
Output schema / properties / result / titleRemoved value: -"Result" - removed
Output schema / titleRemoved value: -"_WrappedResult"
5 tool updates
v1.0.0- Added
hdfs_dfadmin_report - Added
list_ambari_metric_apps - Added
list_ambari_metrics_metadata - Added
list_common_metrics_catalog - Added
query_ambari_metrics
21 tool updates
- First observed
dump_configurations - First observed
get_active_requests - First observed
get_alerts_history - First observed
get_cluster_info - First observed
get_cluster_services - First observed
get_current_alerts - First observed
get_host_details - First observed
get_prompt_template - First observed
get_request_status - First observed
get_service_components - First observed
get_service_details - First observed
get_service_status - First observed
get_user - First observed
list_hosts - First observed
list_users - First observed
restart_all_services - First observed
restart_service - First observed
start_all_services - First observed
start_service - First observed
stop_all_services - First observed
stop_service
TDQS
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.
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.
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.
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
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
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Related MCP Servers
- AlicenseCqualityAmaintenanceMonitor 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-5dfdfb25451MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to manage Apache Ambari clusters, including services, hosts, alerts, and configurations via the MCP protocol.401Apache 2.0
- AlicenseAqualityBmaintenanceMCP server exposing Apache Airflow REST API operations as tools β list DAGs, inspect runs and task instances, trigger DAG runs, and check failed DAGs and scheduler health72MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for interacting with QUADS infrastructure systems via API, enabling resource management and automation through LLM applications.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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