AWS Sage
Click on "Deploy 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., "@AWS SageFind idle resources and provide cost saving recommendations"
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.
AWS Sage
A production-grade Model Context Protocol (MCP) server for AWS. Connect AI assistants to your AWS infrastructure and manage it through natural conversation.
🚀 Works with any MCP-compatible client - just install and configure.
Compatible Clients
Client | Status | Notes |
✅ Full Support | Recommended | |
✅ Full Support | CLI & IDE | |
✅ Full Support | MCP enabled | |
✅ Full Support | VS Code extension | |
✅ Full Support | MCP enabled | |
✅ Full Support | MCP enabled | |
VS Code + Copilot | ⏳ Planned | Via MCP extension |
Why AWS Sage?
AWS Labs offers 15 separate MCP servers for different services. AWS Sage takes a different approach:
Feature | AWS Labs MCP | AWS Sage |
Architecture | 15 separate servers | 1 unified server |
Tools | ~45 tools across servers | 30 intelligent tools |
Cross-Service Queries | No | Yes - discover resources across all services |
Dependency Mapping | No | Yes - "what depends on this resource?" |
Impact Analysis | No | Yes - "what breaks if I delete this?" |
Incident Investigation | No | Yes - automated troubleshooting workflows |
Cost Analysis | Separate server | Built-in - idle resources, rightsizing, projections |
LocalStack Support | No | Yes - seamless local development |
Multi-Account | No | Yes - cross-account via AssumeRole |
Docker Support | Separate | Built-in with docker-compose |
Safety System | Basic | 3-tier with 70+ blocked operations |
Natural Language | Limited | Full NLP with intent classification |
Related MCP server: InfraClaude
Features
Core Capabilities
Natural Language Queries: "Show me EC2 instances tagged production"
Multi-Profile Support: Switch between AWS profiles with SSO support
Auto-Pagination: Never miss resources due to pagination limits
Smart Formatting: Tabular output for lists, detailed JSON for single resources
Safety System
Three safety modes protect your infrastructure:
Mode | Description | Operations Allowed |
| Default - exploration only | list, describe, get |
| Normal operations | read + write (with confirmation) |
| Full access | all except denylist |
Always Blocked (70+ operations):
cloudtrail.delete_trail/stop_loggingiam.delete_account_password_policyorganizations.leave_organizationguardduty.delete_detectorkms.schedule_key_deletionAnd 65+ more critical operations
Unique Differentiators
Cross-Service Resource Discovery
Find resources across your entire AWS account:
"Find all resources tagged Environment=production"
"Discover resources with Name containing api"Dependency Mapping
Understand resource relationships:
"What resources does my Lambda function depend on?"
"Map dependencies for my ECS service"Impact Analysis
Know what breaks before you delete:
"What will break if I delete this security group?"
"Show impact of removing this IAM role"Incident Investigation
Automated troubleshooting workflows:
"Investigate why my Lambda is failing"
"Debug high latency on my ALB"
"Analyze this security alert"Cost Analysis
Find savings and optimize spending:
"Find idle resources in my account"
"Get rightsizing recommendations for EC2"
"Project costs for 3 t3.large instances"LocalStack Integration
Develop locally without touching production:
"Switch to LocalStack environment"
"Compare S3 buckets between localstack and production"Multi-Account Support
Work across AWS accounts:
"Assume role in account 123456789012"
"Switch to production account"Quick Start
# 1. Clone and install
git clone https://github.com/arunsanna/aws-sage
cd aws-sage
pip install .
# 2. Add to Claude Desktop config (see Configuration below)
# 3. Restart Claude Desktop
# 4. Start chatting: "List my S3 buckets"That's it! Claude Desktop automatically runs AWS Sage when needed.
Installation
Prerequisites
Python 3.11+
AWS credentials configured (
~/.aws/credentialsor~/.aws/config)Any MCP-compatible client (see Compatible Clients above)
Option 1: From Source
git clone https://github.com/arunsanna/aws-sage
cd aws-sage
pip install .Option 2: Direct from GitHub
pip install git+https://github.com/arunsanna/aws-sage.gitClient Configuration
First, find your Python path:
which python # or: which python3Claude Desktop
Config file location:
OS | Path |
macOS |
|
Windows |
|
Linux |
|
{
"mcpServers": {
"aws-sage": {
"command": "/path/to/python3",
"args": ["-m", "aws_sage.server"],
"env": {
"AWS_PROFILE": "default"
}
}
}
}Claude Code
Option 1: CLI command
claude mcp add aws-sage -s user -- python -m aws_sage.serverOption 2: Project config (.mcp.json in project root)
{
"mcpServers": {
"aws-sage": {
"command": "python",
"args": ["-m", "aws_sage.server"],
"env": {
"AWS_PROFILE": "default"
}
}
}
}Option 3: Global config (~/.claude.json)
{
"mcpServers": {
"aws-sage": {
"command": "python",
"args": ["-m", "aws_sage.server"],
"env": {
"AWS_PROFILE": "default"
}
}
}
}Cursor
Config file: ~/.cursor/mcp.json (global) or .cursor/mcp.json (project)
{
"mcpServers": {
"aws-sage": {
"command": "python",
"args": ["-m", "aws_sage.server"],
"env": {
"AWS_PROFILE": "default"
}
}
}
}Cline (VS Code Extension)
Config file: Access via Cline settings → "Configure MCP Servers" → cline_mcp_settings.json
{
"mcpServers": {
"aws-sage": {
"command": "python",
"args": ["-m", "aws_sage.server"],
"env": {
"AWS_PROFILE": "default"
},
"disabled": false
}
}
}Windsurf
Config file:
OS | Path |
macOS |
|
Windows |
|
{
"mcpServers": {
"aws-sage": {
"command": "python",
"args": ["-m", "aws_sage.server"],
"env": {
"AWS_PROFILE": "default"
}
}
}
}Zed
Config file: Zed Settings (settings.json)
{
"context_servers": {
"aws-sage": {
"command": "python",
"args": ["-m", "aws_sage.server"],
"env": {
"AWS_PROFILE": "default"
}
}
}
}VS Code (Native MCP)
Config file: .vscode/mcp.json (project)
{
"servers": {
"aws-sage": {
"command": "python",
"args": ["-m", "aws_sage.server"],
"env": {
"AWS_PROFILE": "default"
}
}
}
}Docker Installation (All Clients)
For enhanced security with container isolation:
git clone https://github.com/arunsanna/aws-sage
cd aws-sage
docker compose build aws-sageDocker config (use in any client above):
macOS/Linux:
{
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "${HOME}/.aws:/home/appuser/.aws:ro",
"-e", "AWS_PROFILE=default",
"aws-sage:latest"
]
}Windows:
{
"command": "docker",
"args": [
"run", "-i", "--rm",
"-v", "%USERPROFILE%\\.aws:/home/appuser/.aws:ro",
"-e", "AWS_PROFILE=default",
"aws-sage:latest"
]
}Tools Reference (30 Tools)
Credential Management
Tool | Description |
| List available AWS profiles |
| Select and authenticate with a profile |
| Show current account ID, region, identity |
Safety Controls
Tool | Description |
| Switch between READ_ONLY, STANDARD, UNRESTRICTED |
Query Operations (Read-Only)
Tool | Description |
| Natural language AWS queries |
| Check if an operation is valid without executing |
Execute Operations (Require Confirmation)
Tool | Description |
| Execute validated AWS operations |
Context & Memory
Tool | Description |
| View conversation context and recent resources |
| Create shortcuts for resources (e.g., "prod-db") |
| View all defined aliases |
Cross-Service Intelligence
Tool | Description |
| Find resources by tags across all services |
| Show what a resource depends on |
| Predict what breaks if you modify/delete something |
| Automated incident investigation workflows |
AWS Knowledge (Composition)
Tool | Description |
| Search AWS documentation |
| Query built-in AWS knowledge base |
| Get service-specific best practices |
| Show default service quotas |
Cost Analysis
Tool | Description |
| Find unused EC2/RDS/EBS/EIP resources |
| Get EC2 right-sizing suggestions |
| Spending analysis by service/tag |
| Estimate costs before deployment |
Environment Management
Tool | Description |
| List configured environments (production/localstack) |
| Switch between LocalStack and production |
| Current environment details |
| Verify LocalStack connectivity |
| Diff resources between environments |
Multi-Account Management
Tool | Description |
| Assume role in another account via STS |
| Show configured accounts |
| Change active account context |
Usage Examples
Basic Queries
"List all S3 buckets"
"Show EC2 instances in us-west-2"
"Describe Lambda function payment-processor"
"Get IAM users with console access"Cost Analysis
"Find idle resources in us-east-1"
"Get rightsizing recommendations for EC2"
"Show cost breakdown by service for last 30 days"
"Project costs for 2 t3.large and 100GB gp3 EBS"LocalStack Development
"Switch to localstack"
"Create an S3 bucket in localstack"
"Compare DynamoDB tables between localstack and production"
"Check localstack connectivity"Multi-Account Operations
"Assume role arn:aws:iam::123456789012:role/AdminRole"
"List all configured accounts"
"Switch to production account"Cross-Service Discovery
"Find all resources tagged with Environment=production"
"Discover resources owned by team-platform"
"Show all resources in the payment-service stack"Dependency Analysis
"What does my api-gateway Lambda depend on?"
"Map all dependencies for the checkout-service ECS task"
"Show resources connected to vpc-abc123"Impact Analysis
"What breaks if I delete sg-abc123?"
"Impact of terminating this RDS instance"
"What depends on this KMS key?"Incident Investigation
"Investigate Lambda failures for order-processor"
"Debug high latency: ALB arn:aws:elasticloadbalancing:..."
"Analyze security alert for instance i-abc123"Architecture
aws-sage/
├── Dockerfile # Container support
├── docker-compose.yml # LocalStack + MCP server
│
├── src/aws_sage/
│ ├── server.py # FastMCP server (30 tools)
│ ├── config.py # Configuration & safety modes
│ │
│ ├── core/
│ │ ├── session.py # AWS session management
│ │ ├── context.py # Conversation memory
│ │ ├── environment.py # Environment configuration
│ │ ├── environment_manager.py # LocalStack/production switching
│ │ ├── multi_account.py # Cross-account management
│ │ └── exceptions.py # Custom exceptions
│ │
│ ├── safety/
│ │ ├── classifier.py # Operation classification
│ │ ├── validator.py # Pre-execution validation
│ │ └── denylist.py # Blocked operations (70+)
│ │
│ ├── parser/
│ │ ├── intent.py # NLP intent classification
│ │ └── service_models.py # Botocore integration
│ │
│ ├── execution/
│ │ ├── engine.py # Execution orchestrator
│ │ └── pagination.py # Auto-pagination
│ │
│ ├── composition/
│ │ ├── docs_proxy.py # AWS documentation
│ │ └── knowledge_proxy.py # AWS knowledge base + live query
│ │
│ └── differentiators/
│ ├── discovery.py # Cross-service discovery
│ ├── dependencies.py # Dependency mapping
│ ├── workflows.py # Incident investigation
│ ├── cost.py # Cost analysis
│ └── compare.py # Environment comparison
│
└── tests/
├── unit/ # Unit tests (145 tests)
└── integration/ # Integration testsDevelopment (For Contributors)
Setup
git clone https://github.com/arunsanna/aws-sage
cd aws-sage
pip install -e ".[dev]"Run Tests
pytest # All tests
pytest --cov=aws_sage # With coverage
pytest tests/unit/test_cost.py # Specific moduleLocal Testing with LocalStack
Test against LocalStack without touching real AWS:
# Start LocalStack
docker compose up -d localstack
# In Claude Desktop, say:
# "Switch to localstack environment"
# "Create test bucket my-test-bucket"Debug Server Directly
For development/debugging (not needed for normal use):
fastmcp dev src/aws_sage/server.py # Interactive mode
python -m aws_sage.server # Direct runEnvironment Variables
Variable | Description | Default |
| AWS profile to use |
|
| Default AWS region |
|
| Safety mode (read_only/standard/unrestricted) |
|
| Enable LocalStack by default |
|
| LocalStack host |
|
| LocalStack port |
|
Troubleshooting
View Logs
# Claude Desktop logs
tail -f ~/Library/Logs/Claude/mcp-server-aws-sage.log
tail -f ~/Library/Logs/Claude/mcp.logCommon Issues
"Profile not found"
Ensure AWS credentials are configured in
~/.aws/credentialsor~/.aws/configFor SSO profiles, run
aws sso login --profile <name>first
"Operation blocked"
Check current safety mode with
get_account_infoUse
set_safety_modeto change if neededSome operations are always blocked (see denylist)
"Validation failed"
The parser validates operations against botocore models
Check spelling of service/operation names
Use
validate_operationto test before executing
"LocalStack not reachable"
Ensure LocalStack is running:
docker compose up -d localstackCheck endpoint:
curl http://localhost:4566/_localstack/healthUse
check_localstacktool to diagnose
Roadmap
v1.0.0 (Current)
30 intelligent tools across 10 categories
Cross-service discovery, dependency mapping, impact analysis
Cost optimization analyzer
LocalStack integration
Multi-account support
Docker containerization
3-tier safety system with 70+ blocked operations
Future
CloudFormation drift detection
Custom workflow definitions
Terraform state integration
Compliance scanning (CIS benchmarks)
References
Model Context Protocol Specification - Anthropic, 2024
MCP Ecosystem - 5,800+ servers, 97M monthly SDK downloads (2025)
AWS Labs MCP Servers - Official AWS MCP implementations
FastMCP Framework - Python MCP SDK
LocalStack - Local AWS cloud emulator
Contributing
See CONTRIBUTING.md for guidelines.
License
MIT License - see LICENSE for details.
Contact
GitHub Issues: arunsanna/aws-sage
Email: arun.sanna@outlook.com
Website: arunsanna.com
Available Tools
30 toolsassume_roleAssume RoleA
Assume an IAM role in another AWS account for cross-account access
| Name | Required | Description | Default |
|---|---|---|---|
| alias | No | Optional friendly name for this account | |
| role_arn | Yes | ARN of the role to assume (e.g., arn:aws:iam::123456789012:role/MyRole) | |
| external_id | No | External ID for cross-account access (if required by trust policy) | |
| session_name | No | Optional session name (auto-generated if not provided) | |
| duration_seconds | No | Credential validity duration (default: 3600 = 1 hour) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates the core action and does not explain that assuming a role changes the active session/credential context, that temporary credentials expire, or that caller permissions/trust policies may matter. For a security-sensitive operation, this is a meaningful gap.
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 filler or redundant restatement of the tool name. It communicates the essential action and purpose immediately.
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 and the input schema covers all parameters, so basic call construction is possible. However, with no annotations, the description leaves out important context about session behavior, credential lifetime, and how this differs from account switching tools, making it adequate but not 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 100%, so the baseline is 3. The description adds no extra meaning about the parameters themselves; role_arn, external_id, duration_seconds, and session_name are already well documented in 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 states a clear subject-verb-object: 'Assume an IAM role in another AWS account' and adds the cross-account purpose. This distinguishes it from sibling tools like select_profile or switch_account, which imply account switching rather than role assumption.
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 phrase 'for cross-account access' gives a clear context for when this tool should be used. It does not explicitly name alternatives or list when not to use it, so it falls just short of the explicit when/when-not standard.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aws_executeAws ExecuteD
Execute AWS operations (requires appropriate safety mode)
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| service | Yes | ||
| operation | Yes | ||
| parameters | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only hints at safety mode but does not describe side effects, confirmation flow, or response format. The confirm parameter is not mentioned, leaving a significant transparency gap for an execution 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 short and front-loaded with the purpose, but it is under-specified rather than concise. It omits essential context, making it not appropriately sized for a tool with 4 parameters and no schema descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (4 params, no annotations, no schema descriptions), the description is grossly incomplete. It doesn't explain what operations can be executed, how safety mode gates execution, or what the output looks like, even though an output schema exists.
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 mention service, operation, parameters, or confirm at all, offering no help to the agent in understanding what to pass.
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 a verb and resource ('Execute AWS operations') but is generic and does not differentiate from many sibling tools that also operate on AWS, such as aws_query or validate_operation. It lacks specificity about what operations are covered.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It mentions a prerequisite ('requires appropriate safety mode') but provides no guidance on when to use this tool versus alternatives. There are no exclusions or conditions directing the agent to a more specific sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
aws_queryAws QueryC
Execute read-only AWS queries (natural language supported)
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| region | No | ||
| service | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It conveys that operations are read-only, which is a useful safety signal, but it does not mention authentication or profile dependencies, response handling, or any limitations. The description is far from a full picture.
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 filler. It is front-loaded with the action and the key safety qualifier. While more information would be helpful, the structure is appropriately concise, though the conciseness does border on under-specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, zero schema parameter coverage, and a relatively broad sibling set, the description is too thin. The output schema handles return values, but the description fails to mention what makes the tool suitable for its purpose, how to structure the query, that region/service are optional filters, or any prerequisites. This leaves an agent under-informed for invoking it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema contains 0% description coverage, so the description must compensate. It indicates that the query parameter supports natural language, but it does not explain the purpose of the optional region and service parameters, nor does it mention they are optional filters. The names are self-explanatory, but the description adds minimal semantic value beyond them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Execute read-only AWS queries') and includes a key modifier ('read-only') that distinguishes it from a likely sibling (aws_execute). The resource is somewhat generic ('queries') but the read-only qualifier and the supported natural language make the tool's purpose clear.
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 about when to use this tool versus alternatives like aws_execute. The read-only label implies read-oriented use cases, but there is no explicit statement about conditions, prerequisites, or excluded scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_localstackCheck LocalstackA
Check LocalStack connectivity and available services
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full behavioral disclosure burden. The verb 'Check' implies a read-only, non-mutating operation, and 'connectivity' suggests network probing, but the description does not explicitly state read-only behavior, failure semantics, or any required LocalStack setup.
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 filler. It adds 'connectivity and available services' beyond the title, making every word earn its place.
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 zero-parameter health-check tool with an output schema, the description is sufficiently complete: it names the target (LocalStack) and the aspects checked (connectivity, services). Return-value details are reasonably left to the output schema, though the description does not mention how failures are surfaced.
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 an empty schema, so there are no parameter semantics to add. The baseline for zero-parameter tools is 4, and the description does not need to compensate for any schema gaps.
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 a specific action ('Check') and a specific resource ('LocalStack connectivity and available services'), clearly indicating this is a health/inspection tool. It does not explicitly differentiate from sibling tools, but none of the siblings obviously cover the same LocalStack connectivity check.
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 purpose itself implies when to use it: when you need to verify LocalStack connectivity or see what services are available. However, the description gives no explicit guidance, prerequisites, or exclusions, leaving usage context to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_environmentsCompare EnvironmentsB
Compare resources between two AWS environments (e.g., localstack vs production)
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | Source environment name (default: localstack) | localstack |
| target | No | Target environment name (default: production) | production |
| service | Yes | AWS service to compare (s3, dynamodb, lambda, sqs, sns) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose whether the operation is read-only, what the output format is, or any side effects. This is a significant gap for a comparison tool that may query multiple services.
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, concise sentence that gets to the point without fluff. It is appropriately front-loaded.
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 tool with three parameters and no annotations, the description is too sparse. It doesn't clarify what 'resources' includes, how the comparison is presented, or any operational constraints. The presence of an output schema helps, but the description still leaves key context unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters with descriptions. The description adds no additional parameter context beyond the example in the description, which is already captured by the schema 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?
States a specific verb 'compare' and the resource 'AWS environments', with an example. It distinguishes from sibling tools like list_environments and switch_environment, which manage environments rather than compare resources.
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. It gives an example of typical use but doesn't mention when not to use it or mention any alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_resourcesDiscover ResourcesC
Find resources across services by tags
| Name | Required | Description | Default |
|---|---|---|---|
| tags | Yes | ||
| region | No | ||
| services | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'Find resources across services by tags' and doesn't disclose whether this is a read-only operation, whether it queries AWS APIs directly, whether it can be slow, whether it requires prior profile/account selection, or what happens with no matching resources. The output schema exists but the description doesn't explain the behavior beyond the basic search.
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 with no wasted words. It is front-loaded with the verb and resource. However, it is so brief that it sacrifices useful detail, which is a conciseness tradeoff that doesn't fully serve the agent.
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 3 parameters, no annotations, and a 0% schema description coverage, the description is incomplete. The output schema exists, but the agent still lacks guidance on how to construct the tags object, whether region/services are filters or required for certain services, and what the returned resources look like. A more complete description would explain the search scope and result 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?
Schema description coverage is 0%, so the description must compensate for the schema's lack of parameter documentation. The description only mentions 'tags' implicitly and says nothing about 'region' or 'services' parameters. The schema shows types and defaults, but the description adds no meaning about how these parameters interact or what values are expected.
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 a clear verb ('Find') and resource ('resources across services by tags'), which distinguishes it from many sibling tools. However, it doesn't specify what kind of resources or what 'across services' means concretely, and it doesn't differentiate it from similar discovery tools like find_idle_resources or map_dependencies.
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 about when to use this tool versus alternatives. The description implies tag-based discovery, but it doesn't state when an agent should prefer this over find_idle_resources, map_dependencies, or aws_query. There are no exclusions or context cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_idle_resourcesFind Idle ResourcesC
Find potentially idle or underutilized AWS resources
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | ||
| services | No | ||
| lookback_days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden. It does not disclose whether this scans across regions, what permissions are needed, whether it makes AWS API calls, or any side effects. The definition of 'idle' is left undefined.
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 filler, but it essentially restates the tool name/title with minor elaboration. It is adequate but does not add meaningful structure or detail beyond the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the output schema and optional parameters, the description fails to define key operational context such as which services are checkable, what 'idle' means, or regional defaults. This could lead to incorrect 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 schema provides no descriptions for region, services, or lookback_days (0% coverage). The description does not explain any parameter's meaning, format, or relationship to the tool's 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 states a specific verb ('find') and a distinct resource category ('idle or underutilized AWS resources'). It is clear but does not explicitly differentiate from overlapping siblings such as get_rightsizing_recommendations or discover_resources.
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. The description does not mention when to prefer it, what conditions make it appropriate, or which sibling tools to consider instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_infoGet Account InfoA
Get current AWS account and session information
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool retrieves information (implying a read operation) but doesn't disclose details like whether it requires prior authentication, whether it reflects live AWS state, or what happens if no session is active. The description is accurate but minimal.
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 action and resource. It earns its place with no wasted words, though it could add a bit more context about what 'session information' includes.
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 zero parameters and an output schema exists, so the description doesn't need to explain return values. However, given the sibling list includes get_context and get_environment_info, a bit more context about what distinguishes this tool would improve completeness. The description is adequate but minimal for a tool that likely serves as a quick status 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?
The tool has zero parameters, so the schema provides no parameter semantics to cover. The description correctly indicates the tool takes no input and simply returns current account/session info. Baseline 4 for zero-parameter tools is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('current AWS account and session information'), which clearly identifies the tool's function. It doesn't explicitly distinguish it from siblings like get_context or get_environment_info, but the AWS account/session scope is specific enough to be understood.
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 context (retrieving current account/session info) but provides no explicit guidance on when to use this tool versus alternatives like get_context or get_environment_info. No exclusions or alternative routing are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_aws_knowledgeGet Aws KnowledgeC
Get AWS best practices and operational knowledge
| Name | Required | Description | Default |
|---|---|---|---|
| service | No | ||
| category | No | ||
| question | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states that the tool retrieves AWS knowledge; it does not disclose whether results are static docs, require live AWS access, are rate-limited, or behave differently by category or service.
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 with no wasted words. However, its brevity leans toward under-specification rather than efficient completeness, so it earns only a middle score.
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 presence of an output schema helps, but the tool has no annotations and the description does not establish when to use it, what makes it different from siblings, or what operational knowledge actually means. An agent has too little context to invoke it confidently.
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 parameters. The meanings of 'question', 'service', and 'category' are left entirely to inference, so the description adds no parameter-level value.
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 names a verb and broad resource ('Get AWS best practices and operational knowledge'), so it is not a tautology. However, it is vague about scope and overlaps heavily with the sibling tool get_best_practices, so an agent cannot reliably tell which tool to pick.
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 gives no when-to-use guidance and names no alternatives or exclusions. With siblings like get_best_practices, search_docs, and aws_query, the absence of explicit routing makes selection ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_best_practicesGet Best PracticesC
Get best practices for an AWS service
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It merely says 'Get best practices' with no mention of whether the operation is read-only, what it returns, any side effects, or permission requirements. This is insufficient for a tool with no annotation support.
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 with no wasted words. It is front-loaded with the essential action and scope, though it could arguably be 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 tool has only one parameter and an output schema exists (which likely documents return format), the description may be minimally sufficient. However, it lacks any context about when to use it over similar tools, and the absence of annotations makes it less complete than it could be for a 1-param, read-style 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 schema has a single parameter 'service' with no description, and schema coverage is 0%. The description adds a hint that the service refers to an AWS service, which clarifies the parameter's intent. However, it does not specify expected formats, examples, or valid values, so the compensation is partial.
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 a clear action (get) and resource (best practices) scoped to an AWS service. It is specific enough to understand the tool's core purpose, though it does not explicitly differentiate from siblings like get_aws_knowledge or search_docs, which could overlap.
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. There is no mention of prerequisites, conditions, or exclusions. An agent must infer its applicability from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contextGet ContextB
Get current conversation context (recent resources, aliases)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose any behavioral traits such as whether the context is cached, how 'recent' is defined, or any side effects. Minimal information is given.
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, efficient sentence with no waste. It is appropriately sized for a tool with no parameters and front-loads the core 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?
For a simple getter with an output schema, the description covers the basic scope (recent resources, aliases) but does not elaborate on what 'context' entails beyond those two items. It is adequate but not comprehensive; the output schema handles return details.
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 schema fully covers them. Baseline for 0 parameters is 4; the description adds no parameter-specific meaning, which is acceptable given there are none.
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 a specific verb (Get) and resource (current conversation context), and clarifies the content (recent resources, aliases). It is clear but does not explicitly differentiate from siblings like list_aliases or discover_resources, which overlap partially.
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. It does not mention when to prefer this over list_aliases or discover_resources, leaving the agent to infer from the description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cost_breakdownGet Cost BreakdownC
Get cost breakdown by service or tag
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days to analyze (default: 30) | |
| tag_key | No | Tag key to group by (required if group_by=TAG) | |
| group_by | No | How to group costs - SERVICE, TAG, or USAGE_TYPE | SERVICE |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does not state that the operation is read-only, describe the output structure, or mention any rate limits or data scope (e.g., multi-account aggregation). The description adds no behavioral context beyond the basic intent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no fluff. It front-loads the core purpose, though the brevity sacrifices useful details like parameter dependencies. It is appropriately concise but 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?
The tool has 3 optional parameters and an output schema, yet the description does not explain the default behavior (days=30), the dependency between tag_key and group_by, or the full set of grouping options. It is insufficient for an agent to call it correctly without deep schema inspection, especially given the absence of behavioral hints.
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 already documents all parameters (100% coverage). The description adds meaning by clarifying the grouping options SERVICE and TAG, but omits USAGE_TYPE and fails to note that tag_key is required when grouping by TAG. This partial addition gives a baseline of 3, as it provides some value but is incomplete.
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 a cost breakdown, with a specific verb and resource. It mentions grouping by service or tag, which distinguishes it from project_costs but does not explicitly name alternatives or cover the USAGE_TYPE grouping option.
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 siblings such as project_costs or get_rightsizing_recommendations. There is no mention of prerequisites, context, or exclusions, leaving the agent to guess applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_environment_infoGet Environment InfoC
Get detailed information about the current AWS environment
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read operation ('Get') but does not mention any side effects, required permissions, rate limits, or what happens when invoked. The description is minimal and leaves behavioral expectations 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, concise sentence that front-loads the action. It contains no filler or redundancy, though it is perhaps too terse to convey full meaning.
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 no-parameter tool with an output schema, the description is minimally adequate. However, it does not clarify what 'environment' means or what 'detailed information' includes, which could lead to confusion when an agent chooses among related tools. The output schema may fill some gaps, but the description alone is thin.
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 schema coverage is trivially complete and the description adds nothing about parameters. Per the rubric, 0 params warrants a baseline of 4, and there is no need for the description to compensate.
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 a clear verb ('Get') and a resource ('detailed information about the current AWS environment'), but it is vague about what 'environment' specifically refers to and does not distinguish it from sibling tools like get_account_info or list_environments. The phrase 'detailed information' is generic and offers no concrete 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 is provided on when to use this tool versus alternatives such as get_account_info or switch_environment. The description gives no context, exclusions, or conditions that would help an agent select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rightsizing_recommendationsGet Rightsizing RecommendationsC
Get recommendations for right-sizing EC2 and RDS instances
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | ||
| services | No | ||
| lookback_days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'get recommendations' without stating whether it performs read-only queries, what data sources it uses, or what the output contains. The minimal wording implies a read operation but fails to disclose any nuances.
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, but that reflects under-specification rather than effective conciseness. It lacks necessary details and does not earn its place as a complete definition; the single sentence is not enough to guide correct usage.
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 optional parameters, no annotations, and zero schema coverage, the description is severely incomplete. While the output schema exists, the description still omits usage context, parameter roles, and behavioral expectations, making it inadequate for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate by explaining parameters. It does not mention region, services, or lookback_days at all, leaving the agent to infer their meaning from names alone. This is a significant gap for a tool with three optional 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 states a clear verb (get) and resource (right-sizing recommendations for EC2 and RDS instances), which unambiguously identifies the tool's core purpose. However, it does not distinguish it from siblings like get_best_practices or find_idle_resources, so it earns a 4 rather than a 5.
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. The description omits any context about prerequisites, selection criteria, or exclusions, leaving the agent without direction on choosing this over get_cost_breakdown or find_idle_resources.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_limitsGet Service LimitsC
Get service quotas and limits for an AWS service
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the behavioral burden, but it only states a read-style action ('Get'). It does not disclose whether it is safe, whether it requires credentials, how it handles regional differences, or whether quotas come from the current account or environment.
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 filler. It loses a point because it is so terse that it provides almost no operational value beyond the tool name.
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?
Although an output schema is present, the description still leaves essential context missing: how to specify the service, what the returned limits represent, and what prerequisites exist. For a tool with no annotations and no parameter documentation, this 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 coverage is 0% and the description adds no meaningful meaning to the 'service' parameter beyond the schema's type string. It does not provide examples, expected format, or clarify what counts as an AWS service identifier, so an agent is left guessing how to populate 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 states a clear verb and resource: getting service quotas and limits for an AWS service. It is distinct enough from sibling tools like get_account_info or get_context, though it does not explicitly differentiate itself from potential similar quota 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 given about when to use this tool versus alternatives such as aws_query, get_best_practices, or get_rightsizing_recommendations. It does not mention required setup, like an active profile or selected account, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
impact_analysisImpact AnalysisC
Analyze the impact of modifying or deleting a resource
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | ||
| resource_arn | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Analyze' without indicating whether the operation is read-only, requires specific permissions, has side effects, or what the output will be. This is a critical gap for a tool that could be expected to report on resource modifications.
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 brief (one sentence) but that brevity is under-specification rather than conciseness. It lacks any structural detail such as context, prerequisites, or examples. While it is front-loaded with the main action, it omits essential information an agent needs, making it inadequately sized.
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 two parameters, a required resource_arn, and an output schema, the description is far from complete. It does not explain what 'impact' entails, what information the output will contain, or any usage constraints. The description is insufficient for an agent to call this tool correctly without additional assumptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, meaning the input schema provides no parameter explanations. The description adds zero information about resource_arn or region, leaving the agent to guess what values are expected. It completely fails to compensate for the missing schema 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 states a clear action ('Analyze the impact') and a specific resource scope ('modifying or deleting a resource'). It is specific enough to convey the tool's core function, though it does not explicitly differentiate from sibling tools like validate_operation or map_dependencies. Still, it avoids tautology and is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any conditions, exclusions, or refer to related tools. The usage context is entirely implied, leaving the agent to infer when impact analysis is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
investigate_incidentInvestigate IncidentD
Run automated incident investigation workflow
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | ||
| resource | Yes | ||
| incident_type | Yes | ||
| time_range_hours | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavioral traits, but it only promises an 'automated incident investigation workflow'. It does not mention side effects, permissions, changing state, resource impact, or operational boundaries, so an agent cannot predict what invoking this tool will actually do.
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 and front-loaded with 'Run', but it achieves brevity by omitting substance. It is under-specified rather than efficiently informative, so while not bloated, it does not earn its length with useful detail.
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 workflow tool with four parameters, only two required, no annotation context, and no parameter documentation, this description is grossly incomplete. Even with an output schema available, the agent lacks sufficient information to invoke it correctly or safely.
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 about incident_type, resource, region, or time_range_hours. It does not clarify required values, optional behavior, or how time_range_hours affects the investigation.
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 'Run automated incident investigation workflow' essentially restates the tool's name and title without explaining what the investigation does. It identifies an action and resource but remains vague and does not distinguish itself from plausible siblings like impact_analysis or get_context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not state scenarios, prerequisites, or exclusionary conditions, leaving the agent to infer usage solely from the tool's name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_accountsList AccountsB
List all configured AWS accounts (including assumed roles)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only adds 'including assumed roles' and does not mention read-only nature, authentication requirements, scoping behavior, or failure characteristics.
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 filler, and the key scope qualifier ('including assumed roles') is included up front. It is appropriately brief for a zero-parameter 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 that there are no parameters and an output schema exists, the description is mostly complete for a simple listing operation. However, the large sibling list creates mild ambiguity about which account/profile listing tool to use, so a brief usage note would make it 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 tool has zero parameters and the schema fully covers this with an empty properties object, so no parameter explanations are needed. The baseline of 4 applies because there is nothing for the description to add.
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 a specific verb ('List') and resource ('all configured AWS accounts'), and adds the qualifier 'including assumed roles', which is concrete. However, it does not differentiate from the sibling tool list_profiles, so an agent might not know which 'list' tool to pick without further inspection.
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 list_profiles, get_account_info, or switch_account. The description implies a listing use case but offers no exclusions, alternatives, or context about when it is the appropriate choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_aliasesList AliasesB
List all defined aliases
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations to provide safety or behavioral hints, so the description carries the full burden. It only states the action without disclosing any behavior such as return format, ordering, error conditions, or side effects. For a list operation, some indication of what is returned or how aliases are defined would be expected.
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 filler. It front-loads the action and resource, and every word earns its place. This is appropriately concise for a simple, parameterless 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 trivial parameter set and the presence of an output schema, the description is nearly complete. However, it does not explain what an 'alias' is or why one might list them, which could be relevant given the rich set of sibling tools. A bit more context about the domain of aliases would 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 zero parameters, so the input schema fully covers the parameter dimension. Per the rubric, the baseline is 4 when there are no parameters. The description adds nothing beyond the schema, but nothing is 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 a specific verb ('list') and a clear resource ('all defined aliases'). It is unambiguous and distinguishes the tool from obvious siblings like set_alias, though it does not explicitly name alternatives. A clear purpose with a minor lack of explicit sibling differentiation.
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. It does not mention any context, prerequisites, or exclusions. An agent must infer its usage from the name alone, which is insufficient given the large set of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_environmentsList EnvironmentsA
List all configured AWS environments (production, localstack)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool lists configured environments and gives examples, but it does not disclose whether this is a read-only operation, whether it hits AWS APIs or a local config, or whether it can fail. The behavior is simple enough that a 3 is fair, but more context would help.
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 short sentence that is front-loaded with the verb and resource, and includes useful examples. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool, the description is mostly complete. However, there is no output schema detail in the description and no mention of whether the list is from local config or AWS, which could matter for an agent deciding between this and get_environment_info. The output schema exists, so return values are covered, but the source of truth is ambiguous.
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 schema provides no semantics to add. The description adds the meaning of the output scope ('all configured AWS environments') and examples. With 0 params, baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('all configured AWS environments'), and gives examples of what those environments are (production, localstack). It is clear and distinguishes from siblings like list_profiles and list_accounts, though it doesn't explicitly name a sibling.
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: call this to see configured environments. It does not explicitly state when to use this vs. switch_environment, get_environment_info, or compare_environments, which are sibling tools that also relate to environments. No exclusions or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_profilesList ProfilesA
List all available AWS profiles
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, but 'List' makes it clear this is a read-only enumeration and 'all available' signals comprehensiveness. It does not describe the source of profiles or mention behavior when none are found, but the output schema already covers the return shape.
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 wasted words. It says exactly what the tool does and adds the useful qualifier 'available' without repeating schema or annotation 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?
For a parameterless listing tool with an output schema, the description is largely sufficient. It could benefit from a note about how it relates to select_profile or where profiles come from, but those are not required for an agent to invoke it successfully.
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 there is nothing for the description to explain. This matches the baseline for parameterless tools, and the description appropriately avoids inventing irrelevant parameter details.
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 uses the verb 'List' and explicitly identifies the resource as 'all available AWS profiles,' making the operation unambiguous. It is naturally distinguished from sibling tools like select_profile, which performs a selection, and list_accounts, which targets a different resource type.
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 about when to use this tool versus related siblings such as select_profile or get_account_info. No explicit context, exclusions, or alternatives are provided, leaving the agent to infer the appropriate usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
map_dependenciesMap DependenciesC
Map resource dependencies and relationships
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | ||
| max_depth | No | ||
| resource_arn | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only says 'map', implying a read-only operation, but does not mention traversal depth limits, resource types covered, or any side effects. This is a significant gap for a tool that likely performs complex graph traversal.
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), but it is under-specified rather than concise. It front-loads the verb but omits critical details, making it an incomplete specification rather than an efficient one.
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, the description provides no context about the dependency graph structure, depth semantics, or edge cases. For a tool that maps dependencies, an agent would need to know what kind of relationships are captured and how max_depth behaves. This is inadequate.
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 parameters (resource_arn, region, max_depth). The agent must infer their meaning solely from names, which is insufficient for correct invocation.
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 a clear verb ('Map') and resource ('resource dependencies and relationships'), which conveys the core purpose. However, it does not differentiate from siblings like discover_resources or impact_analysis, so it earns a 4 rather than a 5.
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 gives no guidance on when to use this tool versus alternatives. There is no mention of typical scenarios, prerequisites, or exclusions, leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_costsProject CostsC
Estimate costs for proposed AWS resources
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region for pricing | |
| resources | Yes | List of resource configurations |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'Estimate' suggests a read-only operation, but there is no statement about whether it is non-destructive, what inputs it requires (e.g., a selected profile), how it handles multiple resource configurations, or what the response contains. The absence of any behavioral context leaves the agent uncertain about side effects and prerequisites.
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, front-loading the core purpose. However, it is under-specified – it omits critical usage and behavioral details that could be added without sacrificing conciseness. It is not verbose, but it does not earn its place as the sole narrative; a few additional clauses could significantly improve 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?
Given the existence of an output schema (not shown) and a relatively simple parameter set, the description still falls short. It does not explain the expected format of resource objects, how region interacts with resources, or the output shape. It also does not clarify whether this tool is for estimation only or if it commits changes. The lack of usage context and behavioral details makes it incomplete for an agent to call correctly without external 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 100%, so both parameters have descriptions in the schema (region: 'AWS region for pricing'; resources: 'List of resource configurations'). The tool description adds no further parameter meaning, leaving the structure of each resource object undefined despite additionalProperties: true. Since the schema covers the basics, the baseline of 3 applies, but the lack of elaboration on resource configuration format is a gap.
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 a clear verb ('Estimate') and a specific resource ('costs for proposed AWS resources'). It implies a forward-looking estimation distinct from existing-cost tools like get_cost_breakdown, though it does not explicitly name a sibling. The phrase 'proposed' hints at pre-deployment scenarios, which differentiates it from cost breakdown of existing usage.
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. There is no mention of scenarios, prerequisites (like needing a profile/account), or exclusions (e.g., not for existing resources). The agent must infer usage from the name and description alone, which is insufficient given the rich set of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_docsSearch DocsC
Search AWS documentation for a service or topic
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| service | No | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read-only search but does not disclose behavior such as pagination, network access, result limits, or failure modes. It adds minimal behavioral context beyond the title.
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 the action and object, no filler. However, it is so terse that it sacrifices useful guidance; still, as written, it is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values are covered, but with no annotations, no usage guidance, and no parameter semantics, the description is not complete enough for an agent to reliably select and invoke this tool among many siblings. It is a minimal viable description at best.
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 must compensate for three parameters. It offers only a vague hint ('for a service or topic') that relates to query/service, but it never explains max_results, the meaning of service, or query syntax. This is insufficient for 0% schema 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 uses a specific verb ('Search') and resource ('AWS documentation') and indicates scope ('for a service or topic'). It is clearly distinct from execute/query tools, but it does not explicitly differentiate from siblings like get_aws_knowledge or aws_query, so not a 5.
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 choose search_docs over get_aws_knowledge, aws_query, or get_best_practices. No mention of use cases, prerequisites, or exclusions. The description simply states what it does, leaving the agent to infer selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_profileSelect ProfileC
Select an AWS profile to use for operations
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | ||
| profile | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a stateful action that affects subsequent operations, but does not disclose persistence, scope, side effects, or whether the selection applies globally or per request.
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 filler, front-loading the action and resource. It is appropriately brief, though the brevity shades into under-specification.
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 an output schema exists, the description leaves out important context: how selection affects subsequent commands, which sibling should be used for other profile-related tasks, and what values profile expects. Given multiple ambiguous siblings, this is not complete enough for reliable tool selection.
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 for the profile or region parameters. It does not clarify that region is optional or how profile values map to the listed profiles.
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 a specific verb ('Select') and resource ('an AWS profile') with an intended purpose ('to use for operations'). It is clear and not a tautology, though it does not explicitly differentiate from similar siblings like assume_role or switch_account.
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 phrase 'to use for operations' hints at when it matters, but there is no guidance on when to choose this over alternatives such as switch_account, assume_role, or list_profiles. No exclusions or conditional context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_aliasSet AliasC
Create a shortcut alias for a resource
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| value | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'create', implying a mutation, but does not disclose side effects, idempotency, overwriting behavior, permissions, or any consequences. This is a significant gap for a tool that modifies state.
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 efficient in length but under-specified. It lacks necessary detail to be useful, so it falls short of being appropriately sized for the tool's 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?
For a 2-parameter mutation tool with no annotations and 0% schema coverage, this description is critically incomplete. It does not explain return values, error conditions, or any behavioral context, leaving the agent with no reliable basis to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the parameters. It does not mention 'name' or 'value' at all, leaving the agent to guess their meanings and expected formats. The description adds no value beyond the raw schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action (create) and target (shortcut alias for a resource). It differentiates from sibling list_aliases by explicitly mentioning creation. However, it doesn't specify what constitutes an 'alias' or the exact resource scope, leaving some ambiguity.
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. It does not mention prerequisites, typical scenarios, or when not to use it. The agent must infer usage from the name alone, which is insufficient for proper routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_safety_modeSet Safety ModeC
Change the safety mode for operations
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description bears the full responsibility for behavioral disclosure. It says 'Change' which implies mutation, but it does not describe side effects, whether the change is reversible, what happens to ongoing operations, or any permission requirements. For a tool that alters state, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is concise in length but under-specified. It does not earn its place by providing useful information; it is merely a restatement of the title with a minor verb change. The lack of substance makes it inadequate rather than 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?
The tool has one parameter and no annotations. The description does not explain the purpose of the safety mode, what operations it affects, or any preconditions. Even though an output schema exists (not provided), the description does not convey what the tool returns. For a simple tool, the description is incomplete and leaves critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the only parameter 'mode'. The description does not explain what valid values are, what each mode does, or any format expectations. The description adds no meaning beyond the raw schema, and with zero coverage, the agent is left completely uninformed about the parameter's 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 states a specific verb ('Change') and a resource ('safety mode') with a context ('for operations'), which is more than a tautology. However, it does not define what 'safety mode' means, what modes are valid, or how it distinguishes from sibling tools like set_alias or switch_environment. It is clear at a high level but lacks the specificity needed for an agent to know exactly what it does.
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, no mention of required prerequisites, and no mention of what modes are acceptable. It does not reference any sibling tool or provide context on typical scenarios. An agent cannot infer when to call this from the description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_accountSwitch AccountC
Switch the active AWS account context
| Name | Required | Description | Default |
|---|---|---|---|
| account | Yes | Account ID or alias to switch to |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for disclosing behavior. It only states 'Switch' but does not mention side effects (e.g., changing global state, affecting other sessions), permission requirements, reversibility, or what the operation returns. This is minimal transparency for a mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no unnecessary words. It is appropriately sized for a simple tool, but it lacks a structured breakdown or additional helpful context that could be packed into the same space 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?
Given the presence of an output schema, return values are covered, but the description omits usage guidance and behavioral details. For a state-changing tool with no annotations and several related siblings, the description is insufficient for an agent to select and invoke the tool correctly without 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?
Schema description coverage is 100%, with the parameter 'account' described as 'Account ID or alias to switch to'. The description adds no additional meaning beyond the schema, meeting the baseline of 3 for high coverage. No extra context about valid formats or accepted aliases 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 'Switch the active AWS account context' uses a specific verb ('switch') and resource ('active AWS account context'), making the core function clear. It distinguishes from siblings like switch_environment and select_profile by focusing on account context, though it does not explicitly differentiate itself from assume_role or list_accounts.
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 assume_role, select_profile, or switch_environment. The description does not mention prerequisites, use cases, or exclusions, leaving the agent to infer when 'switch_account' is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_environmentSwitch EnvironmentB
Switch between AWS environments (production or localstack)
| Name | Required | Description | Default |
|---|---|---|---|
| validate | No | Whether to validate connectivity before switching | |
| environment | Yes | Environment name ('production' or 'localstack') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for disclosing behavioral traits. It only says 'switch between environments' without stating whether this affects subsequent operations, is reversible, persists across sessions, or has side effects like modifying configuration files. It also doesn't mention the validation behavior (though the validate parameter hints at it) or what happens on failure. For a state-changing tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the verb and resource. It names the two environments, which is essential context, and has no filler or redundant phrasing. Every word earns its place.
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 purpose and the presence of an output schema, the description is incomplete for an agent to use it correctly. It lacks critical context about how the switch affects the environment state, whether it is reversible, and how it relates to sibling tools like aws_query or aws_execute. The simple parameter set is documented, but the operational context is 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 description coverage is 100%, so both parameters (validate and environment) are well-documented in the schema itself. The description adds the list of allowed environments, but the schema already includes that in the environment parameter description. The description does not add any extra meaning or usage hints beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: switching between two named AWS environments (production or localstack). It uses a specific verb ('switch') and resource ('AWS environments'), and it distinguishes itself from siblings like switch_account (which switches accounts, not environments) and list_environments (which lists, not switches). The two environment values are explicitly named, leaving no ambiguity about what this tool does.
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. With siblings like check_localstack, get_environment_info, and compare_environments, the agent is left to infer when switching is appropriate (e.g., before running aws_query or aws_execute). No mention of prerequisites, ordering, or situations where another tool should be used instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_operationValidate OperationA
Check if an operation is valid and allowed without executing
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes | ||
| operation | Yes | ||
| parameters | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. The key behavioral guarantee 'without executing' is disclosed, which is important. However, it does not explain what 'valid' or 'allowed' mean in terms of side effects, permission checks, or whether validation has any external effects. Some transparency is present, but not deep.
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-loaded, and every phrase earns its place. The core behavior and key non-execution constraint are stated in a single efficient sentence with no fluff or repetition.
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 is relatively simple and has an output schema, so return-value documentation is not required here. Still, there is no guidance on when to use this versus aws_query/aws_execute, and the parameter semantics are thin. It is minimally viable but lacks enough surrounding context to be considered 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 for undefined parameters. It gives only slight meaning to 'operation' by saying operations can be valid and executable, but 'service' and 'parameters' remain unexplained. The description adds minimal semantic value beyond the schema's bare 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 uses a specific verb ('Check') with a clear resource ('an operation') and defines the scope precisely: 'valid and allowed without executing.' This clearly distinguishes it from execution-oriented siblings like aws_execute and aws_query, which actually run operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without executing' implies this is the safe pre-check tool to use before running an operation, but it does not explicitly name alternatives or state when to avoid this tool. The usage context is implied rather than directly stated.
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.
30 tool updates
v1.0.0- First observed
assume_role - First observed
aws_execute - First observed
aws_query - First observed
check_localstack - First observed
compare_environments - First observed
discover_resources - First observed
find_idle_resources - First observed
get_account_info - First observed
get_aws_knowledge - First observed
get_best_practices - First observed
get_context - First observed
get_cost_breakdown - First observed
get_environment_info - First observed
get_rightsizing_recommendations - First observed
get_service_limits - First observed
impact_analysis - First observed
investigate_incident - First observed
list_accounts - First observed
list_aliases - First observed
list_environments - First observed
list_profiles - First observed
map_dependencies - First observed
project_costs - First observed
search_docs - First observed
select_profile - First observed
set_alias - First observed
set_safety_mode - First observed
switch_account - First observed
switch_environment - First observed
validate_operation
TDQS
Scored across 30 tools
Core operational tools like aws_query, aws_execute, and validate_operation are reasonably distinct, but several knowledge tools overlap (search_docs, get_aws_knowledge, get_best_practices). Profile/account tools (list_profiles, list_accounts, switch_account, select_profile) also have unclear boundaries.
Most tools use snake_case and many follow a verb_noun pattern, but the pattern is inconsistent: impact_analysis and aws_query/aws_execute break the action-first convention, and get_* is applied to very different concepts. It is readable but lacks a predictable system-wide pattern.
At 30 tools, the surface feels heavy and exceeds the range where each tool clearly earns its place. Several tools could be consolidated, such as the documentation/knowledge trio and the overlapping account/profile tools.
The tool set covers a broad AWS workflow: profiles, accounts, environments, safety controls, queries, cost analysis, incident investigation, and best practices. Minor gaps exist—no delete_alias or context reset—but generic aws_execute fills most operational needs.
Maintenance
Related MCP Connectors
Hosted MCP server for AWS cloud spend: service breakdowns, anomalies, savings and forecasts.
The AWS Knowledge MCP server is a fully managed remote Model Context Protocol server that provides real-time access to official AWS content in an LLM-compatible format. It offers structured access to AWS documentation, code samples, blog posts, What's New announcements, Well-Architected best practices, and regional availability information for AWS APIs and CloudFormation resources. Key capabilities include searching and reading documentation in markdown format, getting content recommendations, listing AWS regions, and checking regional availability for services and features.
Unified MCP Server is a remote MCP connector for AI agents and vertical AI products that provides access to 22,000+ authorized SaaS tools across 400+ integrations and 24 categories directly inside LLMs (Claude, GPT, Gemini, Cohere). Tools operate only on explicitly authorized customer connections, enabling agents to safely read and write against live third-party systems.
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
Related MCP Servers
- AlicenseBqualityCmaintenanceAn MCP server for unified cost tracking and analysis across AWS, OpenAI, and Anthropic. It enables users to query expenditures, compare costs across providers, and analyze usage trends through natural language.10MIT
- AlicenseBqualityDmaintenanceAn MCP server that enables Claude to manage infrastructure across Kubernetes, Docker, Prometheus, and Terraform through natural language. It provides over 42 specialized tools with a safety-first design, including risk-based command classification and audit logging.43MIT
- AlicenseBqualityCmaintenanceA comprehensive MCP server for infrastructure operations with 92 tools across 13 categories, covering system monitoring, networking, containers, multi-cloud management, databases, CI/CD, IaC, security, and remote SSH fleet management.921MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that enables AI assistants to perform comprehensive AWS security analysis through natural language queries, bridging AI with AWS security services.2Apache 2.0