MCP-Airflow-API
The MCP-Airflow-API server is a Model Context Protocol (MCP) server that enables natural language monitoring and management of Apache Airflow clusters through LLM integration, translating Airflow REST API operations into intuitive tools.
Core Capabilities: • Natural Language Integration - Query Airflow using plain English and seamlessly integrate with LLMs • Comprehensive Monitoring - Access real-time cluster health, DAG status, performance analytics, and execution details • DAG Management - List, trigger, pause/unpause DAGs; retrieve running/failed runs, source code, and dependency graphs • Task Instance Management - Filter and retrieve task instances, access logs, extra links, and execution details • Resource Management - Manage Airflow pools, variables, connections, and XCom entries with full CRUD operations • Performance Analysis - Analyze DAG run durations, task execution times, and retrieve schedule information • Event & Error Tracking - Access event logs, import errors, and summary statistics across all DAGs • System Health - Check Airflow webserver health status and version information • Developer Tools - Access prompt templates for effective tool selection, paginated responses for large environments, and Docker integration for containerized deployment
Provides comprehensive monitoring and management of Apache Airflow clusters through natural language queries, including DAG inspection, task monitoring, health checks, cluster analytics, pool management, variable management, XCom operations, and event logging without requiring direct API complexity.
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-Airflow-APIshow me currently running DAGs"
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-Airflow-API
Revolutionary Open Source Tool for Managing Apache Airflow with Natural Language
Architecture & Internal (DeepWiki)
Related MCP server: Airflow MCP
📋 Overview
Have you ever wondered how amazing it would be if you could manage your Apache Airflow workflows using natural language instead of complex REST API calls or web interface manipulations? MCP-Airflow-API is the revolutionary open-source project that makes this goal a reality.

🎯 What is MCP-Airflow-API?
MCP-Airflow-API is an MCP server that leverages the Model Context Protocol (MCP) to transform Apache Airflow REST API operations into natural language tools. This project hides the complexity of API structures and enables intuitive management of Airflow clusters through natural language commands.
🆕 Multi-Version API Support (NEW!)
Now supports both Airflow API v1 (2.x) and v2 (3.0+) with dynamic version selection via environment variable:
API v1: Full compatibility with Airflow 2.x clusters (43 tools) - Documentation
API v2: Enhanced features for Airflow 3.0+ including asset management for data-aware scheduling (45 tools) - Documentation
Key Architecture: Single MCP server with shared common tools (43) plus v2-exclusive asset tools (2) - dynamically loads appropriate toolset based on AIRFLOW_API_VERSION environment variable!
Traditional approach (example):
curl -X GET "http://localhost:8080/api/v1/dags?limit=100&offset=0" \
-H "Authorization: Basic YWlyZmxvdzphaXJmbG93"MCP-Airflow-API approach (natural language):
"Show me the currently running DAGs"
🚀 Quickstart
📝 Need a test Airflow cluster? Use our companion project Airflow-Docker-Compose with support for both Airflow 2.x and Airflow 3.x environments!
Flow Diagram of Quickstart/Tutorial

🎯 Recommended: Docker Compose (Complete Demo Environment)
For quick evaluation and testing:
git clone https://github.com/call518/MCP-Airflow-API.git
cd MCP-Airflow-API
# Configure your Airflow credentials
cp .env.example .env
# Edit .env with your Airflow API settings
# Start all services
docker-compose up -d
# Access OpenWebUI at http://localhost:3002/
# API documentation at http://localhost:8002/docsGetting Started with OpenWebUI (Docker Option)
📌 Note: Web-UI configuration instructions are based on OpenWebUI v0.6.22. Menu locations and settings may differ in newer versions.
Access http://localhost:3002/
Log in with admin account
Go to "Settings" → "Tools" from the top menu
Add Tool URL:
http://localhost:8002/airflow-apiConfigure your LLM provider (Ollama, OpenAI, etc.)
📦 MCP Server Installation Methods
Method 1: Direct Installation from PyPI
uvx --python 3.12 mcp-airflow-apiMethod 2: Claude-Desktop MCP Client Integration
Local Access (stdio mode)
{
"mcpServers": {
"mcp-airflow-api": {
"command": "uvx",
"args": ["--python", "3.12", "mcp-airflow-api"],
"env": {
"AIRFLOW_API_VERSION": "v2",
"AIRFLOW_API_BASE_URL": "http://localhost:8080/api",
"AIRFLOW_API_USERNAME": "airflow",
"AIRFLOW_API_PASSWORD": "airflow"
}
}
}
}gitRemote Access (streamable-http mode without authentication)
{
"mcpServers": {
"mcp-airflow-api": {
"type": "streamable-http",
"url": "http://localhost:8000/mcp"
}
}
}Remote Access (streamable-http mode with Bearer token authentication - Recommended)
{
"mcpServers": {
"mcp-airflow-api": {
"type": "streamable-http",
"url": "http://localhost:8000/mcp",
"headers": {
"Authorization": "Bearer your-secure-secret-key-here"
}
}
}
}Multiple Airflow Clusters with Different Versions
{
"mcpServers": {
"airflow-2x-cluster": {
"command": "uvx",
"args": ["--python", "3.12", "mcp-airflow-api"],
"env": {
"AIRFLOW_API_VERSION": "v1",
"AIRFLOW_API_BASE_URL": "http://localhost:38080/api",
"AIRFLOW_API_USERNAME": "airflow",
"AIRFLOW_API_PASSWORD": "airflow"
}
},
"airflow-3x-cluster": {
"command": "uvx",
"args": ["--python", "3.12", "mcp-airflow-api"],
"env": {
"AIRFLOW_API_VERSION": "v2",
"AIRFLOW_API_BASE_URL": "http://localhost:48080/api",
"AIRFLOW_API_USERNAME": "airflow",
"AIRFLOW_API_PASSWORD": "airflow"
}
}
}
}💡 Pro Tip: Use the test clusters from Airflow-Docker-Compose for the above configuration - they run on ports 38080 (2.x) and 48080 (3.x) respectively!
Method 3: Development Installation
git clone https://github.com/call518/MCP-Airflow-API.git
cd MCP-Airflow-API
pip install -e .
# Run in stdio mode
python -m mcp_airflow_api🌟 Key Features
Natural Language Queries
No need to learn complex API syntax. Just ask as you would naturally speak:"What DAGs are currently running?"
"Show me the failed tasks"
"Find DAGs containing ETL"
Comprehensive Monitoring Capabilities
Real-time cluster status monitoring:Cluster health monitoring
DAG status and performance analysis
Task execution log tracking
XCom data management
Dynamic API Version Support
Single MCP server adapts to your Airflow version:API v1: 43 shared tools for Airflow 2.x compatibility
API v2: 43 shared tools + 2 asset management tools for Airflow 3.0+
Environment Variable Control: Switch versions instantly with
AIRFLOW_API_VERSIONZero Configuration Changes: Same tool names, enhanced capabilities
Efficient Architecture: Shared common codebase eliminates duplication
Comprehensive Tool Coverage
Covers almost all Airflow API functionality:DAG management (trigger, pause, resume)
Task instance monitoring
Pool and variable management
Connection configuration
Configuration queries
Event log analysis
Large Environment Optimization
Efficiently handles large environments with 1000+ DAGs:Smart pagination support
Advanced filtering options
Batch processing capabilities
🛠️ Technical Advantages
Leveraging Model Context Protocol (MCP)
MCP is an open standard for secure connections between AI applications and data sources, providing:Standardized interface
Secure data access
Scalable architecture
Support for Two Transport Modes
stdiomode: Direct MCP client integration for local environmentsstreamable-httpmode: HTTP-based deployment for Docker and remote access
Environment Variable Control:
FASTMCP_TYPE=stdio # Default: Direct MCP client mode FASTMCP_TYPE=streamable-http # Docker/HTTP mode FASTMCP_PORT=8000 # HTTP server port (Docker internal)Comprehensive Airflow API Coverage
Full implementation of official Airflow REST APIs:API v1 Support: Based on Airflow 2.x REST API
API v2 Support: Based on Airflow 3.0+ REST API
Dynamic Version Selection: Runtime switching between API versions
Feature Parity: Complete endpoint coverage for both versions
Complete Docker Support
Full Docker Compose setup with 3 separate services:Open WebUI: Web interface (port
3002)MCP Server: Airflow API tools (internal port
8000, exposed via18002)MCPO Proxy: REST API endpoint provider (port
8002)
Use Cases in Action

