aws-security-mcp
The aws-security-mcp server is a read-only MCP-compatible AWS security scanning tool that automates comprehensive security checks across 20 modules, provides risk-scored findings, generates compliance reports, and supports multi-account organization scanning.
Core Scanning
Run all 20 scanners in parallel (
scan_all) or individually, covering: Security Hub, GuardDuty, Inspector, Trusted Advisor, Config Rules, Access Analyzer, Patch Compliance, ECR image CVE deep scan, IAM privilege escalation, network reachability, secret exposure (Lambda/EC2), dangling DNS, SSL certificates, WAF coverage, IMDSv2 enforcement, idle resources, tag compliance, disaster recovery, and public access verification.Run predefined scan groups for specific scenarios (MLPS3 pre-check, HW Defense, network exposure, container security, new account baseline).
Detect enabled security services and assess security maturity.
Risk Scoring Findings are scored 0–10 with severity (CRITICAL/HIGH/MEDIUM/LOW) and priority (P0–P3).
Report Generation
Markdown — executive summary with findings by severity and per-module stats.
Professional HTML — with 30-day trend charts and optional AI executive summary.
MLPS Level 3 (GB/T 22239-2019) — compliance pre-check mapped to control domains.
HW Defense (护网) — attacker-perspective, SOP-organized report for blue-team hardening.
Security maturity — assessment based on enabled services.
All-in-one (
scan_and_report) — full scan + all report types in a single call.
Multi-Account & Organization Support
Scan all accounts in an AWS Organization via
org_modeand cross-account role assumption.List org accounts and retrieve a CloudFormation StackSet template to deploy cross-account audit roles.
Dashboard & Persistence
React-based dashboard (local or S3-hosted) with severity filters, module breakdown, and 30-day trend charts.
Scan results saved to
~/.aws-security/with rolling 30-entry history.
AI Integration
Generate tailored AI summary prompts (with findings digests) for the calling AI client — the server itself makes zero LLM calls.
Discovery
List available scan modules and predefined scan groups.
All operations are 100% read-only (only Describe/Get/List AWS API calls).
Supports AWS China regions (aws-cn partition).
Provides automated security scanning for AWS accounts and services, including 19 security modules, risk scoring, and multi-account support.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@aws-security-mcpScan my AWS account for security vulnerabilities"
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-security-mcp
MCP server for automated AWS security scanning — 20 modules, risk scoring, zero write operations.
Features
20 Security Scan Modules — Security Hub, GuardDuty, Inspector, Trusted Advisor, Config Rules, Access Analyzer, Patch Compliance, ECR image CVE gap analysis, and more
Risk Scoring — every finding scored 0-10 with severity (CRITICAL/HIGH/MEDIUM/LOW) and priority (P0-P3)
100% Read-Only — uses only Describe/Get/List API calls; never modifies your AWS resources
Multi-Account Support — scan all accounts in an AWS Organization via
org_modewith cross-account role assumptionParallel Execution — all modules run concurrently via
Promise.allSettledReport Generation — Markdown, professional HTML, MLPS Level 3 compliance, and HW Defense reports
React Dashboard — local or S3-hosted dashboard with 30-day trend charts
MCP Resources — embedded security rules and risk scoring model documentation
MCP Prompts — pre-built workflows for full scans and finding analysis
China Region Support — full support for aws-cn partition
CloudFormation StackSet Template — one-click deployment of cross-account audit roles
Related MCP server: cloud-audit
Screenshots
All screenshots below are from a real scan of an AWS China (cn-north-1) account — 20 modules, 1,284 findings.
Interactive Dashboard
React dashboard with severity filters, sortable columns, module breakdown, and 30-day trend charts. Findings view shown below (real CRITICAL CVEs detected across ECR repositories):

Security Scan Report (with AI Executive Summary)
Professional HTML report. The server performs zero LLM calls — the calling AI supplies the executive summary via get_ai_summary_prompt → ai_summary, so the summary is tailored per report type:

HW Defense (护网) Readiness Report
Attacker-perspective, SOP-organized report for blue-team hardening drills — findings grouped into kill-chain categories (attack-surface reduction, vuln/patch, identity, transport, detection readiness):

MLPS Level 3 (等保三级) Compliance Pre-check
GB/T 22239-2019 conformance pre-check — technical findings mapped to compliance control domains, with service-not-enabled gaps and prioritized remediation:

Deployment Prerequisites
Before installing, make sure you have the following in place. The agent is intentionally lightweight — nothing needs to be installed on the AWS resources being scanned (no agent on EC2, no daemon in VPC, no changes to workloads).
# | Item | Purpose | Notes |
1 | A host to run the MCP server | Runs the Node.js process that performs the scans | Any of: a developer workstation (macOS / Linux / Windows), a small EC2 instance (t3.small is plenty), a bastion host, or a CI runner. Needs outbound HTTPS to AWS API endpoints. |
2 | Node.js ≥ 18 | Runtime for the MCP server |
|
3 | An MCP-capable AI client | Drives the scan via natural language and interprets the results | Any one of: Kiro CLI, Claude Code, Cursor, or any other MCP 1.12-compatible client |
4 | AWS credentials | Read-only access to the target account(s) | IAM user, IAM role (EC2 instance profile / ECS task role), AWS SSO session, or named CLI profile — anything the AWS SDK credential chain can resolve |
5 | An IAM identity with scan permissions | Attached to the credential in (4) | Use |
6 | (optional) Cross-account audit role | Needed only for multi-account / organization-wide scans | Deploy the CloudFormation StackSet template via |
What is NOT required:
❌ No agent / daemon on your EC2 instances, ECS tasks, or Lambda functions
❌ No changes to VPC, Security Groups, or networking on the scanned resources
❌ No AWS Marketplace subscription or commercial license
❌ No outbound connectivity from the scanner to anywhere other than AWS API endpoints (no telemetry, no phone-home)
❌ No AWS root user (the scanner refuses to run under root credentials)
Reference deployment topology
The most common customer deployment is a single small EC2 instance in the AWS account to be audited, reached over SSM Session Manager or SSH, with the MCP client (Kiro / Claude Code / Cursor) running on the operator's laptop and the MCP server running on the EC2:
┌──────────────────────────┐ ┌─────────────────────────────┐
│ Operator's laptop │ │ Target AWS account │
│ │ │ │
│ Kiro CLI / Claude Code │ MCP / │ EC2 (t3.small, IAM role) │
│ / Cursor │ stdio │ └─ aws-security-mcp │
│ │ ◄──────► │ (Node.js MCP server) │
│ │ SSM │ │
│ │ │ ▼ read-only API calls │
│ │ │ IAM · EC2 · S3 · RDS · ... │
└──────────────────────────┘ └─────────────────────────────┘For single-account work, running the MCP server directly on the operator's laptop (steps 1–3 below) is just as valid — the architecture is the same, only the host changes.
Quick Start
1. Install
Install the published package from npm (recommended for end users):
npm install -g aws-security-mcpVerify the binary is on your PATH:
aws-security-mcp --version
# 0.8.0git clone https://github.com/jowhee327/aws-security-agent.git
cd aws-security-agent
npm install
npm run build
npm link # makes `aws-security-mcp` resolvable on your PATH2. Configure AWS Credentials
The server uses the standard AWS SDK credential chain. Any of the following will work:
# Environment variables
export AWS_ACCESS_KEY_ID=AKIA...
export AWS_SECRET_ACCESS_KEY=...
export AWS_REGION=ap-northeast-1
# Or use an AWS profile
export AWS_PROFILE=your-profile
# Or run on an EC2 instance / ECS task with an IAM role attachedSee Recommended IAM Policy below for the minimum permissions required.
3. Configure Your AI Tool
Add the MCP server to your AI tool's configuration:
Kiro
.kiro/settings/mcp.json:
{
"mcpServers": {
"aws-security": {
"command": "aws-security-mcp",
"args": ["--region", "ap-northeast-1"]
}
}
}Claude Code
.claude/settings.json:
{
"mcpServers": {
"aws-security": {
"command": "aws-security-mcp",
"args": ["--region", "ap-northeast-1"]
}
}
}Cursor
Add in Cursor MCP settings:
{
"mcpServers": {
"aws-security": {
"command": "aws-security-mcp",
"args": ["--region", "ap-northeast-1"]
}
}
}4. Use
Ask your AI tool to run a security scan. The recommended approach is scan_and_report, which runs all scanners and generates every report type in a single call — no large data transfer back to the AI tool:
"Use scan_and_report to run a full AWS security scan"
Or run individual steps for more control:
"Run a full AWS security scan and generate a report"
You can also use the built-in security-scan prompt for a guided workflow.
For multi-account scanning across an AWS Organization:
"Run a full scan across all org accounts using org_mode"
5. Enable the Dashboard (optional)
The React dashboard visualizes scan history with severity filters, module breakdown, and 30-day trend charts. It reads data that the scan tools persist locally — no extra infrastructure needed.
How dashboard data is produced
Every time you run scan_and_report (or call save_results explicitly), the server writes:
~/.aws-security/
├── scans/YYYY-MM-DD/scan.json # raw scan result archive (per day)
├── dashboard/data.json # dashboard data: latest scan + rolling 30-entry history
└── reports/ # HTML / MLPS3 / HW Defense / Markdown reportsdashboard/data.json keeps a rolling history (last 30 scan dates) with an overall security score per scan — this is what powers the trend charts. Same-day re-scans replace that day's entry instead of appending. An optional AI executive summary (via get_ai_summary_prompt → ai_summary) is persisted here too and rendered on the Overview page.
Option A — local dashboard (recommended)
aws-security-mcp dashboard --port 3000This starts a local HTTP server, copies your ~/.aws-security/dashboard/data.json into the dashboard bundle (falls back to bundled sample data if you haven't scanned yet), and opens http://localhost:3000 in your browser. The npm package ships with the dashboard pre-built, so no build step is required.
Option B — deploy to a private S3 bucket
For a team-shared, long-lived dashboard inside your own AWS account:
aws-security-mcp deploy-dashboard --bucket <your-bucket> --region <region>This uploads the dashboard files (including your latest data.json) to the bucket. The bucket stays private — no public bucket policy, no static website hosting is enabled. Access is controlled purely via IAM (e.g. S3 presigned URLs, CloudFront + OAC, or an internal proxy of your choice). Data never leaves your account.
Installing from source? Run npm run build:dashboard once before using either option (the npm-published package already includes dashboard/dist).
Available Tools
Tool | Description |
| Run all 20 security scanners in parallel (supports org_mode) |
| Detect enabled AWS security services and assess maturity |
| Check Lambda env vars and EC2 userData for exposed secrets |
| Check ACM certificates for expiry and failed status |
| Detect dangling DNS records (subdomain takeover risk) |
| Analyze true network reachability (SG + NACL rules) |
| Detect IAM privilege escalation paths |
| Verify actual public accessibility of resources |
| Check resources for required tags |
| Find unused/idle resources |
| Assess disaster recovery readiness |
| Aggregate findings from AWS Security Hub |
| Check if GuardDuty is enabled (findings via Security Hub) |
| Check if Inspector is enabled (findings via Security Hub) |
| Aggregate findings from AWS Trusted Advisor |
| Check if Config is enabled (findings via Security Hub) |
| Check if Access Analyzer is enabled (findings via Security Hub) |
| Aggregate findings from SSM Patch Compliance |
| Check EC2 instances for IMDSv2 enforcement |
| Check internet-facing ALBs for WAF Web ACL protection |
| Deep-scan ECR image layers for critical/high CVEs missed by ECR Basic/Inspector Enhanced scanning; reports gap/confirmed/reverse-gap vs official results |
| Run a predefined group of scanners for a specific scenario |
| List available scan groups |
| List available scan modules with descriptions |
| List all accounts in AWS Organization |
| Generate a Markdown report from scan results |
| Generate a professional HTML report |
| Generate a MLPS Level 3 compliance report |
| Generate a MLPS Level 3 HTML compliance report |
| Generate an HW Defense HTML report (SOP-organized, findings grouped by CVE/control-ID) |
| Generate a security maturity assessment |
| Run full scan + generate all reports in one step. Saves HTML/MLPS/HW/MD reports to |
| Save scan results for the dashboard |
| Get CloudFormation StackSet template for cross-account audit role |
All tools accept an optional region parameter (defaults to the server's configured region).
Recommended IAM Policy
Attach this policy to the IAM user or role running the scanner. All actions are read-only.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "SecurityScannerReadOnly",
"Effect": "Allow",
"Action": [
"access-analyzer:ListAnalyzers",
"access-analyzer:ListFindingsV2",
"acm:DescribeCertificate",
"acm:ListCertificates",
"config:DescribeComplianceByConfigRule",
"config:DescribeConfigurationRecorders",
"config:GetComplianceDetailsByConfigRule",
"elasticloadbalancing:DescribeLoadBalancers",
"ec2:DescribeAddresses",
"ec2:DescribeInstanceAttribute",
"ec2:DescribeInstances",
"ec2:DescribeNetworkAcls",
"ec2:DescribeNetworkInterfaces",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSnapshots",
"ec2:DescribeSnapshotAttribute",
"ec2:DescribeVolumes",
"ec2:GetEbsEncryptionByDefault",
"ecr:GetAuthorizationToken",
"ecr:DescribeRepositories",
"ecr:DescribeImages",
"ecr:BatchGetImage",
"ecr:GetDownloadUrlForLayer",
"ecr:DescribeImageScanFindings",
"guardduty:GetDetector",
"guardduty:ListDetectors",
"guardduty:ListFindings",
"guardduty:GetFindings",
"iam:GetAccountSummary",
"iam:ListUsers",
"iam:ListRoles",
"iam:ListAccessKeys",
"iam:GetAccessKeyLastUsed",
"iam:ListAttachedUserPolicies",
"iam:ListAttachedRolePolicies",
"iam:ListUserPolicies",
"iam:ListRolePolicies",
"iam:GetUserPolicy",
"iam:GetRolePolicy",
"iam:GetPolicy",
"iam:GetPolicyVersion",
"inspector2:ListFindings",
"inspector2:ListCoverage",
"lambda:ListFunctions",
"lambda:GetFunction",
"organizations:ListAccounts",
"rds:DescribeDBInstances",
"route53:ListHostedZones",
"route53:ListResourceRecordSets",
"s3:GetBucketAcl",
"s3:GetBucketLocation",
"s3:GetBucketPolicyStatus",
"s3:GetBucketPublicAccessBlock",
"s3:GetBucketVersioning",
"s3:GetBucketReplication",
"s3:GetBucketTagging",
"s3:ListAllMyBuckets",
"securityhub:DescribeHub",
"securityhub:GetFindings",
"ssm:DescribeInstanceInformation",
"ssm:DescribeInstancePatchStates",
"sts:GetCallerIdentity",
"support:DescribeTrustedAdvisorChecks",
"support:DescribeTrustedAdvisorCheckResult",
"wafv2:GetWebACL",
"wafv2:GetWebACLForResource"
],
"Resource": "*"
}
]
}Scan Modules
Module | What It Checks | Risk Score Range |
Service Detection | Enabled security services (Security Hub, GuardDuty, Inspector, Config, CloudTrail) and maturity level | 5.0 - 7.5 |
Secret Exposure | Lambda env vars and EC2 userData for exposed secrets (AWS keys, private keys, passwords) | 7.0 - 9.5 |
SSL Certificate | ACM certificate expiry, failed status, upcoming renewals | 5.5 - 9.0 |
Dangling DNS | Route53 CNAME records pointing to non-existent resources (subdomain takeover) | 7.0 - 8.5 |
Network Reachability | True network reachability combining Security Group + NACL rules for public EC2 instances | 5.5 - 9.5 |
IAM Privilege Escalation | Privilege escalation paths via policy manipulation, role creation, or service abuse | 7.0 - 9.5 |
Public Access Verify | Actual public accessibility of resources marked as public (S3 HTTP, RDS DNS) | 7.0 - 9.0 |
Tag Compliance | Required tags (Environment, Project, Owner) on EC2, RDS, S3 resources | 3.0 - 5.0 |
Idle Resources | Unused resources (unattached EBS, unused EIPs, stopped instances, unused SGs) | 3.0 - 5.0 |
Disaster Recovery | RDS Multi-AZ & backups, EBS snapshot coverage, S3 versioning & replication | 4.0 - 7.5 |
Config Rules | AWS Config Rules compliance status | 3.0 - 9.5 |
Access Analyzer | IAM Access Analyzer external access findings | 3.0 - 9.5 |
Patch Compliance | SSM Patch Manager compliance status for managed instances | 3.0 - 9.5 |
IMDSv2 Enforcement | EC2 instances not enforcing IMDSv2 (HttpTokens != required) | 7.5 |
WAF Coverage | Internet-facing ALBs without WAF Web ACL protection | 7.5 |
ECR Image CVE | Deep layer scan of ECR images for critical/high CVEs that ECR Basic/Inspector Enhanced scanning structurally miss (unmanaged binaries, distro secdb gaps, EOL OS); diffs against official scan results | 7.0 - 10.0 |
Security Hub Findings | AWS Security Hub (FSBP, CIS, PCI DSS) | 3.0 - 9.5 |
GuardDuty Findings | Amazon GuardDuty threat detection | 3.0 - 9.5 |
Inspector Findings | Amazon Inspector vulnerability scanning | 3.0 - 9.5 |
Trusted Advisor Findings | AWS Trusted Advisor security checks (requires Business/Enterprise Support) | 5.5 - 8.0 |
Risk Scoring
Score | Severity | Priority |
9.0 - 10.0 | CRITICAL | P0 |
7.0 - 8.9 | HIGH | P1 |
4.0 - 6.9 | MEDIUM | P2 |
0.0 - 3.9 | LOW | P3 |
How the ECR Image CVE Scanner Works (Scanner #20)
The newest module, ecr-image-cve, exists because of a real customer case: an ECR image (Alpine 3.21 + nginx 1.27) contained a HIGH-severity nginx CVE, yet both ECR Basic Scanning and Inspector Enhanced Scanning reported nothing. Distro-feed-based scanners can only alert on what the distro security database lists, and package-metadata matching misses any binary that didn't come from the distro's package manager (edge/community packages, vendor repos, source-compiled binaries). This scanner is built to catch exactly those structural blind spots — and to report the difference (gap) against the official scan results rather than duplicating them.
Pipeline (no Docker daemon, all read-only, fully streaming):
Image enumeration —
DescribeRepositories/DescribeImages, taking the latest-pushed 3 tags per repo plus anylatesttag (configurable). Image digest is the identity key everywhere, since tags drift.Layer acquisition over the ECR registry HTTP API — authenticate with
GetAuthorizationToken, fetch the manifest viaBatchGetImage, and download layer blobs viaGetDownloadUrlForLayer. Multi-arch manifest lists are handled (linux/amd64 preferred, then linux/arm64). Layers are stream-decompressed (gzip + tar) entry-by-entry — no full-layer buffering, no image is ever run. Size guards: 512 MB per layer / 2 GB per image / 50 repos / 20 GB per scan (all configurable); anything over-limit is recorded asskippedwith the reason, never silently dropped.Dual-channel component inventory — the core idea:
Channel A (package level): parse package-manager databases found inside layers — Alpine
/lib/apk/db/installedand Debian/Ubuntu/var/lib/dpkg/status— plus/etc/os-releasefor the distro branch. This mirrors what official scanners see.Channel B (binary level, what ECR cannot do): detect well-known server binaries (nginx, openssl, curl, redis, node, httpd, haproxy, php, python3, java, envoy) via ELF-magic + path heuristics, then extract embedded version strings from the raw bytes with signature regexes (e.g.
nginx version: nginx/1.27.4). Each hit is tagged with provenance:package-managed(explainable by Channel A) orunmanaged-binary(present in the image but not owned by any installed package — the blind-spot case, prominently flagged).
CVE matching (CRITICAL/HIGH only) — two tiers:
Tier 1 (offline, default): a curated, unit-tested advisory table bundled with the package, covering the Channel-B component list. Works fully air-gapped — important for China-region deployments.
Tier 2 (online, opt-in): NVD API 2.0 lookups with 24h on-disk caching, gated by
onlineCveLookup(default off).Version comparison normalizes non-semver forms (Alpine
-r0package revisions, OpenSSL letter suffixes like1.0.2k) while preserving the original string in output.
Official-result diff (gap analysis) — for every scanned image the scanner pulls official findings from
ecr:DescribeImageScanFindings(Basic) andinspector2:ListFindings(Enhanced), then classifies each of its own findings as:gap— we found it, official scanning did not → the headline section, each with a machine-classified reason:unmanaged-binary|distro-secdb-no-entry|eol-os|unsupported-os|unknown;confirmed— both found it (collapsed to counts);reverse-gap— official found it, we did not (self-audit). The report also records which official baseline was available per image (basic / enhanced / none).
False-positive control — a
suppressionsparameter (cveId+ optional digest prefix / component + reason) moves findings to asuppressed[]section instead of silently dropping them.
Additional IAM permissions used (read-only): ecr:GetAuthorizationToken, ecr:DescribeRepositories, ecr:DescribeImages, ecr:BatchGetImage, ecr:GetDownloadUrlForLayer, ecr:DescribeImageScanFindings, inspector2:ListFindings, inspector2:ListCoverage — already included in the Recommended IAM Policy.
Invoke it directly via scan_ecr_image_cve, as part of the container_security group, or within scan_all / scan_and_report. Full design notes: docs/specs/ecr-image-cve-scanner-spec.md.
Scan Groups
Pre-defined scanner groupings for common scenarios:
Group | Description | Modules |
| GB/T 22239-2019 等保三级预检 | 17 modules |
| 护网蓝队加固 — attacker-focused hardening | 11 modules |
| 公网暴露面评估 | 8 modules |
| 数据加密审计 | 2 modules |
| 最小权限审计 | 3 modules |
| 日志完整性审计 | 2 modules |
| 灾备评估 | 2 modules |
| 闲置资源清理 | 2 modules |
| 资源标签合规 | 1 module |
| 新账户基线检查 | 7 modules |
| 容器/工作负载安全 — ECR image deep CVE scan + official-scan gap analysis | 3 modules |
| 安全服务聚合 | 7 modules |
Use list_groups to see all available groups with their module lists.
Multi-Account Support
For scanning across an AWS Organization:
Deploy the audit role — Use
get_setup_templateto retrieve the CloudFormation StackSet template, then deploy it from your Management Account to create theAWSSecurityMCPAuditrole in all member accounts.Run with org_mode — Pass
org_mode: truetoscan_allorscan_group. The scanner will discover accounts viaorganizations:ListAccountsand assume the audit role in each.Optional filtering — Pass
account_idsto scan specific accounts instead of the full organization.
The StackSet templates are available in the templates/ directory in both YAML and JSON formats.
Output Format
Scan Results (JSON)
Each scan tool returns structured JSON:
{
"module": "network_reachability",
"status": "success",
"resourcesScanned": 12,
"findingsCount": 3,
"scanTimeMs": 1250,
"findings": [
{
"severity": "CRITICAL",
"title": "EC2 instance i-abc123 has SSH (22) reachable from 0.0.0.0/0",
"resourceType": "AWS::EC2::Instance",
"resourceId": "i-abc123",
"resourceArn": "arn:aws:ec2:ap-northeast-1:123456789012:instance/i-abc123",
"region": "ap-northeast-1",
"description": "...",
"impact": "...",
"riskScore": 9.0,
"remediationSteps": ["..."],
"priority": "P0"
}
]
}Markdown Report
The generate_report tool produces a Markdown report with:
Executive Summary — account, region, duration, finding counts by severity
Findings by Severity — grouped and sorted by risk score
Scan Statistics — per-module resource counts and status
Recommendations — prioritized action items
HW Defense Report
The generate_hw_defense_report tool produces a dedicated HTML report for 护网 (HW) blue-team hardening exercises. Key features:
SOP checklist organization — findings are grouped by standard operating procedure categories rather than by scanner module
Grouped findings — duplicate and related findings are collapsed by CVE ID, control ID, or title, reducing noise
Attacker-focused perspective — the
hw_defensescan group (11 modules) prioritizes checks that mirror real-world red-team attack chains: privilege escalation, network exposure, secret leakage, missing detection services, and patch gapsCollapsible sections — categories default to collapsed for quick executive overview, expandable for detailed review
Local Model Benchmark (Tool-Use)
The server is model-agnostic — it works with any MCP 1.12 client. For China / air-gapped / data-sovereignty deployments where a cloud frontier model may not be an option, we benchmarked a fully local model (Qwen3-30B-A3B, Q4_K_M, served via Ollama on a single NVIDIA L4 GPU / g6.4xlarge) against Claude Opus 4.7 (Bedrock) on the tool-use skills that matter for driving this server.
Test suite: 15 cases across 4 categories — tool selection (7), argument quality (3), multi-step reasoning (3), refusal/clarify (2).
Model | Overall (raw) | Overall (LLM-judge) | Tool Selection | Avg Latency | Output TPS |
Qwen3-30B-A3B (local, think) | 86.7% | 93.3% | 100% | 11.8s | 37.7 |
Qwen3-30B-A3B (local, no-think) | 86.7% | 86.7% | 100% | 10.6s | 43.2 |
Claude Opus 4.7 (Bedrock) | 100% | 100% | 100% | 3.3s | 56.6 |
Takeaway: a local 30B MoE model hits 100% tool-selection accuracy and ~90% overall — more than enough to drive the scanner in an isolated environment with no data leaving the account. The frontier model is faster and stronger on argument precision, but the server does not depend on it.

Live tool-calling trace (local Qwen3 selecting a scanner from a natural-language request):

License
MIT
Available Tools
35 toolsdetect_servicesA
Run Security Service Detection security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explicitly states read-only and no modification, which is transparent. However, it does not mention other behaviors like scope or output format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, no wasted words, front-loaded with purpose and key traits.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description sufficiently covers purpose and behavioral traits. Could mention how results are accessed.
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%, and the description adds no additional meaning beyond the schema's description of the 'region' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it runs a security scanner and is read-only. However, it does not explicitly differentiate from similar sibling tools like 'scan_all', which might also scan broadly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'scan_all' or specific scanners such as 'scan_guardduty_findings'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_html_reportC
Generate a professional HTML security report. Save the output as an .html file.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Report language (default: zh) | |
| history | No | JSON string of DashboardHistoryEntry[] from dashboard data.json for 30-day trend charts | |
| ai_summary | No | Optional pre-generated AI executive summary (Markdown/plain text). Rendered if present; omit to hide. | |
| scan_results | Yes | JSON string of FullScanResult from scan_all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only mentions generation and saving. It lacks details on output location, file overwrite behavior, permissions, or any side effects beyond file creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no redundancy. Could be improved with more context, but it is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters and no output schema, the description does not explain how parameters affect the report, what the report contains, or dependencies like requiring prior scan results. Important gaps remain.
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 baseline is 3. The description adds no additional parameter information beyond the schema definitions, which already describe each parameter adequately.
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 generates a professional HTML security report and saves as .html file, specifying the output format. However, it does not differentiate from sibling tools like generate_mlps3_html_report, which also produces HTML.
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 other report generators (e.g., generate_report, generate_maturity_report). No prerequisites or context for invocation are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_hw_defense_reportB
Generate an HTML report organized by HW Defense (护网) SOP checklist categories. Save as .html file.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Report language (default: zh) | |
| ai_summary | No | Optional pre-generated AI executive summary (Markdown/plain text). Rendered if present; omit to hide. | |
| scan_results | Yes | JSON string of FullScanResult from scan_group hw_defense or scan_all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose all behavioral traits. It only states the output format (HTML) and that it is saved as a file, but does not mention where it is saved, if it overwrites existing files, any authentication requirements, or side effects like file creation. This is insufficient for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at two sentences, front-loaded with the core purpose, and contains no redundant or irrelevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks information about return values or output behavior (e.g., file path, overwrite behavior). Given there is no output schema, the description should clarify what the agent can expect after invocation, but it does not.
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% (all parameters have descriptions in the schema). The description adds no new information about parameters beyond what is in the schema, so it meets the baseline but does not enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (generate), resource (HTML report), and the specific organization criteria (HW Defense SOP checklist categories). This makes it distinct from sibling tools like 'generate_html_report' which would produce a more generic report.
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 like 'generate_html_report' or 'generate_maturity_report'. There is no mention of prerequisites, exclusions, or context-driven recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_maturity_reportB
Generate a security maturity assessment report from scan_all results. Requires service_detection module output. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Report language (default: zh) | |
| scan_results | Yes | JSON string of FullScanResult from scan_all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description explicitly states 'Read-only', which is a key behavioral trait. It also mentions the dependency on service_detection output. However, it lacks details on state changes, return format, or safety beyond the read-only claim.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences, covering purpose, precondition, and safety in a front-loaded manner. Every sentence serves a clear purpose with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description fails to explain what the report contains or its return format (e.g., file path, string). This leaves the agent without necessary information to handle the tool's output, making it incomplete for a report generation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does not add meaning beyond what the input schema already provides for the two parameters (scan_results and lang).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it generates a security maturity assessment report from scan_all results, with a specific verb and resource. It mentions dependency on service_detection module output, which adds context but does not explicitly differentiate from sibling report generators like generate_report or generate_html_report.
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 indicates that the tool requires service_detection module output, providing a precondition for use. However, it does not give guidance on when to use this tool over siblings or when not to use it, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_mlps3_html_reportC
Generate a professional HTML MLPS Level 3 compliance report (等保三级). Save as .html file.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Report language (default: zh) | |
| history | No | JSON string of DashboardHistoryEntry[] from dashboard data.json for 30-day trend charts | |
| ai_summary | No | Optional pre-generated AI executive summary (Markdown/plain text). Rendered if present; omit to hide. | |
| scan_results | Yes | JSON string of FullScanResult from scan_group mlps3_precheck or scan_all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description should disclose behavioral traits. It only states the outcome (generate report) but does not mention whether it is a read-only operation, if it requires specific permissions, or if it modifies any state. The description is insufficient for an agent to understand side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, no unnecessary words. It is front-loaded with the purpose. Could be slightly more structured, but overall 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 4 parameters and no output schema. The description does not explain what the tool returns or where the .html file is saved (e.g., local path, downloadable link). It also does not indicate if history is required for trend charts, leaving the agent to infer from parameter descriptions.
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 parameters are well-documented in the schema. The description adds no extra meaning beyond what is in the schema, so baseline score 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 it generates a professional HTML MLPS Level 3 compliance report and saves as .html file. It distinguishes from siblings like generate_mlps3_report by specifying HTML format, but could more explicitly differentiate when to use this versus other report generators.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Does not mention prerequisites, such as running scan_group mlps3_precheck first to obtain scan_results. Lacks context on which scenarios this report is appropriate for.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_mlps3_reportA
Generate a GB/T 22239-2019 等保三级 compliance pre-check report from scan results. Best used with scan_group mlps3_precheck results. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Report language (default: zh) | |
| ai_summary | No | Optional pre-generated AI executive summary (Markdown/plain text). Rendered if present; omit to hide. | |
| scan_results | Yes | JSON string of FullScanResult from scan_group mlps3_precheck or scan_all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Declares 'Read-only', indicating no side effects. No annotations provided, so description carries full burden. Does not detail other behavioral traits but the read-only flag is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. Purpose and usage immediately stated. Every sentence 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?
No output schema, but description adequately covers input and behavior. Could mention output format (e.g., HTML, PDF) but not critical for a report generator.
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 baseline is 3. Description adds value by clarifying that scan_results should come from mlps3_precheck, enriching parameter meaning.
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 generates a GB/T 22239-2019 等保三级 compliance pre-check report from scan results. It specifies the standard and compliance level, and distinguishes from siblings like generate_html_report or generate_maturity_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly recommends usage with 'scan_group mlps3_precheck results', providing clear context when to use. Could further exclude alternatives but is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_reportA
Generate a Markdown security report from scan results. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Report language (default: zh) | |
| ai_summary | No | Optional pre-generated AI executive summary (Markdown/plain text). Rendered if present; omit to hide. | |
| scan_results | Yes | JSON string of FullScanResult from scan_all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses read-only behavior and the fact that no AWS resources are modified. This is critical safety information for the agent. It does not cover any potential edge cases or error handling, but the core behavioral trait is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loads the key action and output format, and includes the critical read-only note. Every sentence adds value with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with three documented parameters and no output schema, the description covers the essential context: what it does, that it's read-only, and the input source. It does not mention the exact output structure or prerequisites, but the param descriptions compensate.
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 schema already documents all three parameters thoroughly. The description adds only the context that the report is from scan results, which aligns with the scan_results parameter description. No additional parameter-level semantics are provided beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a Markdown security report from scan results, a specific verb+resource combination. While it distinguishes itself from scanning siblings, it does not explicitly differentiate from other report-generating siblings like generate_html_report.
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 the tool should be used after obtaining scan results from 'scan_all', but it provides no explicit guidance on when to choose this over alternative report tools, nor any when-not scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ai_summary_promptA
Return a report-type-tailored prompt (with a grounded findings digest) that the CALLING AI should run to produce an AI security summary. Then pass the generated text back via the ai_summary parameter of the matching report tool (or scan_and_report). The server performs no LLM calls. Use this to make each summary specific to the report type (dashboard / security scan / HW Defense 护网 / MLPS3 等保).
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Summary language (default: zh) | |
| report_type | Yes | Target report type the summary is for: dashboard (overview), html (AWS security scan report), hw_defense (护网 attack-defense drill), mlps3 (等保三级 compliance) | |
| scan_results | Yes | JSON string of FullScanResult from scan_all / scan_group |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states that the server performs no LLM calls, a key behavioral trait. It also outlines the expected workflow (passing the prompt output to a report tool). With no annotations provided, this disclosure is critical and well-done.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core purpose, and contains no filler. Every sentence adds value, including the crucial note about no LLM calls.
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 three parameters, no output schema, and no annotations, the description adequately explains the tool's function, return value (a prompt), and usage workflow. It could be slightly more specific about the prompt's structure, but it remains complete enough for an AI agent to use 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 coverage is 100% with good parameter descriptions. The description adds context by explaining each enum value's meaning and the scan_results parameter format, reinforcing the schema information. It provides additional clarity beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns a report-type-tailored prompt for AI security summaries, with explicit mention of no LLM calls. It distinguishes from sibling report-generation tools by focusing on prompt generation rather than direct report output.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It specifies when to use (to make summaries specific to report type) and lists supported report types. It implies the workflow of passing generated text back to a report tool. However, it does not explicitly state when not to use or name alternative tools for direct report generation, but the context from sibling tools makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_setup_templateA
Returns the CloudFormation StackSet template for deploying the cross-account security audit IAM role. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Template format: yaml or json (default: yaml) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides one behavioral trait ('Read-only') but lacks additional detail such as authorization needs, rate limits, or potential side effects. Since no annotations are provided, the description carries the full burden for transparency, which it partially fulfills.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no unnecessary words. It is front-loaded and efficient, delivering key information 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?
For a simple tool with one optional parameter and no output schema, the description adequately covers its purpose and behavior. It could mention the output format implications or typical use cases, but is largely complete given the low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter (format) fully described via enum. The description adds 'Read-only' but no additional parameter-level meaning beyond what the schema provides. Baseline 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 returns a CloudFormation StackSet template for deploying a cross-account security audit IAM role. It includes a specific verb ('Returns') and resource, and is distinct from sibling tools which are mostly scan and report functions.
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 but does not explicitly state when to use this tool versus alternatives or when not to use it. There is no mention of prerequisites or context for choosing this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_groupsA
List available scan groups with descriptions. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It clearly states the tool is read-only, which is a key behavioral trait. However, it lacks details on permissions or rate limits, though for a simple list tool this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, no wasted words. The core action and read-only nature are 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?
Given zero parameters and no output schema, the description adequately covers the tool's purpose and behavior. It could mention that output can be used with scan_group, but it is not necessary for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist (0 params), so baseline is 4. The description does not need to compensate for schema coverage since there are no parameters to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool lists available scan groups with descriptions and is read-only. The verb 'list' and resource 'scan groups' are specific, and the 'read-only' qualifier distinguishes it from sibling mutation 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 explicit guidance on when to use this tool vs alternatives. The context implies it is for discovering groups before scanning, but no alternatives or when-not-to-use are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modulesA
List available security scan modules with descriptions. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and adequately discloses that the tool is read-only and non-destructive. No further behavioral traits (e.g., rate limits, auth needs) are mentioned, but for a simple listing tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two short sentences (11 words total)—and front-loads the action ('List'). Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has zero parameters and no output schema, the description fully covers its purpose and safety profile. It is complete for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is 100% automatically. The description does not need to add parameter-level details, and the baseline for 0 parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list', the resource 'available security scan modules', and includes the detail 'with descriptions'. It effectively distinguishes from sibling tools like scan_* and generate_*, which perform different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly notes the tool is read-only and does not modify resources, providing clear context for safe use. However, it does not explicitly state when not to use it or suggest alternatives, leaving some ambiguity for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_org_accountsA
List all accounts in the AWS Organization. Useful for discovering accounts before multi-account scanning. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It states 'Read-only', which is a key behavior. However, it does not mention pagination, rate limits, or output format. Adequate but could be improved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each earning its place. No wasted words. Front-loaded with the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one optional parameter and no output schema, the description is fairly complete. It explains the resource and usage context. Could mention the output fields (e.g., account IDs) but not necessary.
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% with one parameter (region) described. The description adds no extra meaning beyond the schema's 'default: server region'. Baseline 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 states 'List all accounts in the AWS Organization' with a specific verb and resource, making it clear what the tool does. It distinguishes from sibling tools which are mostly scanning and report 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?
Provides clear context: 'Useful for discovering accounts before multi-account scanning.' It implies the usage scenario but does not explicitly mention when not to use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_resultsA
Saves scan results to local disk or S3 for dashboard display. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| ai_summary | No | Optional pre-generated AI executive summary (from get_ai_summary_prompt with report_type=dashboard). Persisted into dashboard data and rendered on the Overview; omit to hide. | |
| output_dir | No | Output directory (default: ~/.aws-security) | |
| scan_results | Yes | JSON string of FullScanResult from scan_all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Explicitly states it does not modify AWS resources, a key safety trait. Lacks details on overwrite behavior, permissions, or confirmation response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences with zero fluff. Front-loaded with verb and resource.
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?
No output schema, so description should clarify return value. Missing error conditions and prerequisites. Adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 100% of parameters. Description adds context about ai_summary coming from get_ai_summary_prompt and its effect on dashboard Overview, exceeding schema info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'saves', resource 'scan results', and destinations 'local disk or S3'. Distinguishes from sibling scanning and reporting tools by being a persistence action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for dashboard display but does not explicitly contrast with sibling tools like generate_report or scan_and_report. No when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_access_analyzer_findingsA
Run Access Analyzer Findings security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states 'Read-only. Does not modify any AWS resources.' which is a key behavioral trait, especially with no annotations. However, it does not disclose what the scan does (e.g., returns findings, API calls made) or other behaviors like rate limits or permissions needed.
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?
Extremely concise: two sentences front-load the action and safety. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with one optional parameter and no output schema. The description covers purpose and safety but lacks details on return values (e.g., findings format) and prerequisites (e.g., enabling Access Analyzer). Could be more complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'region' has a description in the schema (default: server region), and the description adds no further meaning. With 100% schema coverage, baseline 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 name and description clearly specify 'Access Analyzer Findings' and state it is a security scanner only. This distinguishes it from other scan tools like scan_guardduty_findings or scan_config_rules_findings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'only' and 'read-only' but does not provide explicit guidance on when to use this tool over other scan tools. With many sibling scan tools, a brief note on when to choose this one would improve usability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_allA
Run all security scanners in parallel (including service detection). Read-only. Does not modify any AWS resources. Supports multi-account org scanning.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Report language (default: zh) | |
| region | No | AWS region to scan (default: server region) | |
| org_mode | No | Enable multi-account scanning via AWS Organizations | |
| role_name | No | IAM role name to assume in child accounts (default: AWSSecurityMCPAudit) | |
| account_ids | No | Specific account IDs to scan (default: all org accounts) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses read-only, no modification, and parallel execution. However, it omits details like output format, rate limits, or duration expectations, which a robust description should include.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no fluff. Front-loaded with the core action and key constraints. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that runs multiple scanners, the description does not explain the output structure or how results are returned. While the tool name implies a batch operation, some guidance on interpreting results 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?
Schema coverage is 100%, so the baseline is 3. The description adds no additional parameter semantics beyond what the schema provides. No credit needed for repeating schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool runs all security scanners in parallel, including service detection, and is read-only. This clearly distinguishes it from sibling tools that are individual scanners.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions read-only and no resource modification, which guides when to use it safely. It also mentions multi-account support. However, it does not explicitly contrast with alternatives like scan_group, lacking when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_and_reportB
Run a full security scan AND generate reports in one step. Avoids large data transfer between tools. Reports are saved to ~/.aws-security/reports/
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Language: zh or en (default: zh) | |
| region | No | AWS region (default: server region) | |
| reports | No | Report types to generate (default: all) | |
| org_mode | No | Enable multi-account org scanning | |
| role_name | No | IAM role name for cross-account scanning | |
| ai_summary | No | Optional pre-generated AI executive summary (Markdown/plain text). Rendered in reports + dashboard if present; omit to hide. | |
| account_ids | No | Filter to specific account IDs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description adds only the save location of reports. It omits behavioral details like resource intensity, persistence of data, or any side effects, which are important for a combined scan and report 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?
Two sentences, front-loaded with purpose. The first sentence states the action, the second adds benefit and save location. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the combination aspect and save location, but lacks details on what constitutes a 'full security scan,' how output is structured, or how to interpret results. Given the complexity of 7 parameters and many siblings, more completeness would be beneficial.
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 baseline is 3. The description does not add further parameter meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it runs a full security scan and generates reports in one step, distinguishing it from separate scan and report tools. However, 'full security scan' is somewhat vague and could be more specific about its 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?
The description implies use when avoiding data transfer between tools, but does not explicitly state when not to use or mention alternatives. It provides general guidance but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_config_rules_findingsA
Run Config Rules Findings security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It clearly declares 'Read-only' and 'Does not modify any AWS resources', which is key behavioral info for agent decision-making.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero redundancy. Every word is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (one optional parameter, no output schema), the description covers the essential purpose and safety. Could mention target findings type more, but name is self-explanatory.
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 baseline is 3. The description adds no additional meaning to the single parameter 'region' beyond what the schema already provides.
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 specifies 'Run Config Rules Findings security scanner only', clearly indicating it scans Config Rules Findings, which distinguishes it from siblings like scan_guardduty_findings or scan_inspector_findings.
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 states it's read-only and does not modify resources, implying safe usage. However, it lacks explicit guidance on when not to use or alternatives among the many scan siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_disaster_recoveryA
Run Disaster Recovery security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It explicitly states 'Read-only' and 'Does not modify any AWS resources,' which is clear. Could add more detail about what constitutes Disaster Recovery security scanning.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with zero fluff. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description is sufficiently complete. However, in the context of many sibling tools, it could more clearly differentiate usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter 'region' described as 'AWS region to scan (default: server region)'. Description adds no extra meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb (Run), resource (Disaster Recovery security scanner), and explicitly marks it as read-only. It distinguishes from siblings by specifying the 'Disaster Recovery' 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?
Description implies when to use (for Disaster Recovery scanning) but provides no explicit when-not-to or alternatives despite many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_dns_danglingA
Run Dangling DNS security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description correctly discloses that the tool is read-only and does not modify AWS resources. However, it omits details about output format or result handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no wasted words, front-loaded with the core action. Very concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite low complexity (1 optional parameter, no output schema), the description does not explain what the tool returns or how results are presented, leaving a significant gap for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes the region parameter. The description adds no additional meaning beyond what is 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 clearly states the tool runs a Dangling DNS security scanner, specifies it is read-only, and distinguishes it by naming the specific scanner type among many sibling scan 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 explicit guidance on when to use this tool versus other scan tools (e.g., scan_all, scan_group). The read-only hint is helpful but does not address selection criteria or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_ecr_image_cveA
Deep-scan ECR image layers for critical/high CVEs missed by ECR Basic/Inspector Enhanced scanning (unmanaged binaries, distro secdb gaps). Reports gap/confirmed/reverse-gap classification against official scan results. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) | |
| min_severity | No | Minimum CVE severity to report (default: high) | |
| suppressions | No | False-positive suppression list; suppressed findings go to a suppressed[] section | |
| max_image_bytes | No | Skip images whose compressed layers total more than this many bytes (default: 2 GB) | |
| max_layer_bytes | No | Skip images containing a layer larger than this many compressed bytes (default: 512 MB) | |
| max_total_bytes | No | Cumulative cap on compressed layer bytes downloaded across the whole scan (default: 20 GB) | |
| max_repositories | No | Maximum number of repositories to scan; the rest are recorded in warnings (default: 50) | |
| include_confirmed | No | Include confirmed finding detail rows in the report (default: false) | |
| online_cve_lookup | No | Enable NVD API 2.0 online lookup, cached 24h (default: false) | |
| repository_filter | No | Glob filter on ECR repository names (e.g. prod-*) | |
| max_images_per_repo | No | Latest-pushed N images per repo, plus any tag named 'latest' (default: 3) | |
| platform_preference | No | Platform preference order for multi-arch manifest lists, e.g. ['linux/amd64', 'linux/arm64'] (default) | |
| max_binary_scan_bytes | No | Cap on decompressed bytes stream-scanned per candidate binary (default: 64 MB) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Declares 'Read-only' and describes classification output, but with no annotations provided, it lacks disclosure of potential rate limits, authorization needs, or scan scope limitations beyond parameter constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load core purpose and classification, with 'Read-only' appended. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 13 parameters, the description explains output classification but lacks detail on return format or structure. Adequate but with gaps for a complex scanning tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add extra meaning beyond schema details; it only provides overall context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'deep-scan', resource 'ECR image layers', and distinguishes from standard ECR scanning by mentioning CVEs missed by Basic/Inspector Enhanced. Also explains output classification format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly indicates use case for finding CVEs missed by standard scanning, but does not specify when not to use or provide direct alternatives among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_groupA
Run a predefined group of security scanners for a specific scenario (e.g., MLPS compliance, network defense). Read-only. Supports multi-account org scanning.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Report language (default: zh) | |
| group | Yes | Scan group ID: mlps3_precheck, hw_defense, exposure, data_encryption, least_privilege, log_integrity, disaster_recovery, idle_resources, tag_compliance, new_account_baseline, container_security, aggregation | |
| region | No | AWS region to scan (default: server region) | |
| org_mode | No | Enable multi-account scanning via AWS Organizations | |
| role_name | No | IAM role name to assume in child accounts (default: AWSSecurityMCPAudit) | |
| account_ids | No | Specific account IDs to scan (default: all org accounts) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It discloses that the tool is read-only, which is a key behavioral trait, and supports multi-account scanning. However, it does not detail side effects, permissions, or error behavior, which is minimal for a scan 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 extremely concise, with two sentences. The first sentence front-loads the purpose, and every word contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters and no output schema or annotations, the description could provide more guidance on return format, error handling, and parameter dependencies (e.g., account_ids with org_mode). It mentions multi-account but lacks completeness for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds context that group is a 'predefined group' for scenarios, but does not provide additional parameter-level details beyond what the schema already includes.
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 runs a predefined group of security scanners for a specific scenario, with examples (MLPS compliance, network defense). It distinguishes from sibling tools like individual scan_* tools by emphasizing 'predefined group'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for specific scenarios and mentions multi-account support, but does not explicitly state when to use versus alternatives like scan_all or individual scans. It provides clear context but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_guardduty_findingsA
Run GuardDuty Findings security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosure. It states the tool is read-only and non-modifying, which covers key behavioral traits. However, it omits important details like required permissions, API calls made, or rate limits, leaving transparency incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two short sentences that front-load the purpose. Every word earns its place, and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (1 optional parameter, no output schema), the description covers the essential purpose and safety. However, it lacks details about expected output or prerequisites, which would be helpful for an agent to use the tool correctly without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the sole parameter 'region'. The description does not add further meaning beyond what the schema already provides (e.g., default behavior or allowed regions). Thus it meets the baseline without extra 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 clearly states the tool runs a GuardDuty Findings scanner and is read-only. It explicitly says 'only' to distinguish from other scan tools, and the name reinforces the specific resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives basic guidance that it is read-only and does not modify resources, implying it is safe to use. However, it does not explicitly compare with sibling tools like scan_all or scan_security_hub_findings, nor provide when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_iam_privilege_escalationA
Run IAM Privilege Escalation security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full weight. It explicitly states the tool is read-only and does not modify AWS resources, providing critical safety information. However, it does not disclose output format, rate limits, or authorization requirements, which could be helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, front-loading the core purpose and safety guarantee. No superfluous information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description covers the essential purpose and safety. However, the lack of output schema or any hints about the return value leaves the agent somewhat in the dark about what to expect after running the scan.
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 for the single parameter 'region' is 100%, and the schema already provides a description. The tool description adds no additional semantic value beyond what is in the schema, meeting the baseline.
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 runs an IAM Privilege Escalation security scanner and is read-only. The name is self-explanatory, and the description reinforces that it is specifically for privilege escalation scanning. However, it does not explicitly differentiate from sibling scan tools, which is a minor gap.
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 use when needing to check for privilege escalation, but provides no explicit guidance on when to use this tool versus alternatives like 'scan_all' or 'scan_secret_exposure'. No 'when not to use' or prerequisite information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_idle_resourcesB
Run Idle Resources security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states the tool is read-only and does not modify resources, which is critical for a scanning tool. However, with no annotations provided, it does not disclose other behavioral aspects such as output format or execution duration.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with two sentences, front-loading the purpose. It contains no filler, but could potentially include more detail without significant bloat.
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 lack of output schema and many sibling tools, the description fails to explain what the tool returns or how to interpret results. It is incomplete for a scanning tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the 'region' parameter with 100% coverage, and the description adds no further semantic value. Baseline score 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 it runs an 'Idle Resources security scanner', specifying the resource type and action. Among sibling tools like scan_access_analyzer_findings and scan_ssl_certificate, this description uniquely identifies its focus on idle 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?
The description mentions 'only' and 'Read-only' but provides no guidance on when to use this tool versus alternatives like scan_all or other specific scanners. It lacks context for optimal usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_imdsv2_enforcementA
Run IMDSv2 Enforcement security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. States 'Read-only. Does not modify any AWS resources,' which accurately conveys the tool's safety profile.
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 key info, no extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional param and no output schema, the description adequately covers purpose and safety. Minor gap: no mention of default behavior for region.
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% for the single region parameter. The description adds no additional meaning beyond the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Run') and the specific resource ('IMDSv2 Enforcement security scanner'), with 'only' distinguishing it from sibling scanners.
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?
Implies use for IMDSv2 scanning but lacks explicit guidance on when not to use or comparison with siblings like scan_all or other scan_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_inspector_findingsA
Run Inspector Findings security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explicitly states 'Read-only. Does not modify any AWS resources,' which clearly discloses the non-destructive behavioral trait. This is crucial for AI safety. However, no other traits (e.g., rate limits, output details) are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. Front-loaded with the primary action, then safety qualifier. 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?
For a single-parameter scanner with no output schema, the description is fairly complete: it states the action, scope (security scanner), and safety (read-only). It might lack explanation of what Inspector Findings are or the output format, but given the tool's simplicity and sibling context, it is sufficient.
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% with a single parameter 'region' described as 'AWS region to scan (default: server region)'. The description provides no additional parameter meaning beyond the schema, so baseline 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 runs Inspector Findings security scanner, specifying verb and resource. However, it does not explicitly differentiate from sibling scan tools like scan_access_analyzer_findings or scan_config_rules_findings, though the mention of 'Inspector Findings' provides some distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., other scan tools). The description only notes it is read-only, which is a safety trait but not a usage scenario. For a tool with many siblings, explicit when-to-use or when-not-to-use advice is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_network_reachabilityA
Run Network Reachability security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses read-only behavior and no resource modification, but lacks details on permissions required, network impact, or result format. The transparency is adequate but could be enriched.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences, with no redundant information. It front-loads the action and key characteristics, earning 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 simple one-parameter scanning tool with no output schema, the description is mostly complete. It covers purpose, safety, and scope. It could mention expected output or results, but given low complexity, it is sufficient.
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% for the single parameter 'region', with the schema providing a description. The tool description does not add any additional meaning or usage hints beyond what is already in the schema, so baseline 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 verb 'Run' and the specific resource 'Network Reachability security scanner'. It distinguishes from sibling tools by emphasizing 'only' and specifying read-only nature, which differentiates it from other scan tools that may modify 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?
The description implies usage for network reachability scanning, and mentions it is read-only, but does not provide explicit guidance on when to use it versus alternative sibling tools. No direct comparison or exclusion criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_patch_compliance_findingsA
Run Patch Compliance Findings security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description transparently states 'Read-only. Does not modify any AWS resources.', clearly communicating that the tool is safe and non-destructive. This fully covers behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that clearly state the tool's purpose and safety. No unnecessary words, and the key information is 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 simple scanner with one optional parameter and no output schema, the description adequately covers purpose and safety. It could mention prerequisites or scan scope, but is sufficient for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with one parameter (region) already described. The description adds no extra meaning about the parameter beyond what the schema provides, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Run Patch Compliance Findings security scanner only', specifying the verb 'Run' and resource 'Patch Compliance Findings security scanner'. It distinguishes from sibling tools like scan_access_analyzer_findings or scan_config_rules_findings by naming a specific scanner 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?
The description indicates this tool is for running the patch compliance scanner and is read-only, implying a safe operation. While it doesn't explicitly state when not to use it or list alternatives, the sibling tool names provide context for selection, and the 'only' qualifier narrows its scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_public_access_verifyA
Run Public Access Verify security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description adds value by stating 'Read-only. Does not modify any AWS resources.' This is a key behavioral trait. However, it does not disclose potential limitations (e.g., scope, permissions needed) or what the output contains, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the action and adds critical read-only information. Every word earns its place; no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and no output schema, the description is largely complete. It clarifies the tool's non-destructive nature and specificity. A minor gap: it doesn't explain what 'Public Access Verify' checks, but the name and siblings mitigate that.
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% (one parameter 'region' with description). The description adds no additional semantics beyond the schema, so it meets the baseline. It repeats the tool's name rather than enriching parameter meaning.
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: 'Run Public Access Verify security scanner only.' It specifies a specific verb ('Run') and resource ('Public Access Verify security scanner'), and the 'only' distinguishes it from siblings like 'scan_all' or 'scan_group'. No 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?
The description provides no guidance on when to use this tool versus alternatives. Among 30+ sibling scanning tools, there is no mention of context, prerequisites, or when not to use it. The word 'only' hints at specificity but lacks actionable criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_secret_exposureB
Run Secret Exposure security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states the tool is read-only and does not modify AWS resources, which is key behavioral information. However, with no annotations provided, it lacks further details such as what constitutes a secret exposure or any performance 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, which is concise and to the point. It front-loads the action ('Run ... security scanner') and adds critical information ('Read-only'). However, it could be slightly more 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?
The description lacks information about what the tool returns (no output schema present), and given the many sibling scanners, it does not explain what makes this scanner unique or what type of secrets it detects. Complete guidance for selection and interpretation 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 coverage is 100% for the single parameter 'region', and its description already explains its purpose. The tool description adds no additional parameter semantics beyond what the schema provides, meeting the baseline for high 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 clearly states the tool runs a Secret Exposure security scanner, emphasizes it is read-only, and does not modify resources. The name and description together uniquely identify its purpose among many sibling scanners.
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 says 'only' but provides no explicit guidance on when to use this tool versus alternative security scanners like scan_guardduty_findings or scan_inspector_findings. No when-to-use or when-not-to-use information is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_security_hub_findingsA
Run Security Hub Findings security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states read-only and no modifications, which is helpful. However, it lacks details on output, pagination, rate limits, or cost implications. The region default is noted but not expanded.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, very concise with no unnecessary words. It is clearly front-loaded. Slight redundancy in 'Run ... security scanner only' could be tighter, but still 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?
For a simple tool with one parameter and no output schema, the description covers the basic purpose and read-only nature. However, it does not explain what the output contains or how results are formatted, which is expected given no output schema. Adequate but not thorough.
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% with a single parameter that has a clear description. The tool description does not add additional meaning beyond what the schema already provides. Baseline score 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 'Run Security Hub Findings security scanner only', identifying the specific AWS service and action. It is distinct from siblings like scan_guardduty_findings and scan_inspector_findings, which target different services.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for Security Hub scanning but does not specify when not to use or mention alternative tools. It only clarifies read-only behavior. No explicit usage guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_ssl_certificateA
Run SSL Certificate security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description correctly highlights the tool is read-only and non-modifying, which is critical. However, it does not disclose other behavioral traits such as rate limits, prerequisites, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long with no redundant information, efficiently conveying purpose and safety.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one optional parameter and no output schema, the description covers the essential purpose and safety. It is adequate for a simple scanner, though it could hint at what the scan produces.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds value beyond the schema by noting the default behavior ('default: server region') for the region parameter, which is not present in the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Run SSL Certificate security scanner only', specifying the action and resource. It distinguishes from sibling tools by emphasizing read-only nature and non-modification of AWS 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?
The description implies it is safe for read-only SSL scanning but does not explicitly state when to use vs alternatives like scan_all or other scanners. No alternatives or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_tag_complianceB
Run Tag Compliance security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description discloses that the tool is read-only and does not modify AWS resources, which is good for safety. However, it does not detail what specific compliance checks are performed or any other behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, consisting of one short sentence that front-loads the key purpose and safety info. While it could include more detail, it is efficient and avoids verbosity.
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 simplicity (one optional param, no output schema) and many siblings, the description covers the basics (purpose, safety, parameter). However, it lacks information about output/return values or what compliance checks are executed, leaving some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'region' parameter. The description adds no extra meaning beyond what the schema already provides (AWS region to scan), so baseline score 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 action ('Run'), the resource ('Tag Compliance security scanner'), and the read-only nature. It distinguishes from sibling tools by specifying 'Tag Compliance' among many scan_ tools, though it could be more specific about the scanning purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives, such as other scan_ tools. The description simply names the scanner without providing context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_trusted_advisor_findingsA
Run Trusted Advisor Findings security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully bears the burden of disclosing behavior. It explicitly states 'Read-only. Does not modify any AWS resources', which clearly communicates safety and non-destructiveness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, no redundancy, and front-loaded key information (purpose and safety).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only scanner with one optional parameter and no output schema, the description is largely complete. It covers purpose, safety, and the single parameter. Missing minor details like output format, but acceptable for this simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one optional parameter 'region' already described in the schema. The description adds no additional semantic detail beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Run' and the specific resource 'Trusted Advisor Findings', and uses 'only' to narrow scope, distinguishing it from numerous sibling scanner tools like scan_config_rules_findings.
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 clear context that this tool is for scanning Trusted Advisor findings, but does not explicitly mention when not to use it or suggest alternative tools for other finding types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_waf_coverageA
Run WAF Coverage security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It explicitly states 'Read-only. Does not modify any AWS resources,' which is a key behavioral trait. However, it does not disclose other potential behaviors such as rate limits, authentication requirements, or what happens during the scan (e.g., temporary locks). The description is adequate but could be more thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, no wasted words. It front-loads the purpose and immediately adds the read-only attribute. Every sentence contributes essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 optional parameter, no output schema, no annotations), the description covers the core purpose and safety. However, it could briefly mention the type of output or any prerequisites (e.g., required permissions) to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for the single parameter 'region', which already explains it defaults to the server region. The tool description does not add any additional meaning beyond the schema, 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 specific purpose: running a WAF Coverage security scanner. It uses a specific verb ('Run') and resource ('WAF Coverage security scanner'), and distinguishes itself from sibling tools by emphasizing that it is 'only' for this purpose and is read-only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when a WAF Coverage scan is needed) but does not provide explicit guidance on when not to use it or suggest alternatives. The word 'only' gives some context, but without exclusion criteria or reference to sibling tools, the guidance is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a distinct purpose: individual scanners for different AWS security checks, separate report generators for various formats, and utility tools for listing, saving, and detecting services. No two tools overlap in functionality.
Most tools follow a verb_noun pattern (e.g., scan_*, generate_*, list_*), but there is minor inconsistency: some scanners end with '_findings' while others do not (e.g., scan_iam_privilege_escalation vs scan_access_analyzer_findings). Overall, the naming is clear and predictable.
34 tools is high for a single MCP server, but the count is justified by the need for individual security scanners across many AWS services. However, it borders on being overwhelming and could benefit from consolidation or categorization.
The server covers a comprehensive set of AWS security scanning areas (IAM, network, compliance, secrets, etc.) and provides multiple report formats including specialized compliance reports (MLPS, HW Defense). Minor gaps might exist (e.g., remediation tools), but core scanning and reporting is well-covered.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
AWS cloud security scanners for AI agents — S3, IAM, EC2, EKS, RDS, CloudTrail, CloudWatch Logs
Scan any MCP server for tool-poisoning, security, auth & license. Trust score before install.
Free, read-only security scanner for remote MCP servers, before you connect them.
Related MCP Servers
- AlicenseBqualityAmaintenanceAI supply chain security scanner for MCP servers and AI agents. 18 tools for CVE scanning, blast radius mapping, CIS benchmarks, SBOM generation, and compliance enforcement across OWASP LLM Top 10, MITRE ATLAS, NIST AI RMF, and EU AI Act.8431Apache 2.0
- AlicenseAqualityBmaintenanceOpen-source AWS security scanner with Attack Chains, Breach Cost Estimation, and MCP Server. 47 checks across 15 AWS services. Every finding includes copy-paste remediation (CLI + Terraform) and a dollar-risk estimate with verified source. First free standalone AWS security MCP server - Prowler and Wiz require paid SaaS.669MIT
- AlicenseNot gradedqualityAmaintenanceScans MCP servers and AI tools for security risks, providing 4-dimensional scoring and badges, with optional guardrail MCP for auto-protection.2MIT
- AlicenseAqualityCmaintenanceMCP server for auditing infrastructure-as-code attack paths, finding multi-hop chains from public internet to sensitive resources.2MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jowhee327/aws-security-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server