⚙️ Advanced Configuration
Environment Variables
# Required - Dynamic API Version Selection (NEW!)
# Single server supports both v1 and v2 - just change this variable!
AIRFLOW_API_VERSION=v1 # v1 for Airflow 2.x, v2 for Airflow 3.0+
AIRFLOW_API_BASE_URL=http://localhost:8080/api
# Test Cluster Connection Examples:
# For Airflow 2.x test cluster (from Airflow-Docker-Compose)
AIRFLOW_API_VERSION=v1
AIRFLOW_API_BASE_URL=http://localhost:38080/api
# For Airflow 3.x test cluster (from Airflow-Docker-Compose)
AIRFLOW_API_VERSION=v2
AIRFLOW_API_BASE_URL=http://localhost:48080/api
# Authentication
AIRFLOW_API_USERNAME=airflow
AIRFLOW_API_PASSWORD=airflow
# Optional - MCP Server Configuration
MCP_LOG_LEVEL=INFO # DEBUG/INFO/WARNING/ERROR/CRITICAL
FASTMCP_TYPE=stdio # stdio/streamable-http
FASTMCP_PORT=8000 # HTTP server port (Docker mode)
# Bearer Token Authentication for streamable-http mode
# Enable authentication (recommended for production)
# Default: false (when undefined, empty, or null)
# Values: true/false, 1/0, yes/no, on/off (case insensitive)
REMOTE_AUTH_ENABLE=false # true/false
REMOTE_SECRET_KEY=your-secure-secret-key-hereAPI Version Comparison
Official Documentation:
API v1: Airflow 2.x REST API Reference
API v2: Airflow 3.0+ REST API Reference
Feature | API v1 (Airflow 2.x) | API v2 (Airflow 3.0+) |
Total Tools | 43 tools | 45 tools |
Shared Tools | 43 (100%) | 43 (96%) |
Exclusive Tools | 0 | 2 (Asset Management) |
Basic DAG Operations | ✅ | ✅ Enhanced |
Task Management | ✅ | ✅ Enhanced |
Connection Management | ✅ | ✅ Enhanced |
Pool Management | ✅ | ✅ Enhanced |
Asset Management | ❌ | ✅ New |
Asset Events | ❌ | ✅ New |
Data-Aware Scheduling | ❌ | ✅ New |
Enhanced DAG Warnings | ❌ | ✅ New |
Advanced Filtering | Basic | ✅ Enhanced |
🔐 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_airflow_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: Remote access without authentication ⚠️ NOT RECOMMENDED for production
streamable-http + REMOTE_AUTH_ENABLE=true: Remote access with Bearer token authentication ✅ RECOMMENDED for production
Note:
REMOTE_AUTH_ENABLEdefaults tofalsewhen undefined, empty, or null. Supported values aretrue/false,1/0,yes/no,on/off(case insensitive).
Client Configuration
When authentication is enabled, MCP clients must include the Bearer token in the Authorization header:
{
"mcpServers": {
"mcp-airflow-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
Custom Docker Compose Setup
version: '3.8'
services:
mcp-server:
build:
context: .
dockerfile: Dockerfile.MCP-Server
environment:
- FASTMCP_PORT=8000
- AIRFLOW_API_VERSION=v1
- AIRFLOW_API_BASE_URL=http://your-airflow:8080/api
- AIRFLOW_API_USERNAME=airflow
- AIRFLOW_API_PASSWORD=airflowDevelopment Installation
git clone https://github.com/call518/MCP-Airflow-API.git
cd MCP-Airflow-API
pip install -e .
# Run in stdio mode
python -m mcp_airflow_api🧪 Test Airflow Cluster Deployment
For testing and development, use our companion project Airflow-Docker-Compose which supports both Airflow 2.x and 3.x environments.
Quick Setup
Clone the test environment repository:
git clone https://github.com/call518/Airflow-Docker-Compose.git cd Airflow-Docker-Compose
Option 1: Deploy Airflow 2.x (LTS)
For testing API v1 compatibility with stable production features:
# Navigate to Airflow 2.x environment
cd airflow-2.x
# (Optional) Customize environment variables
cp .env.template .env
# Edit .env file as needed
# Deploy Airflow 2.x cluster
./run-airflow-cluster.sh
# Access Web UI
# URL: http://localhost:38080
# Username: airflow / Password: airflowEnvironment details:
Image:
apache/airflow:2.10.2Port:
38080(configurable viaAIRFLOW_WEBSERVER_PORT)API:
/api/v1/*endpointsAuthentication: Basic Auth
Use case: Production-ready, stable features
Option 2: Deploy Airflow 3.x (Latest)
For testing API v2 with latest features including Assets management:
# Navigate to Airflow 3.x environment
cd airflow-3.x
# (Optional) Customize environment variables
cp .env.template .env
# Edit .env file as needed
# Deploy Airflow 3.x cluster
./run-airflow-cluster.sh
# Access API Server
# URL: http://localhost:48080
# Username: airflow / Password: airflowEnvironment details:
Image:
apache/airflow:3.0.6Port:
48080(configurable viaAIRFLOW_APISERVER_PORT)API:
/api/v2/*endpoints + Assets managementAuthentication: JWT Token (FabAuthManager)
Use case: Development, testing new features
Option 3: Deploy Both Versions Simultaneously
For comprehensive testing across different Airflow versions:
# Start Airflow 2.x (port 38080)
cd airflow-2.x && ./run-airflow-cluster.sh
# Start Airflow 3.x (port 48080)
cd ../airflow-3.x && ./run-airflow-cluster.shKey Differences
Feature | Airflow 2.x | Airflow 3.x |
Authentication | Basic Auth | JWT Tokens (FabAuthManager) |
Default Port | 38080 | 48080 |
API Endpoints |
|
|
Assets Support | ❌ Limited/Experimental | ✅ Full Support |
Provider Packages | providers | distributions |
Stability | ✅ Production Ready | 🧪 Beta/Development |
Cleanup
To stop and clean up the test environments:
# For Airflow 2.x
cd airflow-2.x && ./cleanup-airflow-cluster.sh
# For Airflow 3.x
cd airflow-3.x && ./cleanup-airflow-cluster.sh🌈 Future-Ready Architecture
Scalable design and modular structure for easy addition of new features
Standards-compliant protocol for integration with other tools
Cloud-native operations and LLM-ready interface
Context-aware query processing and automated workflow management capabilities
🎯 Who Is This Tool For?
Data Engineers — Reduce debugging time, improve productivity, minimize learning curve
DevOps Engineers — Automate infrastructure monitoring, reduce incident response time
System Administrators — User-friendly management without complex APIs, real-time cluster status monitoring
🚀 Open Source Contribution and Community
Repository: https://github.com/call518/MCP-Airflow-API
How to Contribute
Bug reports and feature suggestions
Documentation improvements
Code contributions
Please consider starring the project if you find it useful.
🔮 Conclusion
MCP-Airflow-API changes the paradigm of data engineering and workflow management:
No need to memorize REST API calls — just ask in natural language:
"Show me the status of currently running ETL jobs."
🏷️ Tags
#Apache-Airflow #MCP #ModelContextProtocol #DataEngineering #DevOps #WorkflowAutomation #NaturalLanguage #OpenSource #Python #Docker #AI-Integration
📚 Example Queries & Use Cases
This section provides comprehensive examples of how to use MCP-Airflow-API tools with natural language queries.
Basic DAG Operations
list_dags: "List all DAGs with limit 10 in a table format." → Returns up to 10 DAGs
list_dags: "List all DAGs a table format." → Returns up to All DAGs (WARN: Need High Tokens)
list_dags: "Show next page of DAGs." → Use offset for pagination
list_dags: "List DAGs 21-40." →
list_dags(limit=20, offset=20)list_dags: "Filter DAGs whose ID contains 'tutorial'." →
list_dags(id_contains="etl")list_dags: "Filter DAGs whose display name contains 'tutorial'." →
list_dags(name_contains="daily")get_dags_detailed_batch: "Get detailed information for all DAGs with execution status." →
get_dags_detailed_batch(fetch_all=True)get_dags_detailed_batch: "Get details for active, unpaused DAGs with recent runs." →
get_dags_detailed_batch(is_active=True, is_paused=False)get_dags_detailed_batch: "Get detailed info for DAGs containing 'example' with run history." →
get_dags_detailed_batch(id_contains="example", limit=50)running_dags: "Show running DAGs."
failed_dags: "Show failed DAGs."
trigger_dag: "Trigger DAG 'example_complex'."
pause_dag: "Pause DAG 'example_complex' in a table format."
unpause_dag: "Unpause DAG 'example_complex' in a table format."
Cluster Management & Health
get_health: "Check Airflow cluster health."
get_version: "Get Airflow version information."
Pool Management
list_pools: "List all pools."
list_pools: "Show pool usage statistics."
get_pool: "Get details for pool 'default_pool'."
get_pool: "Check pool utilization."
Variable Management
list_variables: "List all variables."
list_variables: "Show all Airflow variables with their values."
get_variable: "Get variable 'database_url'."
get_variable: "Show the value of variable 'api_key'."
Task Instance Management
list_task_instances_all: "List all task instances for DAG 'example_complex'."
list_task_instances_all: "Show running task instances."
list_task_instances_all: "Show task instances filtered by pool 'default_pool'."
list_task_instances_all: "List task instances with duration greater than 300 seconds."
list_task_instances_all: "Show failed task instances from last week."
list_task_instances_all: "List failed task instances from yesterday."
list_task_instances_all: "Show task instances that started after 9 AM today."
list_task_instances_all: "List task instances from the last 3 days with state 'failed'."
get_task_instance_details: "Get details for task 'data_processing' in DAG 'example_complex' run 'scheduled__xxxxx'."
list_task_instances_batch: "List failed task instances from last month."
list_task_instances_batch: "Show task instances in batch for multiple DAGs from this week."
get_task_instance_extra_links: "Get extra links for task 'data_processing' in latest run."
get_task_instance_logs: "Retrieve logs for task 'create_entry_gcs' try number 2 of DAG 'example_complex'."
XCom Management
list_xcom_entries: "List XCom entries for task 'data_processing' in DAG 'example_complex' run 'scheduled__xxxxx'."
list_xcom_entries: "Show all XCom entries for task 'data_processing' in latest run."
get_xcom_entry: "Get XCom entry with key 'result' for task 'data_processing' in specific run."
get_xcom_entry: "Retrieve XCom value for key 'processed_count' from task 'data_processing'."
Configuration Management
get_config: "Show all Airflow configuration sections and options." → Returns complete config or 403 if expose_config=False
list_config_sections: "List all configuration sections with summary information."
get_config_section: "Get all settings in 'core' section." →
get_config_section("core")get_config_section: "Show webserver configuration options." →
get_config_section("webserver")search_config_options: "Find all database-related configuration options." →
search_config_options("database")search_config_options: "Search for timeout settings in configuration." →
search_config_options("timeout")
Important: Configuration tools require expose_config = True in airflow.cfg [webserver] section. Even admin users get 403 errors if this is disabled.
DAG Analysis & Monitoring
get_dag: "Get details for DAG 'example_complex'."
get_dags_detailed_batch: "Get comprehensive details for all DAGs with execution history." →
get_dags_detailed_batch(fetch_all=True)get_dags_detailed_batch: "Get details for active DAGs with latest run information." →
get_dags_detailed_batch(is_active=True)get_dags_detailed_batch: "Get detailed info for ETL DAGs with recent execution data." →
get_dags_detailed_batch(id_contains="etl")
Note: get_dags_detailed_batch returns each DAG with both configuration details (from get_dag()) and a latest_dag_run field containing the most recent execution information (run_id, state, execution_date, start_date, end_date, etc.).
dag_graph: "Show task graph for DAG 'example_complex'."
list_tasks: "List all tasks in DAG 'example_complex'."
dag_code: "Get source code for DAG 'example_complex'."
list_event_logs: "List event logs for DAG 'example_complex'."
list_event_logs: "Show event logs with ID from yesterday for all DAGs."
get_event_log: "Get event log entry with ID 12345."
all_dag_event_summary: "Show event count summary for all DAGs."
list_import_errors: "List import errors with ID."
get_import_error: "Get import error with ID 67890."
all_dag_import_summary: "Show import error summary for all DAGs."
dag_run_duration: "Get run duration stats for DAG 'example_complex'."
dag_task_duration: "Show latest run of DAG 'example_complex'."
dag_task_duration: "Show task durations for latest run of 'manual__xxxxx'."
dag_calendar: "Get calendar info for DAG 'example_complex' from last month."
dag_calendar: "Show DAG schedule for 'example_complex' from this week."
Date Calculation Examples
Tools automatically base relative date calculations on the server's current date/time:
User Input | Calculation Method | Example Format |
"yesterday" | current_date - 1 day | YYYY-MM-DD (1 day before current) |
"last week" | current_date - 7 days to current_date - 1 day | YYYY-MM-DD to YYYY-MM-DD (7 days range) |
"last 3 days" | current_date - 3 days to current_date | YYYY-MM-DD to YYYY-MM-DD (3 days range) |
"this morning" | current_date 00:00 to 12:00 | YYYY-MM-DDTHH:mm:ssZ format |
The server always uses its current date/time for these calculations.
Asset Management (API v2 Only)
Available only when AIRFLOW_API_VERSION=v2 (Airflow 3.0+):
list_assets: "Show all assets registered in the system." → Lists all data assets for data-aware scheduling
list_assets: "Find assets with URI containing 's3://data-lake'." →
list_assets(uri_pattern="s3://data-lake")list_asset_events: "Show recent asset events." → Lists when assets were created or updated
list_asset_events: "Show asset events for specific URI." →
list_asset_events(asset_uri="s3://bucket/file.csv")list_asset_events: "Find events produced by ETL DAGs." →
list_asset_events(source_dag_id="etl_pipeline")
Data-Aware Scheduling Examples:
"Show me which assets trigger the customer_analysis DAG."
"List all assets created by the data_ingestion DAG this week."
"Find assets that haven't been updated recently."
"Show the data lineage for our ML training pipeline."
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 Airflow 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 airflow_api.py.
🛠️ Adding Custom Tools (Advanced)
This MCP server is designed for easy extensibility. After you have explored the main features and Quickstart, you can add your own custom tools as follows:
Step-by-Step Guide
1. Add Helper Functions (Optional)
Add reusable data functions to src/mcp_airflow_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 service
data_source = await get_data_connection(target_resource)
results = await fetch_data_from_source(
source=data_source,
filters=your_conditions,
aggregations=["count", "sum", "avg"],
sorting=["count DESC", "timestamp ASC"]
)
return results2. Create Your MCP Tool
Add your tool function to src/mcp_airflow_api/airflow_api.py:
@mcp.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
[Exact Functionality]:
- Feature 1: Data aggregation and analysis
- Feature 2: Resource monitoring and insights
- Feature 3: Performance metrics and reporting
[Required Use Cases]:
- When user asks "your specific analysis request"
- Your business-specific monitoring needs
Args:
limit: Maximum results (1-100)
target_name: Target resource/service name
Returns:
Formatted analysis results
"""
try:
limit = max(1, min(limit, 100)) # Always validate input
results = await get_your_custom_data(target_resource=target_name)
if results:
results = results[:limit]
return format_table_data(results, f"Custom Analysis (Top {len(results)})")
except Exception as e:
logger.error(f"Failed to get custom analysis: {e}")
return f"Error: {str(e)}"3. Update Imports (If Needed)
Add your helper function to imports in src/mcp_airflow_api/airflow_api.py:
from .functions import (
# ...existing imports...
get_your_custom_data, # Add your new function
)4. Update Prompt Template (Recommended)
Add your tool description to src/mcp_airflow_api/prompt_template.md for better natural language recognition:
### **Your Custom Analysis Tool**
### X. **get_your_custom_analysis**
**Purpose**: Brief description of what your tool does
**Usage**: "Show me your custom analysis" or "Get custom analysis for database_name"
**Features**: Data aggregation, resource monitoring, performance metrics
**Required**: `target_name` parameter for specific resource analysis5. Test Your Tool
# Local testing
./scripts/run-mcp-inspector-local.sh
# Or with Docker
docker-compose up -d
docker-compose logs -f mcp-server
# Test with natural language:
# "Show me your custom analysis"
# "Get custom analysis for target_name"That's it! Your custom tool is ready to use with natural language queries.
License
Freely use, modify, and distribute under the MIT License.
Available Tools
54 toolsall_dag_event_summaryB
[Tool Role]: Provides summary of event logs across all DAGs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only says 'summary' but does not disclose what the summary contains (e.g., counts, time ranges, aggregation), any side effects, or access requirements.
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 is concise and front-loaded with the action. However, it could be slightly more informative without being verbose.
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 name and many siblings, the description should clarify what the summary includes and how it differs. It is too minimal for adequate completeness.
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; schema coverage is 100%. The baseline of 4 is appropriate as the description adds no parameter info but is not needed.
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 states it provides a summary of event logs across all DAGs, which is a clear verb+resource. It distinguishes from siblings like 'list_event_logs' (detailed logs) and 'all_dag_import_summary' (import summaries), though not explicitly.
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 versus alternatives. Does not specify exclusions, prerequisites, or when to prefer other tools like 'list_event_logs' for detailed logs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
all_dag_import_summaryA
[Tool Role]: Provides summary of import errors across all DAGs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It only states the purpose but does not disclose behavioral traits such as performance implications, authentication requirements, or whether the summary is real-time or cached.
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 with no unnecessary words, perfectly 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 tool has no parameters and an output schema exists (though not detailed), the description adequately conveys the tool's role. However, a slightly richer description of what the summary includes could improve completeness.
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 0 parameters, so the baseline is 4. The description does not need to add parameter details since none exist.
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 provides a summary of import errors across all DAGs, distinguishing it from siblings like list_import_errors (which lists individual errors) and failed_dags (which focuses on failed DAG runs).
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 over alternatives. It does not mention context, prerequisites, or situations where another tool (e.g., list_import_errors) 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.
create_connectionC
[Tool Role]: Creates a new connection.
| Name | Required | Description | Default |
|---|---|---|---|
| connection_data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description fails to disclose any behavioral traits such as side effects, authentication requirements, idempotency, or error behavior. The agent receives no indication of what happens upon creation or failure.
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 extremely concise but fails to earn its place by adding substantive value. It essentially restates the tool name and does not structure information for easy consumption.
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 open-ended parameter, lack of schema descriptions, and absence of annotations, the description is severely inadequate. It does not compensate for the missing structured information and leaves significant gaps in understanding the tool's usage and behavior.
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 'connection_data' has a schema with 0% description coverage and is defined as an open-ended object (additionalProperties: true). The description does not provide any guidance on expected fields or structure, leaving the agent without meaningful context.
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 'Creates a new connection', clearly identifying the verb and resource. This distinguishes it from sibling tools like delete_connection, get_connection, update_connection, and list_connections.
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 creating new connections, but lacks explicit guidance on when to use this tool versus alternatives. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dag_calendarC
[Tool Role]: Shows DAG schedule and execution calendar for a date range.
| Name | Required | Description | Default |
|---|---|---|---|
| dag_id | Yes | ||
| end_date | Yes | ||
| start_date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must fully disclose behavior. It only says 'shows' without detailing what the calendar entails, authentication needs, rate limits, or 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?
Excessively short, lacking essential details. Conciseness is valued but should not compromise completeness. The description is underspecified.
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 having an output schema (not provided), the description fails to explain what the tool returns (e.g., a visualization, list of runs, or raw data). It is incomplete for an AI agent's decision-making.
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%, yet the description adds no meaning to the three parameters (dag_id, start_date, end_date). It references 'date range' but doesn't specify format, constraints, or how parameters affect the output.
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 shows a DAG schedule and execution calendar for a date range. It identifies the resource (DAG) and scope (date range), but doesn't differentiate from sibling tools like dag_run_duration or get_dag.
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 versus alternatives. The description only states its role, with no mention of when or when not to use it, or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dag_codeC
[Tool Role]: Retrieves the source code for the specified DAG.
| Name | Required | Description | Default |
|---|---|---|---|
| dag_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must bear full responsibility for disclosing behavior. It only says 'retrieves', implying read-only, but does not explicitly state non-destructiveness 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?
The description is a single sentence, which is concise but lacks detail. It is not overly verbose, but could include more substance without becoming unwieldy.
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?
While an output schema exists (reducing the need to describe return values), the description fails to provide parameter semantics or usage guidance. For a simple tool with one parameter, it 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?
Schema description coverage is 0%, and the description adds no information about the 'dag_id' parameter. The agent receives no hints about its format, constraints, or how to obtain it.
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 'retrieves' and the resource 'source code for the specified DAG', making the tool's purpose unambiguous. It distinguishes itself from siblings like get_dag or list_dags which deal with other aspects.
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 over alternatives such as get_dag or list_dags. The description lacks context on prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dag_graphC
[Tool Role]: Retrieves task graph structure for the specified DAG.
| Name | Required | Description | Default |
|---|---|---|---|
| dag_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 only says 'Retrieves...', implying a read operation, but it omits details about authentication, rate limits, or error handling when the dag_id is invalid.
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 and front-loaded with the tool's role. However, it sacrifices informativeness for brevity.
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 only one parameter and an output schema, the description is insufficient. It doesn't explain what the output contains or how to interpret the task graph structure, leaving the agent with insufficient 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?
The input schema has one parameter (dag_id) with no description. The tool description does not add meaning beyond the schema (e.g., format, validation). With 0% schema description coverage, the description should compensate but fails to do so.
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 a task graph structure for a specified DAG, using a specific verb and resource. It distinguishes from siblings like list_dags (lists DAGs) and get_dag (retrieves DAG details), but could be more precise about what the graph contains (e.g., nodes, edges).
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. For example, it doesn't clarify when to use dag_graph vs list_tasks or get_dag for understanding task dependencies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dag_run_durationC
[Tool Role]: Analyzes DAG run durations and performance metrics.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| dag_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only says 'analyzes', not clarifying read-only nature, required permissions, or what the return format looks like. Minimal 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?
Very concise single sentence. However, it sacrifices substance for brevity, missing important details.
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 2 parameters and an output schema, the description is insufficient. It does not explain what the tool returns, how to interpret performance metrics, or any usage context, making it 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 input schema has 0% description coverage, and the description does not mention parameters at all. It fails to add meaning to dag_id or limit beyond the schema's structural 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?
The description states it analyzes DAG run durations and performance metrics, which is a clear verb-resource pair. However, it does not differentiate from sibling tools like dag_task_duration, and 'analyzes' is somewhat vague regarding the specific output.
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 dag_task_duration or failed_dags. The description lacks context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dag_task_durationC
[Tool Role]: Analyzes task durations within a DAG run.
| Name | Required | Description | Default |
|---|---|---|---|
| dag_id | Yes | ||
| dag_run_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It only states that the tool reads task durations, but fails to disclose key traits such as whether it is read-only, idempotent, or requires specific permissions. The description also does not mention any side effects or limitations (e.g., handling of missing data).
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 concise sentence that front-loads the purpose. However, it is overly terse and lacks any structural elements (e.g., sections for usage, parameters). While every sentence earns its place, there is room to add critical information 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 that the tool has a simple purpose and an output schema, the description is still incomplete. It does not explain the context of a DAG run or how the tool handles multiple runs. The lack of parameter explanations and usage guidance makes it insufficient for an agent to confidently invoke the 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 input schema has 0% description coverage, meaning the schema itself provides no parameter explanations. The description does not compensate by explaining the purpose or usage of 'dag_id' and 'dag_run_id'. Without this, an agent cannot understand what values to provide or how the parameters affect behavior.
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 function: 'Analyzes task durations within a DAG run.' It uses a specific verb ('Analyzes') and a specific resource ('task durations within a DAG run'), which effectively distinguishes it from sibling tools like 'dag_run_duration' (which analyzes total DAG run duration) and 'list_tasks' (which lists tasks without duration analysis).
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 does it mention any prerequisites or restrictions. For example, it does not clarify that it requires an existing DAG run or how it differs from similar tools like 'dag_run_duration'. This lack of usage context hampers agent decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_connectionC
[Tool Role]: Deletes a connection.
| Name | Required | Description | Default |
|---|---|---|---|
| connection_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description omits critical behavioral traits: whether deletion is permanent, reversible, or cascading; what permissions are needed; or error states (e.g., referencing a non-existent connection).
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 extremely short (one sentence), which is efficient but sacrifices necessary detail. It is not well-structured or front-loaded with key behavioral cues.
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?
Even though the tool has only one parameter and an output schema (not provided), the description fails to explain side effects, return values, or failure modes, leaving the agent underinformed for invocation.
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 only parameter, 'connection_id', has no description in the schema (0% coverage) and the description adds no extra meaning—e.g., format, how to obtain it, or constraints.
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 'Deletes a connection' is a tautology of the tool name 'delete_connection', providing no additional specificity. It fails to differentiate from sibling tools like 'update_connection' or 'get_connection' (e.g., scope, permanence).
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 versus alternatives (e.g., update_connection, create_connection). No prerequisites, such as requiring the connection to exist or being unused, are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
failed_dagsB
[Tool Role]: Lists all recently failed DAG runs in the Airflow cluster.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only states it lists failed runs, omitting behavioral details like read-only nature, pagination, or definition of 'recently'. Minimal disclosure.
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 front-loaded with '[Tool Role]' prefix. Concise with no wasted words. Could be slightly more structured but 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 zero parameters and existence of output schema, description adequately states purpose but lacks details on time frame, ordering, or behavior. It's acceptable but leaves ambiguity.
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; schema coverage is 100% (empty schema). Description adds value by scoping to 'recently failed DAG runs', which is meaning beyond the empty schema. Baseline 4 for 0 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?
The description clearly states it 'Lists all recently failed DAG runs' – a specific verb and resource. It distinguishes from siblings like 'running_dags' and 'all_dag_event_summary' by focusing on failures. However, no title provided and 'recently' is vague.
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 versus alternatives like 'running_dags' or 'all_dag_event_summary'. Missing explicit context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_configC
[Tool Role]: Retrieves Airflow configuration.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description offers no behavioral details beyond the action. No mention of side effects, safety, rate limits, or any other 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, clear sentence with no unnecessary words. It is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description lacks context about what configuration is returned (e.g., all or specific sections). It does not guide the agent beyond the basic action.
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 with 100% coverage, so no additional description is needed. Baseline for no parameters 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?
Description states 'Retrieves Airflow configuration.' which clearly specifies the verb and resource. It is distinct from sibling tools like list_config_sections, but does not explicitly differentiate.
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 versus alternatives. The description does not mention context, prerequisites, or relationships to other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_config_sectionC
[Tool Role]: Gets all options within a specific configuration section.
| Name | Required | Description | Default |
|---|---|---|---|
| section_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 only states the tool retrieves options but does not disclose behavioral traits like idempotency, permission requirements, rate limits, or response structure.
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 concise sentence that immediately conveys the core purpose. It is efficient, though it lacks front-loading of key information like the primary parameter.
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 an output schema, the description does not need to detail return values. However, with zero parameter description coverage and many sibling tools, the description is too minimal to fully guide an agent. It omits prerequisites, side effects, and usage nuances.
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 only parameter, section_name, has a type string but no description in the schema (0% coverage). The description implies it is the configuration section name but adds no syntax, constraints, or examples beyond the schema field itself.
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 the tool 'Gets all options within a specific configuration section' with a specific verb and resource. It distinguishes from sibling tools like list_config_sections (which lists sections) and get_config (which retrieves configuration values).
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. Siblings like search_config_options or list_config_sections exist but are not mentioned. No when-not-to-use criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_connectionC
[Tool Role]: Gets details for a specific connection.
| Name | Required | Description | Default |
|---|---|---|---|
| connection_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It only states 'Gets details,' implying a read operation but fails to disclose behavior on errors, authentication, or whether the operation is safe. Minimal disclosure.
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, front-loaded sentence with no extraneous text. However, the '[Tool Role]:' prefix is non-standard but harmless. It could be more structured but is efficient.
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 one required parameter, no annotations, and no output schema details in the description, the description is minimal. It does not explain return values or error conditions, leaving the agent with little context beyond the basic purpose.
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%, and the description does not explain 'connection_id' (e.g., its format or where to obtain it). The tool description adds no meaning beyond the schema field name.
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 'Gets details for a specific connection,' with a specific verb and resource. This distinguishes it from siblings like 'list_connections' (list all) and 'create_connection' (mutation).
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 usage context is provided. There is no guidance on when to prefer this tool over alternatives like 'list_connections' or what prerequisites exist (e.g., valid connection ID).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dagC
[Tool Role]: Retrieves detailed information for a specific DAG.
Args: dag_id: The DAG ID to get details for
Returns: Comprehensive DAG details
| Name | Required | Description | Default |
|---|---|---|---|
| dag_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a read operation but provides no detail on idempotency, side effects, permissions, or rate limits. Since no annotations exist, the description carries the full burden, yet it only says 'retrieves' without further behavioral 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?
The description is concise with a clear front-loaded purpose sentence, followed by structured arg/return sections. No unnecessary words, though the format is slightly rigid.
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 with an output schema, the description covers the basic purpose and parameter. However, it omits usage context, behavioral traits, and what 'comprehensive DAG details' entails, leaving some 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?
Schema coverage is 0%, so the description must compensate. It adds a basic description for dag_id ('The DAG ID to get details for'), which is minimal and lacks guidance on format or how to obtain the ID. More detail would be needed for full semantic clarity.
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 information for a specific DAG,' which identifies the verb and resource. It distinguishes from list_dags (list all) and get_dags_detailed_batch (batch), but does not specify the scope beyond 'specific DAG' or mention that it uses the dag_id parameter.
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 compared to siblings like list_dags or get_dags_detailed_batch. No prerequisites or context provided, such as needing to obtain the dag_id from list_dags first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dags_detailed_batchC
[Tool Role]: Retrieves detailed information for multiple DAGs in batch with latest run information.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| fetch_all | No | ||
| is_active | No | ||
| is_paused | No | ||
| id_contains | No | ||
| name_contains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should disclose behavioral traits. However, it only states the general purpose and does not mention pagination, filtering, rate limits, or return format. The description lacks details needed for safe and effective invocation.
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 short sentence, which is concise but lacks structure. It does not front-load critical information such as return type or usage patterns. While not verbose, it is not optimally structured for quick comprehension.
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 7 parameters, no annotations, and an output schema (unseen), the description is incomplete. It fails to convey that the tool returns a list, how pagination works, what 'detailed information' includes, or filtering behavior. The description leaves significant gaps in understanding.
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 no parameter descriptions in the schema. The tool description does not explain any parameter semantics. The agent must rely on parameter names alone, which is insufficient for 7 parameters with options like fetch_all, id_contains, etc.
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 detailed information for multiple DAGs in batch with latest run information. It uses a specific verb and resource, and distinguishes from siblings like list_dags and get_dag.
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. With siblings like list_dags, get_dag, running_dags, failed_dags, the description does not clarify the best use case or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_datasetB
[Tool Role]: Gets details of a specific dataset (v1 API only - v2 uses Assets).
| Name | Required | Description | Default |
|---|---|---|---|
| dataset_uri | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as idempotency, error handling, or required permissions. The agent has no insight into side effects or safety beyond the generic read implication.
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, well-structured sentence that immediately states the role and key constraint (v1 vs v2). Every word adds value with no redundancy.
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?
The output schema exists, partially compensating for return value documentation. However, missing parameter guidance and lack of behavioral context make it minimally adequate for a simple get 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 parameter 'dataset_uri' has no description in the schema (0% coverage) and the tool description provides no additional context about its format, expected values, or constraints. This leaves the agent guessing how to construct the URI.
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 'gets details' and the resource 'specific dataset'. It also distinguishes from v2 by mentioning that v2 uses Assets, making it unique among siblings like get_dataset_events and list_datasets.
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 when to use (v1 API only) but does not explicitly state when not to use or mention alternatives like get_asset for v2. The guidance is implicit but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dataset_eventsC
[Tool Role]: Gets events for a specific dataset (v1 API only - v2 uses Assets).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| dataset_uri | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only says 'Gets events', which indicates a read operation, but does not mention pagination, rate limits, or error behavior. This is insufficient for safe agent use.
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 (one sentence) and includes a role prefix, but it is too brief and lacks structure. It could be more informative without being verbose.
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 three parameters and no annotations, the description is incomplete. It does not explain pagination, what events are, required permissions, or how to interpret results, despite having an 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 description coverage is 0%, meaning the description should explain the parameters (dataset_uri, limit, offset). However, it adds no information beyond the schema, failing to provide meaning or usage context for the 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?
The description clearly states the verb 'Gets events' and the resource 'specific dataset', and it distinguishes from v2 by noting that v2 uses Assets. However, it does not explicitly differentiate from the sibling tool 'list_dataset_events', which might be similar.
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 mentions it is for v1 API only and v2 uses Assets, providing some context on when to use. But it does not give explicit when-not-to-use instructions or list alternative tools within v1.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_event_logC
[Tool Role]: Retrieves a specific event log entry.
| Name | Required | Description | Default |
|---|---|---|---|
| event_log_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It only states the basic retrieval action, without mentioning read-only nature, permissions, rate limits, or any 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?
The description is a single sentence, making it concise, but it lacks any structured breakdown or additional context. It is not overly verbose, but also not optimally 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?
For a simple read operation with a single parameter and an output schema, the description is minimally adequate. However, it could benefit from mentioning that it returns a single entry or any 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?
Schema description coverage is 0%, yet the description adds no information about the 'event_log_id' parameter, such as its format, expected values, or constraints.
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 states 'Retrieves a specific event log entry,' which clearly identifies the tool's action (retrieves) and resource (event log entry). It distinguishes from siblings like 'list_event_logs' by specifying 'specific,' but doesn't explicitly differentiate.
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 versus alternatives is provided. The description implies it is for a specific entry, but lacks explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_healthA
[Tool Role]: Checks Airflow cluster health status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only states 'checks' but does not describe the nature of the health check, error conditions, or any side effects. The brevity leaves significant transparency 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 a single concise sentence with no redundancy. The '[Tool Role]:' prefix is somewhat redundant but does not detract significantly from 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 the tool is simple (no parameters, one action) and an output schema exists, the description is adequately complete. Adding typical response or error handling could increase completeness slightly, but it's sufficient for a health check.
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 zero parameters, so the description does not need to add parameter information. Baseline score of 4 is appropriate as no additional semantic value is required.
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: 'Checks Airflow cluster health status.' The verb 'checks' and resource 'Airflow cluster health status' are specific and distinct from sibling tools like get_version or get_config.
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 (e.g., get_version for version info, get_config for config). The description lacks context for appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_import_errorC
[Tool Role]: Retrieves a specific import error.
| Name | Required | Description | Default |
|---|---|---|---|
| import_error_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits like read-only nature, response format, or any prerequisites beyond the parameter.
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 with no extra information, which is concise but lacks structure that could aid 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 the output schema exists, the description does not need to explain return values, but it fails to provide context about what constitutes an import error or when to use this 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 description coverage is 0%, and the description does not add meaning to the 'import_error_id' parameter; it merely restates 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 clearly states 'Retrieves a specific import error' with a verb and resource, distinguishing it from siblings like 'list_import_errors' which retrieves multiple. However, it could be more specific about how the error is identified.
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 versus alternatives, such as list_import_errors for browsing or other retrieval tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_poolC
[Tool Role]: Gets details for a specific pool.
| Name | Required | Description | Default |
|---|---|---|---|
| pool_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It only states 'Gets details' implying a read operation, but lacks any mention of authentication, rate limits, or 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?
The description is extremely concise (one sentence) and front-loaded. However, it is under-informative for a tool with no annotations, missing key details.
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 one simple parameter and an output schema exists, the description is adequate but lacks any mention of error conditions or what 'details' specifically includes.
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 for the only parameter 'pool_name'. The description adds no context about this parameter's meaning, format, or valid values beyond the schema itself.
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 gets details for a specific pool, with a specific verb and resource. It is distinct from sibling tools like list_pools or get_dag.
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 versus alternatives like list_pools. The description does not mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_prompt_templateB
[Tool Role]: Provides comprehensive prompt template for LLM interactions with Airflow operations.
Args: section: Optional section name to get specific part of template mode: Optional mode (summary/detailed) to control response verbosity
Returns: Comprehensive template or specific section for optimal LLM guidance
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | ||
| section | 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 fully convey behavioral traits. It describes the return value but does not disclose whether the operation is read-only, requires permissions, or has other side effects. The tool likely reads a template, but this is implicit.
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, using a brief role statement followed by structured Args/Returns sections. Every sentence is meaningful, and there is no extraneous text. It could be slightly more compact, but it is 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?
The description covers the purpose and parameters adequately given the tool's simplicity (two optional params) and the presence of an output schema. However, it lacks usage guidance and behavioral context that would be helpful for an agent, especially with no annotations.
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 no property descriptions (0% coverage), so the description must fill the gap. It explains that 'section' gets a specific part and 'mode' controls verbosity, adding meaning beyond the raw schema. However, it does not list valid section names or mode options, leaving some ambiguity.
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 provides a 'comprehensive prompt template for LLM interactions with Airflow operations,' which is a specific verb-resource combination. This distinguishes it from siblings that focus on DAG data, configs, or state changes.
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 given on when to use this tool versus alternatives like the many sibling tools. The description does not mention any exclusions or context that would help an agent decide when to invoke it over other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_providerB
[Tool Role]: Gets details of a specific provider package.
| Name | Required | Description | Default |
|---|---|---|---|
| provider_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. However, it only states 'Gets details', which is a basic read operation. It does not mention what happens if the provider does not exist, potential errors, or any side effects. This is insufficient for an unannotated 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 a single, succinct sentence that front-loads the core purpose. It contains no redundant information and is appropriately sized for a simple getter tool.
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 only one parameter and an output schema (though not shown), the description is minimally adequate. It lacks details about what 'details' include, but the output schema may compensate. For a simple tool, this is a baseline score.
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 parameter descriptions). The description does not explain the 'provider_name' parameter beyond implying it identifies the provider. It adds minimal semantic meaning, leaving the agent to infer the parameter's role from context.
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 the tool retrieves details of a specific provider package, using a specific verb ('Gets details') and resource ('provider package'). This distinguishes it from sibling tools like 'list_providers' which lists all providers.
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 implies usage context (getting details of a single provider) but provides no explicit guidance on when to use this tool versus alternatives like 'list_providers' or other getter tools. No exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_task_instance_detailsC
[Tool Role]: Gets detailed information for a specific task instance.
| Name | Required | Description | Default |
|---|---|---|---|
| dag_id | Yes | ||
| task_id | Yes | ||
| dag_run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only says 'gets', not if it's read-only, expensive, or requires authentication. Does not disclose 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?
Single concise sentence, but could be slightly more informative without becoming verbose.
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 3 required params and no parameter semantics, and missing usage guidance, the description is incomplete despite presence of 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 coverage is 0%; description does not explain what dag_id, dag_run_id, task_id represent or their formats. Adds no meaning 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 verb 'Gets' and resource 'detailed information for a specific task instance', distinguishing from siblings like 'get_task_instance_logs' and 'list_task_instances_all'.
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; lacks 'when not to use' or sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_task_instance_extra_linksC
[Tool Role]: Gets extra links for a task instance.
| Name | Required | Description | Default |
|---|---|---|---|
| dag_id | Yes | ||
| task_id | Yes | ||
| dag_run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as whether it is read-only, requires permissions, or has side effects. The description only says 'Gets extra links', lacking deeper behavioral 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?
The description is very short but under-specified. It begins with a redundant '[Tool Role]:' label. While concise, it fails to provide sufficient information, making it inefficient.
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?
The tool has three required parameters and an output schema (not shown), yet the description provides no context about the output, return format, or use cases. It is incomplete for agent decision-making.
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%, and the description does not explain any of the three required parameters (dag_id, dag_run_id, task_id). The description adds no meaning beyond the parameter names.
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 states the tool gets extra links for a task instance, which is a specific verb and resource. It clearly distinguishes from sibling tools like get_task_instance_details or get_task_instance_logs.
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 versus alternatives. Given many sibling tools for task instances, explicit context on when extra links are needed is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_task_instance_logsC
[Tool Role]: Retrieves logs for a specific task instance.
| Name | Required | Description | Default |
|---|---|---|---|
| dag_id | Yes | ||
| task_id | Yes | ||
| dag_run_id | Yes | ||
| try_number | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description bears the full burden of disclosure. It offers no behavioral details such as log format, truncation, or authentication requirements. The minimal description fails to inform the agent about the tool's behavior beyond the literal meaning.
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 very concise (one sentence), which is positive, but it is not structured with sections or bullet points. It is appropriately short but lacks the structure that would make it more 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 tool has 4 parameters and an output schema, the description is too sparse. It does not explain the role of try_number, the nature of logs returned, or any context like whether logs are limited. The output schema exists, so return values need not be described, but the remaining context is insufficient.
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%, yet the description does not explain any of the four parameters. It only mentions 'specific task instance,' which loosely connects to required params but provides no semantics for try_number or the required fields. The description adds negligible 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 clearly states it retrieves logs for a specific task instance, which is a verb+resource pattern. However, it does not differentiate from sibling tools like get_task_instance_details or get_xcom_entry, which have distinct purposes. The purpose is clear but lacks sibling distinction.
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 versus alternatives. The description does not mention any prerequisites, scenarios, or exclusions. It provides no context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_userB
[Tool Role]: Gets details of a specific user (v1 API only).
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 only states 'Gets details' and the API version, without disclosing behavioral traits such as authentication needs, rate limits, or the nature of the returned data. As a simple read operation, minimal transparency is acceptable but still insufficient.
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 and without extraneous content. However, the '[Tool Role]' prefix is unnecessary and could be omitted for even cleaner structure.
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?
The tool has an output schema (details not shown), but the description provides no information about the return value or what 'details' include. With 0% schema description coverage and one required parameter, the description is insufficient for an agent to use the tool correctly without additional knowledge.
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 description must add parameter meaning. However, the description does not mention the 'username' parameter at all, only 'specific user'. The agent cannot infer the required parameter name from the description alone.
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 gets details of a specific user, using a specific verb and resource. The mention of 'v1 API only' distinguishes it from potential other user tools. Sibling tools include 'list_users', confirming it's for 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?
The description mentions 'v1 API only', providing some context, but does not explicitly state when to use this tool versus alternatives like 'list_users'. There is no exclusion or prerequisite guidance, leaving the agent to infer usage from sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_variableC
[Tool Role]: Gets the value of a specific variable.
| Name | Required | Description | Default |
|---|---|---|---|
| variable_key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 implies a read operation ('Gets') but does not disclose error behavior (e.g., if variable_key does not exist), authentication needs, or idempotency. The presence of an output schema is not referenced.
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 clear sentence with no extraneous information. It is optimally concise for a simple getter tool.
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 only one parameter and an output schema exists, the description is minimally adequate. However, it does not explain the return value structure (though output schema covers it) or error conditions, which would be helpful for a complete understanding.
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% and the description adds no explanation for the single required parameter 'variable_key'. Without any additional context on its format, allowed values, or relationship to other parameters (none), the agent must rely solely on the parameter name.
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 'Gets the value of a specific variable' with verb and resource. Distinguishes from sibling tools like list_variables (which lists all) and get_xcom_entry (different resource). However, lacks explicit mention of Airflow Variables context, which is implied by sibling names.
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 provided on when to use this tool versus alternatives such as list_variables or get_xcom_entry. There is no statement of context, exclusions, or prerequisites. Despite simplicity, the description offers no direction for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_versionB
[Tool Role]: Gets Airflow version information.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must stand alone. It implies a read operation but lacks detail on response structure or side effects. With output schema available, the gap is partially filled.
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, front-loaded. The '[Tool Role]' prefix is unnecessary jargon but does not significantly harm 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?
Tool is simple with no parameters and an output schema. Description sufficiently states the purpose. Could mention output schema existence, but not required.
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, and schema coverage is 100%. Description adds no param info, which is acceptable as baseline for 0 parameters 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?
Description clearly states the action (get) and resource (Airflow version information). However, it does not differentiate from siblings like get_health or get_config, which also retrieve system information.
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 versus alternatives. Given many sibling tools, explicit context is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_xcom_entryC
[Tool Role]: Gets a specific XCom entry.
| Name | Required | Description | Default |
|---|---|---|---|
| dag_id | Yes | ||
| task_id | Yes | ||
| xcom_key | Yes | ||
| dag_run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits but only states it 'gets' an entry. It fails to mention idempotency, lack of side effects, or any constraints, leaving the agent uncertain about its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is concise but lacks substance. It sacrifices useful information for brevity, making it minimally adequate.
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 having an output schema, the description omits parameter semantics and usage context. For a tool with 4 required parameters and no schema descriptions, the description is incomplete and fails to guide correct invocation.
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%, and the description provides no details about the four required parameters (dag_id, dag_run_id, task_id, xcom_key). The agent must infer meaning from parameter 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 clearly states it gets a specific XCom entry, a distinct resource. However, it fails to differentiate from the sibling tool 'list_xcom_entries', which lists entries, causing potential confusion for the agent.
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 vs. alternatives like 'list_xcom_entries'. No context about prerequisites (e.g., DAG must exist) or situations where it's inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_config_sectionsB
[Tool Role]: Lists all configuration sections with summary.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose any behavioral traits such as auth requirements, performance characteristics, or whether the tool is read-only. With no annotations provided, the description should fill this gap but fails to do so.
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, clear sentence that is concise and front-loaded. It efficiently communicates the tool's purpose without waste, though it could be slightly more detailed.
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 (0 parameters, output schema present), the description is minimally adequate. However, it does not mention the scope of sections (e.g., all sections or filtered), which could be improved. The output schema likely covers return details, so completeness is acceptable but not excellent.
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 schema description coverage is 100%, so the baseline is 4. The description adds no additional parameter semantics beyond what the schema provides, but none are needed.
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 lists all configuration sections with a summary. The verb 'lists' and resource 'configuration sections' are specific, and it distinguishes from siblings like 'get_config_section' which gets details of a single section. However, it could be more precise about the format of the summary.
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 'search_config_options' or 'get_config'. There is no indication of prerequisites or context, leaving the agent without enough information to choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_connectionsC
[Tool Role]: Lists all connections in Airflow.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 does not mention pagination behavior (limit/offset), ordering, or any side effects. The input schema implies pagination but the description adds no clarity.
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 (one sentence), but it lacks structure and does not earn its place by providing meaningful guidance. It is minimally sufficient but could be improved with more context.
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 (context indicates 'has output schema: true'), the description could rely on schema for return values, but it doesn't mention pagination or other behavioral aspects. For a list tool with offset/limit, 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?
Schema description coverage is 0%, and the description does not explain the 'limit' and 'offset' parameters. While the names are self-explanatory, the description fails to add value beyond the schema, which is required given low coverage.
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 'Lists all connections in Airflow' clearly states the tool's function with a specific verb and resource. It distinguishes from sibling tools like 'get_connection' (singular) and create/delete/update connections.
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 versus alternatives is provided. The description does not mention when to prefer this over 'get_connection' for a specific connection, nor does it provide any context for using the pagination parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dagsA
[Tool Role]: Lists all DAGs registered in the Airflow cluster with pagination support.
Args: limit: Maximum number of DAGs to return (default: 20) offset: Number of DAGs to skip for pagination (default: 0) fetch_all: If True, fetches all DAGs regardless of limit/offset id_contains: Filter DAGs by ID containing this string name_contains: Filter DAGs by display name containing this string
Returns: Dict containing dags list, pagination info, and total counts
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| fetch_all | No | ||
| id_contains | No | ||
| name_contains | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden. It discloses pagination and filtering via parameters but does not mention read-only nature, rate limits, authentication needs, or behavior with large datasets. It is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description uses a clear docstring format with Args and Returns sections. It is reasonably concise, though the prefix '[Tool Role]:' is unnecessary and slightly verbose. Overall, it is well-structured 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?
With an output schema present, the description does not need to detail return values, but it does describe return structure (dict with dags list, pagination info, total counts). Missing context includes ordering, whether it returns only active DAGs, and edge cases like empty results. It is adequate but leaves 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%, so the description compensates fully by explaining all five parameters (limit, offset, fetch_all, id_contains, name_contains) with their purpose and defaults. This adds significant meaning 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 clearly states the tool lists all DAGs in the Airflow cluster with pagination support. The verb 'lists' and resource 'DAGs' are specific, and the scope 'registered in the Airflow cluster' is explicit. It effectively distinguishes from sibling tools like get_dag or running_dags.
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 explicit guidance on when to use this tool versus alternatives, nor does it mention when not to use it. It only describes what it does, leaving the AI agent to infer usage context from sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dataset_eventsB
[Tool Role]: Lists dataset events for data lineage tracking (v1 API only - v2 uses Assets).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| dataset_uri | No | ||
| source_dag_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral transparency burden. It does not disclose behaviors such as pagination, ordering, idempotency, or effects of omitting parameters. The single sentence provides minimal behavioral 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?
The description is concise, consisting of one sentence that front-loads the core purpose. However, it could include brief parameter explanations 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 the tool has four optional parameters and no annotations, the description is incomplete as it lacks parameter details and behavioral traits. The existence of an output schema does not compensate for the missing parameter documentation.
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% and the description contains no information about the four parameters (limit, offset, dataset_uri, source_dag_id). The agent receives no guidance beyond the raw 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 it lists dataset events for data lineage tracking, specifying v1 API usage. However, it does not explicitly differentiate from the sibling tool 'get_dataset_events', which likely has a similar purpose.
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 a guideline by noting v1 API only and that v2 uses Assets, indicating when to use this tool versus v2 alternatives. It lacks direct mention of sibling tools as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_datasetsA
[Tool Role]: Lists all datasets in the Airflow system (v1 API only - v2 uses Assets).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| uri_pattern | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It mentions the API version constraint but does not disclose any other behaviors such as permissions, rate limits, or side effects. For a read-only list tool, this is minimally acceptable.
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, concise sentence that conveys the core purpose and a key constraint with no redundancy.
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 (3 parameters, no parameter documentation in description), the description is incomplete. The output schema exists but is not provided for evaluation; however, the lack of parameter guidance makes the context insufficient for proper tool invocation.
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 description must explain parameters. However, the description does not mention any of the three parameters (limit, offset, uri_pattern) or their semantics. This is a significant gap, leaving the agent without guidance for parameter usage.
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 lists all datasets in the Airflow system and specifies it is for v1 API only, distinguishing it from v2 Assets. This directly addresses the tool's function and differentiates it from siblings like 'get_dataset' or 'list_dataset_events'.
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 notes the API version constraint ('v1 API only - v2 uses Assets'), which provides clear guidance on when to use this tool (v1) and when to consider alternatives (v2). It implies when not to use it but does not list explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_event_logsC
[Tool Role]: Lists event logs from Airflow.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| dag_id | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits. It fails to mention pagination behavior (offset/limit), ordering, or any side effects. The minimal text adds little beyond the name.
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?
At one sentence, it is concise but lacks structure. It could be expanded with key details without becoming verbose.
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?
Even with an output schema present, the description omits critical context like pagination details, default ordering, and the effect of the 'dag_id' parameter, making it insufficient for correct use.
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% and the description provides no additional meaning for the parameters (limit, dag_id, offset). Parameters are entirely unexplained.
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 'lists' and the resource 'event logs from Airflow', but does not differentiate from sibling tools like 'get_event_log' or other list tools.
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 (e.g., get_event_log), nor any context about prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_import_errorsC
[Tool Role]: Lists import errors in Airflow.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only states 'lists import errors' without disclosing read-only nature, performance implications, or ordering. Minimal behavioral 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?
Single sentence is concise and front-loaded with purpose. However, the brevity sacrifices useful detail; it is a borderline case of under-specification rather than efficient 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 two parameters and no description of pagination or return format, the description is incomplete. The output schema exists but the description fails to set expectations for the agent. Sibling get_import_error implies this returns a list, but details are missing.
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 two parameters (limit, offset) with defaults but no descriptions. Schema_description_coverage is 0%, and description does not mention or explain parameters. Agent cannot infer their purpose from the tool overall 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?
Description states 'Lists import errors in Airflow.' This clearly identifies the action and resource. However, it does not differentiate from sibling tools like get_import_error (which returns a single error) or other list tools, missing an opportunity to clarify scope.
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. For example, it doesn't specify that this tool returns a paginated list compared to get_import_error for a specific error. The agent is left to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_permissionsB
[Tool Role]: Lists all permissions available in the Airflow system (v1 API only).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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. It mentions the v1 API constraint but does not disclose whether the operation is read-only, requires authentication, or any side effects. The minimal description leaves important behavioral aspects unclear.
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 that is concise and front-loaded with the core purpose. Every word is informative with no redundancy.
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 parameters, output schema exists), the description provides the essential information. However, it could briefly mention that it returns a list of permission objects, though the output schema likely covers that. Overall, it is nearly 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?
There are zero parameters, and the schema coverage is 100% (empty). Per the baseline rule for zero-parameter tools, the description does not need to add parameter details. The description is adequate in this dimension.
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 'Lists' and the resource 'permissions', and specifies it is for the Airflow system v1 API. However, it does not explicitly differentiate from sibling list tools like list_roles or list_users, which could cause confusion.
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 vs alternatives. The description lacks context about prerequisites or when not 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.
list_pluginsA
[Tool Role]: Lists all installed plugins in the Airflow system.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only states a simple read operation. Lacks details on performance, ordering, or error handling, but the operation is simple.
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, front-loaded sentence with clear role prefix; no extraneous 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?
Adequate for a simple list with output schema; could mention return type or limitations, but not required given minimal 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 exist, and description adds value by stating 'all' indicates no filtering. Baseline score of 4 applies for zero-parameter tools.
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 verb ('lists') and specific resource ('all installed plugins in the Airflow system'), distinguishing it from similar list tools like list_providers.
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 versus alternatives like list_providers or list_dags, though the action is straightforward for listing plugins.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_poolsC
[Tool Role]: Lists all pools in Airflow.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Minimal transparency. No annotations are provided, and the description does not disclose pagination, authentication needs, rate limits, or any side effects. The output schema exists but is not referenced.
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 very short (one sentence), which is concise but lacks structural elements like when to use or parameter details. It is under-specified rather than efficiently trimmed.
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 output schema exists, return values are documented elsewhere. However, the description lacks usage context, examples, or mention of pagination behavior. It is minimally complete for a simple list tool but could be improved.
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%, and the description does not explain the 'limit' and 'offset' parameters. While the parameter names and defaults are somewhat self-explanatory, the description adds no 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 clearly states the verb 'list' and resource 'pools' in Airflow. However, it does not differentiate from sibling tools like 'get_pool' which likely retrieves a specific pool.
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 versus alternatives. For example, it does not mention that 'get_pool' exists for single pool retrieval, or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_providersA
[Tool Role]: Lists all provider packages installed in the Airflow system.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It indicates a safe read operation ('lists all provider packages'). However, it does not disclose any potential limitations, permissions needed, or whether the output is paginated. Minimal but 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?
Single sentence that is direct and contains no redundant information. Every word serves a purpose.
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?
The tool has an output schema, so description need not explain return format. With 0 parameters, the description adequately states what the tool does. Could mention that it returns a list but not necessary. Slightly lacking in context about usage scenarios.
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 description adds no param details. Schema coverage is 100% (vacuous). Baseline is 4 for no parameters; description is clear but does not add extra meaning 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?
Description explicitly states 'Lists all provider packages installed in the Airflow system.' The verb 'list' combined with resource 'provider packages' and scope 'all' is specific and distinguishes it from 'get_provider' which likely retrieves a single provider.
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 versus alternatives. The sibling 'get_provider' could be used for specific providers, but no differentiation is provided. The description does not mention any context for why one would choose this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rolesC
[Tool Role]: Lists all roles in the Airflow system (v1 API only).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must fully disclose behavior. It fails to mention pagination behavior, permissions required, or any side effects. The simple 'lists all roles' is insufficient for a tool with pagination parameters.
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?
One sentence front-loads the purpose and API version. Could include parameter details without losing 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?
With an output schema present, return values don't need explanation. However, the description lacks pagination behavior, the significance of v1 API, and prerequisites. It is adequate for a simple list but missing context for proper use.
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%, yet the description does not explain the limit and offset parameters or their defaults. No additional meaning beyond the schema is provided.
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 lists all roles in the Airflow system, specifically noting it uses the v1 API only. This differentiates it from sibling tools like list_permissions and list_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 on when to use this tool versus alternatives. The description only mentions a v1 API constraint but does not provide when-not-to-use or context for selecting among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_task_instances_allC
[Tool Role]: Lists task instances with comprehensive filtering options.
| Name | Required | Description | Default |
|---|---|---|---|
| pool | No | ||
| limit | No | ||
| state | No | ||
| dag_id | No | ||
| offset | No | ||
| task_id | No | ||
| dag_run_id | No | ||
| duration_gte | No | ||
| duration_lte | No | ||
| end_date_gte | No | ||
| end_date_lte | No | ||
| start_date_gte | No | ||
| start_date_lte | No | ||
| execution_date_gte | No | ||
| execution_date_lte | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description only mentions 'comprehensive filtering options' without detailing behavior such as pagination, limits, or 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?
Single sentence is concise and front-loaded, but overly brief for a tool with 15 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?
With 15 parameters, no schema descriptions, no annotations, and a vague description, the tool lacks essential context for correct usage despite having an 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 description coverage is 0%, so description must compensate. It only says 'comprehensive filtering options', offering no insight into parameter meanings or usage beyond names.
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 the tool lists task instances with filtering options, but lacks differentiation from sibling 'list_task_instances_batch'.
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 versus alternatives like 'list_task_instances_batch' or other listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_task_instances_batchC
[Tool Role]: Lists task instances in batch with date and state filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| state | No | ||
| offset | No | ||
| start_date_gte | No | ||
| start_date_lte | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must convey behavior. It mentions batch listing but omits permissions, rate limits, pagination behavior, or response details. Output schema exists but description adds no 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?
Single sentence, concise and front-loaded with purpose. The '[Tool Role]:' prefix is slightly unnecessary but does not harm brevity.
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 5 optional parameters, 0% schema coverage, and no annotations, the description is too minimal. Lacks details on pagination, output format, or usage scenarios despite having 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 description coverage is 0%. Description mentions date and state filtering covering state, start_date_gte, start_date_lte, but omits limit and offset. No format or enum values explained.
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 task instances in batch with date and state filtering, using specific verb and resource, differentiating from sibling tools like list_task_instances_all.
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 versus alternatives like list_task_instances_all or get_task_instance_details. Usage context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tasksB
[Tool Role]: Lists all tasks within the specified DAG.
| Name | Required | Description | Default |
|---|---|---|---|
| dag_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It only states the function without disclosing side effects, authentication needs, or behavior nuances (e.g., whether it returns inactive tasks).
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?
A single sentence with no unnecessary words. Efficient and direct, though slightly more context could be added without harming 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?
With one parameter and an output schema present, the description is adequate for a simple list tool. However, missing usage guidelines and behavioral transparency prevent full completeness.
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 dag_id has 0% schema description coverage. The description implies it identifies the DAG but provides no additional meaning beyond the schema's field name.
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 lists all tasks within a specified DAG, using a specific verb and resource. It distinguishes itself from siblings like list_dags by specifying 'tasks' within a DAG.
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 dag_graph or dag_task_duration. The description lacks explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usersC
[Tool Role]: Lists all users in the Airflow system (v1 API only).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It only mentions the v1 API restriction but fails to disclose pagination behavior, authentication requirements, or any side effects. The schema parameters (limit, offset) imply pagination but the description does not clarify.
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, clear sentence that is efficient and front-loaded with the tool's purpose. It could be improved by adding more useful details without becoming verbose.
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 an output schema and only two simple parameters, the description provides minimal context. It mentions the v1 API but omits pagination details and usage context. It is adequate but not fully 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%, so the description must compensate. It does not explain the 'limit' and 'offset' parameters, leaving their semantics entirely to the schema, which lacks descriptions. The description only says 'lists all users', not how pagination works.
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 lists all users in the Airflow system and specifies it uses the v1 API, providing a specific verb+resource. However, it does not explicitly differentiate it from siblings like 'get_user' or other list tools.
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?
There is no guidance on when to use this tool versus alternatives, no mention of when not to use it, and no exclusion criteria. The description only states what it does, not when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_variablesC
[Tool Role]: Lists all variables in Airflow.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description solely bears responsibility. It does not disclose that this is a read-only operation, nor does it describe pagination behavior (though limit/offset parameters imply it). No side effects or authorization requirements are mentioned.
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 short but includes unnecessary '[Tool Role]:' prefix which adds no value. It is front-loaded with the core purpose but could be more concise without the prefix.
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 output schema exists but is not described, the description lacks details about the return structure (e.g., list of variable objects). For a paginated list tool, more context on response format and pagination is needed.
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 it fails to mention the parameters 'limit' and 'offset' at all. The agent receives no explanation that these control pagination, leaving them to infer from names alone.
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 states 'Lists all variables in Airflow,' which clearly identifies the action (list) and resource (variables). It distinguishes from the sibling 'get_variable' which retrieves a single variable. However, it could be more specific about scope (e.g., system-wide or per environment) and lacks mention of filtering or ordering options.
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 'get_variable' or other list tools. There is no mention of prerequisites, pagination handling, or scenarios where this tool is appropriate or inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_xcom_entriesC
[Tool Role]: Lists XCom entries for a specific task instance.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| dag_id | Yes | ||
| offset | No | ||
| task_id | Yes | ||
| dag_run_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits such as pagination behavior, rate limits, error handling, or read-only status beyond the implicit listing action.
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?
While the description is a single sentence, it is under-specifying key information. Conciseness should not sacrifice completeness; here it fails to provide necessary details.
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?
The tool has multiple parameters and an output schema, yet the description omits return format, pagination, or any details beyond the bare listing. It is insufficient for correct invocation.
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%, and the description does not explain any parameters. It implies the three required parameters but provides no detail on limit, offset, or their defaults.
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 'lists' and the resource 'XCom entries' with the scope 'for a specific task instance', distinguishing it from sibling tools like get_xcom_entry (single entry) and list_task_instances (different resource).
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. Given many sibling tools with similar listing operations, the lack of context on selection criteria is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_dagC
[Tool Role]: Pauses the specified Airflow DAG (prevents scheduling new runs).
| Name | Required | Description | Default |
|---|---|---|---|
| dag_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the basic effect. It does not disclose side effects (e.g., effect on running tasks), reversibility, or permission requirements.
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 that is concise and front-loaded. It earns its place, though it could be slightly more informative without becoming verbose.
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 the tool and the existence of an output schema, the description is minimally adequate but lacks usage guidelines and deeper behavioral transparency, making it not fully 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 input schema has one parameter 'dag_id' with 0% description coverage. The description adds no meaning beyond the schema, failing to compensate for the lack of parameter 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 the verb 'pauses', the resource 'Airflow DAG', and the effect 'prevents scheduling new runs', distinguishing it from siblings like 'trigger_dag' and 'unpause_dag'.
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 vs. alternatives, no prerequisites, and no exclusions. It lacks context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
running_dagsA
[Tool Role]: Lists all currently running DAG runs in the Airflow cluster.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It states that the tool lists all currently running DAG runs, which is a read-only operation. For a simple list tool with no parameters, this is sufficiently transparent. It could mention performance implications or that no authentication is needed, but the core behavior is clear.
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 with no extraneous words. It is concise and front-loaded, clearly stating the tool's purpose without any waste.
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 is simple (zero parameters, clear output), the description is adequate for an agent to understand its purpose. However, with many sibling tools, a brief note on when to prefer this over 'list_dags' or 'failed_dags' would improve completeness. The output schema exists, so return values are defined elsewhere.
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, so the baseline score is 4. The description adds no parameter information, but none is needed. The input schema is empty and fully covered (100%), so no additional meaning is required.
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 lists all currently running DAG runs in the Airflow cluster. It uses a specific verb ('Lists'), specific resource ('running DAG runs'), and scope ('currently running'), effectively distinguishing it from sibling tools like 'list_dags' (lists all DAGs) and 'failed_dags' (lists failed runs).
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, such as 'list_dags' or 'failed_dags'. There is no explicit context or exclusions, leaving the agent to infer usage from the name and purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_config_optionsC
[Tool Role]: Searches for configuration options matching a term.
| Name | Required | Description | Default |
|---|---|---|---|
| search_term | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 fails to disclose key behavior such as whether matching is case-sensitive, partial, or exact, nor does it describe output structure despite an output schema existing.
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 short and front-loaded, but its brevity sacrifices important detail. It is not optimally balanced between conciseness and informativeness.
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 tool with one parameter and an output schema, the description lacks essential details about matching behavior and return value, making it incomplete for reliable agent use.
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 schema itself offers no parameter explanations. The description only says 'matching a term', adding minimal meaning beyond the parameter name. It does not specify format or matching semantics.
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 'Searches for configuration options matching a term' with a specific verb and resource. It distinguishes from siblings like get_config (which retrieves a specific option) but does not explicitly differentiate from list_config_sections.
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 versus alternatives like get_config or list_config_sections. The description provides no context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trigger_dagC
[Tool Role]: Triggers a new DAG run for a specified Airflow DAG.
| Name | Required | Description | Default |
|---|---|---|---|
| dag_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only says 'triggers a new DAG run' without disclosing effects, permissions, idempotency, or rate limits. Minimal behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise but overly sparse. Could include more context without losing 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?
With only 1 parameter and no behavioral details, the description is incomplete. An output schema exists but is not referenced. Lacks context for effective tool usage.
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, and the description adds no detail about the required 'dag_id' parameter—no format, source, or constraints. Description fails to compensate for missing 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 triggers a new DAG run for a specified Airflow DAG, using a specific verb and resource. It distinguishes from sibling tools like pause_dag or list_dags.
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 versus alternatives like pause_dag or get_dag. No mention of prerequisites or context for triggering a run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unpause_dagB
[Tool Role]: Unpauses the specified Airflow DAG (allows scheduling new runs).
| Name | Required | Description | Default |
|---|---|---|---|
| dag_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the action and its effect. No disclosure of prerequisites, side effects, or return behavior.
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, front-loaded with purpose. Concise but could include more useful information without being verbose.
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?
Though an output schema exists, the description omits details on return values, error scenarios, and usage context. Minimal completeness for a one-parameter 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 has 0% description coverage for the sole parameter 'dag_id'. The description does not add any semantic meaning (e.g., format, constraints) beyond the parameter name.
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 unpauses a specific Airflow DAG and explains the effect (allows scheduling). It distinguishes from the sibling pause_dag.
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?
Usage is implied (when DAG is paused and needs resuming), but no explicit when-not-to-use or alternatives beyond the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_connectionC
[Tool Role]: Updates an existing connection.
| Name | Required | Description | Default |
|---|---|---|---|
| connection_id | Yes | ||
| connection_data | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose any behavioral traits such as whether the update is partial or full, permissions required, or side effects on associated data.
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 with no wasted words, but it omits crucial details, making it insufficiently informative. Conciseness is achieved at the cost of completeness.
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 two parameters (one freeform), no annotations, and no output schema details, the description is incomplete. It fails to explain what the tool returns or the expected behavior for partial updates.
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%, and the description adds no meaning beyond the schema. The 'connection_data' parameter is a freeform object with no constraints or examples, leaving the agent uncertain about expected structure.
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 action ('Updates') and resource ('existing connection'), distinguishing it from siblings like 'create_connection' and 'delete_connection'. However, lacking specifics on what aspects can be updated limits clarity.
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. With sibling tools like 'create_connection' and 'delete_connection', explicit context is missing.
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.
54 tool updates
v3.6.5- Removed
all_dag_event_summary - Removed
all_dag_import_summary - Removed
create_connection - Removed
dag_calendar - Removed
dag_code - Removed
dag_graph - Removed
dag_run_duration - Removed
dag_task_duration - Removed
delete_connection - Removed
failed_dags - Removed
get_config - Removed
get_config_section - Removed
get_connection - Removed
get_dag - Removed
get_dags_detailed_batch - Removed
get_dataset - Removed
get_dataset_events - Removed
get_event_log - Removed
get_health - Removed
get_import_error - Removed
get_pool - Removed
get_prompt_template - Removed
get_provider - Removed
get_task_instance_details - Removed
get_task_instance_extra_links - Removed
get_task_instance_logs - Removed
get_user - Removed
get_variable - Removed
get_version - Removed
get_xcom_entry - Removed
list_config_sections - Removed
list_connections - Removed
list_dags - Removed
list_dataset_events - Removed
list_datasets - Removed
list_event_logs - Removed
list_import_errors - Removed
list_permissions - Removed
list_plugins - Removed
list_pools - Removed
list_providers - Removed
list_roles - Removed
list_task_instances_all - Removed
list_task_instances_batch - Removed
list_tasks - Removed
list_users - Removed
list_variables - Removed
list_xcom_entries - Removed
pause_dag - Removed
running_dags - Removed
search_config_options - Removed
trigger_dag - Removed
unpause_dag - Removed
update_connection
54 tool updates
v3.6.6- Changed
all_dag_event_summary1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
all_dag_import_summary1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
create_connection2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / connection_data / titleRemoved value: -"Connection Data"
- Changed
dag_calendar4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dag_id / titleRemoved value: -"Dag Id" - removed
Input schema / properties / end_date / titleRemoved value: -"End Date" - removed
Input schema / properties / start_date / titleRemoved value: -"Start Date"
- Changed
dag_code2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dag_id / titleRemoved value: -"Dag Id"
- Changed
dag_graph2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dag_id / titleRemoved value: -"Dag Id"
- Changed
dag_run_duration3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dag_id / titleRemoved value: -"Dag Id" - removed
Input schema / properties / limit / titleRemoved value: -"Limit"
- Changed
dag_task_duration3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dag_id / titleRemoved value: -"Dag Id" - removed
Input schema / properties / dag_run_id / titleRemoved value: -"Dag Run Id"
- Changed
delete_connection2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / connection_id / titleRemoved value: -"Connection Id"
- Changed
failed_dags1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_config1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_config_section2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / section_name / titleRemoved value: -"Section Name"
- Changed
get_connection2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / connection_id / titleRemoved value: -"Connection Id"
- Changed
get_dag2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dag_id / titleRemoved value: -"Dag Id"
- Changed
get_dags_detailed_batch8 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / fetch_all / titleRemoved value: -"Fetch All" - removed
Input schema / properties / id_contains / titleRemoved value: -"Id Contains" - removed
Input schema / properties / is_active / titleRemoved value: -"Is Active" - removed
Input schema / properties / is_paused / titleRemoved value: -"Is Paused" - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / name_contains / titleRemoved value: -"Name Contains" - removed
Input schema / properties / offset / titleRemoved value: -"Offset"
- Changed
get_dataset2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dataset_uri / titleRemoved value: -"Dataset Uri"
- Changed
get_dataset_events4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dataset_uri / titleRemoved value: -"Dataset Uri" - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / offset / titleRemoved value: -"Offset"
- Changed
get_event_log2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / event_log_id / titleRemoved value: -"Event Log Id"
- Changed
get_health1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_import_error2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / import_error_id / titleRemoved value: -"Import Error Id"
- Changed
get_pool2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / pool_name / titleRemoved value: -"Pool Name"
- 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_provider2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / provider_name / titleRemoved value: -"Provider Name"
- Changed
get_task_instance_details4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dag_id / titleRemoved value: -"Dag Id" - removed
Input schema / properties / dag_run_id / titleRemoved value: -"Dag Run Id" - removed
Input schema / properties / task_id / titleRemoved value: -"Task Id"
- Changed
get_task_instance_extra_links4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dag_id / titleRemoved value: -"Dag Id" - removed
Input schema / properties / dag_run_id / titleRemoved value: -"Dag Run Id" - removed
Input schema / properties / task_id / titleRemoved value: -"Task Id"
- Changed
get_task_instance_logs5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dag_id / titleRemoved value: -"Dag Id" - removed
Input schema / properties / dag_run_id / titleRemoved value: -"Dag Run Id" - removed
Input schema / properties / task_id / titleRemoved value: -"Task Id" - removed
Input schema / properties / try_number / titleRemoved value: -"Try Number"
- Changed
get_user2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / username / titleRemoved value: -"Username"
- Changed
get_variable2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / variable_key / titleRemoved value: -"Variable Key"
- Changed
get_version1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
get_xcom_entry5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dag_id / titleRemoved value: -"Dag Id" - removed
Input schema / properties / dag_run_id / titleRemoved value: -"Dag Run Id" - removed
Input schema / properties / task_id / titleRemoved value: -"Task Id" - removed
Input schema / properties / xcom_key / titleRemoved value: -"Xcom Key"
- Changed
list_config_sections1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
list_connections3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / offset / titleRemoved value: -"Offset"
- Changed
list_dags6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / fetch_all / titleRemoved value: -"Fetch All" - removed
Input schema / properties / id_contains / titleRemoved value: -"Id Contains" - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / name_contains / titleRemoved value: -"Name Contains" - removed
Input schema / properties / offset / titleRemoved value: -"Offset"
- Changed
list_dataset_events5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dataset_uri / titleRemoved value: -"Dataset Uri" - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / offset / titleRemoved value: -"Offset" - removed
Input schema / properties / source_dag_id / titleRemoved value: -"Source Dag Id"
- Changed
list_datasets4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / offset / titleRemoved value: -"Offset" - removed
Input schema / properties / uri_pattern / titleRemoved value: -"Uri Pattern"
- Changed
list_event_logs4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dag_id / titleRemoved value: -"Dag Id" - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / offset / titleRemoved value: -"Offset"
- Changed
list_import_errors3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / offset / titleRemoved value: -"Offset"
- Changed
list_permissions1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
list_plugins1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
list_pools3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / offset / titleRemoved value: -"Offset"
- Changed
list_providers1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
list_roles3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / offset / titleRemoved value: -"Offset"
- Changed
list_task_instances_all16 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dag_id / titleRemoved value: -"Dag Id" - removed
Input schema / properties / dag_run_id / titleRemoved value: -"Dag Run Id" - removed
Input schema / properties / duration_gte / titleRemoved value: -"Duration Gte" - removed
Input schema / properties / duration_lte / titleRemoved value: -"Duration Lte" - removed
Input schema / properties / end_date_gte / titleRemoved value: -"End Date Gte" - removed
Input schema / properties / end_date_lte / titleRemoved value: -"End Date Lte" - removed
Input schema / properties / execution_date_gte / titleRemoved value: -"Execution Date Gte" - removed
Input schema / properties / execution_date_lte / titleRemoved value: -"Execution Date Lte" - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / offset / titleRemoved value: -"Offset" - removed
Input schema / properties / pool / titleRemoved value: -"Pool" - removed
Input schema / properties / start_date_gte / titleRemoved value: -"Start Date Gte" - removed
Input schema / properties / start_date_lte / titleRemoved value: -"Start Date Lte" - removed
Input schema / properties / state / titleRemoved value: -"State" - removed
Input schema / properties / task_id / titleRemoved value: -"Task Id"
- Changed
list_task_instances_batch6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / offset / titleRemoved value: -"Offset" - removed
Input schema / properties / start_date_gte / titleRemoved value: -"Start Date Gte" - removed
Input schema / properties / start_date_lte / titleRemoved value: -"Start Date Lte" - removed
Input schema / properties / state / titleRemoved value: -"State"
- Changed
list_tasks2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dag_id / titleRemoved value: -"Dag Id"
- Changed
list_users3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / offset / titleRemoved value: -"Offset"
- Changed
list_variables3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / offset / titleRemoved value: -"Offset"
- Changed
list_xcom_entries6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dag_id / titleRemoved value: -"Dag Id" - removed
Input schema / properties / dag_run_id / titleRemoved value: -"Dag Run Id" - removed
Input schema / properties / limit / titleRemoved value: -"Limit" - removed
Input schema / properties / offset / titleRemoved value: -"Offset" - removed
Input schema / properties / task_id / titleRemoved value: -"Task Id"
- Changed
pause_dag2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dag_id / titleRemoved value: -"Dag Id"
- Changed
running_dags1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
search_config_options2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / search_term / titleRemoved value: -"Search Term"
- Changed
trigger_dag2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dag_id / titleRemoved value: -"Dag Id"
- Changed
unpause_dag2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / dag_id / titleRemoved value: -"Dag Id"
- Changed
update_connection3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / connection_data / titleRemoved value: -"Connection Data" - removed
Input schema / properties / connection_id / titleRemoved value: -"Connection Id"
29 tool updates
v1.0.0- Added
create_connection - Changed
dag_calendar4 fields changed- removed
Input schema / properties / end_date / defaultRemoved value: -null - removed
Input schema / properties / limitRemoved value: -{ - "default": 20, - "title": "Limit", - "type": "integer" -} - removed
Input schema / properties / start_date / defaultRemoved value: -null - changed
Input schema / requiredPrevious value: -[ - "dag_id" -]New value: +[ + "dag_id", + "start_date", + "end_date" +]
- Changed
dag_run_duration1 field changed- changed
Input schema / properties / limit / defaultPrevious value: -50New value: +10
- Changed
dag_task_duration2 fields changed- added
Input schema / properties / dag_run_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Dag Run Id" +} - removed
Input schema / properties / run_idRemoved value: -{ - "default": null, - "title": "Run Id", - "type": "string" -}
- Added
delete_connection - Added
get_config - Added
get_config_section - Added
get_connection - Added
get_dataset - Added
get_dataset_events - Added
get_provider - Changed
get_task_instance_logs2 fields changed- removed
Input schema / properties / full_contentRemoved value: -{ - "default": false, - "title": "Full Content", - "type": "boolean" -} - removed
Input schema / properties / tokenRemoved value: -{ - "default": null, - "title": "Token", - "type": "string" -}
- Added
get_user - Changed
get_xcom_entry1 field changed- removed
Input schema / properties / map_indexRemoved value: -{ - "default": -1, - "title": "Map Index", - "type": "integer" -}
- Added
list_config_sections - Added
list_connections - Added
list_dataset_events - Added
list_datasets - Changed
list_event_logs4 fields changed- added
Input schema / properties / dag_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / dag_id / typeRemoved value: -"string" - removed
Input schema / properties / run_idRemoved value: -{ - "default": null, - "title": "Run Id", - "type": "string" -} - removed
Input schema / properties / task_idRemoved value: -{ - "default": null, - "title": "Task Id", - "type": "string" -}
- Added
list_permissions - Added
list_plugins - Added
list_providers - Added
list_roles - Changed
list_task_instances_all27 fields changed- added
Input schema / properties / dag_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / dag_id / typeRemoved value: -"string" - added
Input schema / properties / dag_run_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / dag_run_id / typeRemoved value: -"string" - added
Input schema / properties / duration_gte / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - removed
Input schema / properties / duration_gte / typeRemoved value: -"number" - added
Input schema / properties / duration_lte / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - removed
Input schema / properties / duration_lte / typeRemoved value: -"number" - added
Input schema / properties / end_date_gte / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / end_date_gte / typeRemoved value: -"string" - added
Input schema / properties / end_date_lte / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / end_date_lte / typeRemoved value: -"string" - added
Input schema / properties / execution_date_gte / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / execution_date_gte / typeRemoved value: -"string" - added
Input schema / properties / execution_date_lte / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / execution_date_lte / typeRemoved value: -"string" - changed
Input schema / properties / limit / defaultPrevious value: -20New value: +100 - added
Input schema / properties / pool / anyOfAdded value: +[ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / pool / typeRemoved value: -"string" - removed
Input schema / properties / queueRemoved value: -{ - "default": null, - "title": "Queue", - "type": "string" -} - added
Input schema / properties / start_date_gte / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / start_date_gte / typeRemoved value: -"string" - added
Input schema / properties / start_date_lte / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / start_date_lte / typeRemoved value: -"string" - added
Input schema / properties / state / anyOfAdded value: +[ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / state / typeRemoved value: -"string" - added
Input schema / properties / task_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Task Id" +}
- Changed
list_task_instances_batch20 fields changed- removed
Input schema / properties / dag_idsRemoved value: -{ - "default": null, - "items": { - "type": "string" - }, - "title": "Dag Ids", - "type": "array" -} - removed
Input schema / properties / dag_run_idsRemoved value: -{ - "default": null, - "items": { - "type": "string" - }, - "title": "Dag Run Ids", - "type": "array" -} - removed
Input schema / properties / duration_gteRemoved value: -{ - "default": null, - "title": "Duration Gte", - "type": "number" -} - removed
Input schema / properties / duration_lteRemoved value: -{ - "default": null, - "title": "Duration Lte", - "type": "number" -} - removed
Input schema / properties / end_date_gteRemoved value: -{ - "default": null, - "title": "End Date Gte", - "type": "string" -} - removed
Input schema / properties / end_date_lteRemoved value: -{ - "default": null, - "title": "End Date Lte", - "type": "string" -} - removed
Input schema / properties / execution_date_gteRemoved value: -{ - "default": null, - "title": "Execution Date Gte", - "type": "string" -} - removed
Input schema / properties / execution_date_lteRemoved value: -{ - "default": null, - "title": "Execution Date Lte", - "type": "string" -} - added
Input schema / properties / limitAdded value: +{ + "default": 100, + "title": "Limit", + "type": "integer" +} - added
Input schema / properties / offsetAdded value: +{ + "default": 0, + "title": "Offset", + "type": "integer" +} - removed
Input schema / properties / poolRemoved value: -{ - "default": null, - "items": { - "type": "string" - }, - "title": "Pool", - "type": "array" -} - removed
Input schema / properties / queueRemoved value: -{ - "default": null, - "items": { - "type": "string" - }, - "title": "Queue", - "type": "array" -} - added
Input schema / properties / start_date_gte / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / start_date_gte / typeRemoved value: -"string" - added
Input schema / properties / start_date_lte / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / start_date_lte / typeRemoved value: -"string" - added
Input schema / properties / state / anyOfAdded value: +[ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } +] - removed
Input schema / properties / state / itemsRemoved value: -{ - "type": "string" -} - removed
Input schema / properties / state / typeRemoved value: -"array" - removed
Input schema / properties / task_idsRemoved value: -{ - "default": null, - "items": { - "type": "string" - }, - "title": "Task Ids", - "type": "array" -}
- Added
list_users - Changed
list_variables1 field changed- removed
Input schema / properties / order_byRemoved value: -{ - "default": "key", - "title": "Order By", - "type": "string" -}
- Added
search_config_options - Added
update_connection
34 tool updates
- First observed
all_dag_event_summary - First observed
all_dag_import_summary - First observed
dag_calendar - First observed
dag_code - First observed
dag_graph - First observed
dag_run_duration - First observed
dag_task_duration - First observed
failed_dags - First observed
get_dag - First observed
get_dags_detailed_batch - First observed
get_event_log - First observed
get_health - First observed
get_import_error - First observed
get_pool - First observed
get_prompt_template - First observed
get_task_instance_details - First observed
get_task_instance_extra_links - First observed
get_task_instance_logs - First observed
get_variable - First observed
get_version - First observed
get_xcom_entry - First observed
list_dags - First observed
list_event_logs - First observed
list_import_errors - First observed
list_pools - First observed
list_task_instances_all - First observed
list_task_instances_batch - First observed
list_tasks - First observed
list_variables - First observed
list_xcom_entries - First observed
pause_dag - First observed
running_dags - First observed
trigger_dag - First observed
unpause_dag
TDQS
Most tools have distinct purposes targeting specific Airflow entities (e.g., DAGs, connections, tasks), but there is notable overlap between similar listing tools like list_task_instances_all and list_task_instances_batch, and between get_config and get_config_section, which could cause confusion. Descriptions help differentiate, but the high count increases ambiguity.
Tool names follow a highly consistent verb_noun pattern throughout (e.g., get_dag, list_dags, pause_dag, update_connection), with clear and predictable naming conventions. All tools use snake_case and consistent verb choices (get, list, create, delete, update, trigger), making them easily readable and systematic.
With 54 tools, the count is excessive for an MCP server, likely overwhelming for agents and beyond typical well-scoped ranges (3-15 tools). While Airflow is complex, many tools could be consolidated (e.g., multiple task instance listers) or omitted, indicating poor scoping and usability concerns.
The tool set provides comprehensive coverage of Airflow's domain, including full CRUD operations for DAGs, connections, variables, and other entities, along with monitoring, health checks, and administrative functions. No obvious gaps are present; it supports core workflows and data lineage, making it highly complete for the stated purpose.
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
Query your warehouse or a CSV with Claude/ChatGPT over MCP, governed by table-level ACL + audit.
- mcpOAuthcom.gibsonai
GibsonAI MCP server: manage your databases with natural language
- SpanlyOAuthcom.spanly
MCP observability. Query live traffic, errors, duration, and alerts from your AI agent.
Related MCP Servers
AlicenseAqualityFmaintenanceAn MCP server that enables AI assistants to interact with Apache Airflow's REST API for DAG management, task monitoring, and system diagnostics. It provides comprehensive tools for triggering workflows, retrieving logs, and inspecting system health across Airflow 2.x and 3.x versions.3113Apache 2.0- AlicenseNot gradedqualityDmaintenanceEnables natural language interaction with Apache Airflow for querying DAGs, monitoring execution, and troubleshooting failures.1MIT
- 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
- AlicenseAqualityAmaintenanceAn MCP server that enables AI coding assistants to interact with a local Airflow cluster via its REST API for triggering DAG runs, monitoring status, reading logs, and diagnosing errors.101MIT
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-Airflow-API'
If you have feedback or need assistance with the MCP directory API, please join our Discord server









