aws-security-mcp
This server is a read-only MCP tool for automated AWS (and partially Huawei Cloud) security scanning, risk scoring, and report generation.
Run 20 parallel AWS security scanners (Security Hub, GuardDuty, Inspector, Trusted Advisor, Config, Access Analyzer, IAM privilege escalation, network reachability, secret exposure, ECR image CVE deep-scan, etc.)
Scan across an AWS Organization via org_mode and cross-account role assumption
Detect enabled security services and assess maturity
List scan groups, modules, and org accounts
Generate Markdown, HTML, MLPS Level 3 (等保三级), HW Defense (护网), and maturity reports
Get AI-summary prompts and pass back an executive summary (server makes zero LLM calls)
Save scan results locally or to S3 for a React dashboard with 30-day trends
Retrieve a CloudFormation StackSet template for deploying cross-account audit roles
Optionally scan Huawei Cloud accounts with 11 supported modules
Provides automated security scanning for AWS accounts and services, including 19 security modules, risk scoring, and multi-account support.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@aws-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.9.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). Scan tools also accept an optional provider parameter (aws by default, or huaweicloud — see Multi-cloud).
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.
Multi-cloud (Huawei Cloud, Phase 1)
The server can scan a Huawei Cloud account with the same tools and report formats. AWS remains the default; nothing changes unless you pass provider.
Selecting the provider
Every scan tool (
scan_all,scan_group,scan_<module>,scan_and_report,detect_services,list_modules,list_org_accounts) accepts an optionalprovider: "aws" | "huaweicloud"parameter (defaultaws).Server-wide default:
aws-security-mcp --provider huaweicloud, or the environment variableCLOUD_PROVIDER=huaweicloud(aliasAWS_SECURITY_MCP_PROVIDER).Region semantics with
provider: "huaweicloud":regionis a Huawei Cloud region ID (e.g.cn-north-4). Omit it, or pass"all", to scan every region project of the account (discovered via IAMkeystoneListProjects). Account-wide modules (RMS) run once; regional modules run once per region.
Credentials (read-only access key pair; the SDK does not read the file itself, the server parses it)
Environment:
HUAWEICLOUD_SDK_AK/HUAWEICLOUD_SDK_SK(optionalHUAWEICLOUD_SDK_SECURITY_TOKEN,HUAWEICLOUD_SDK_PROJECT_ID,HUAWEICLOUD_SDK_DOMAIN_ID).File:
~/.huaweicloud/credentials(override withHUAWEICLOUD_CREDENTIALS_FILE) with an INI layout:
[basic]
ak = <access key for regional services>
sk = <secret key>
[global]
ak = <access key for global services: IAM / RMS / Organizations>
sk = <secret key>Project IDs (per region) and the domain ID are resolved once via IAM and cached. Credential values are never logged; the Huawei SDK's built-in log4js output is disabled because it would otherwise print signed Authorization headers to stdout (the MCP transport).
Supported modules (11)
Module | Huawei Cloud services | Notes |
| CTS, RMS (Config), HSS, SecMaster | Security-service maturity matrix |
| RMS tracker | Detection only (recorder enabled?) |
| RMS policy states | Huawei-only aggregation module; substitutes |
| OBS (ACL / bucket policy / public access block), RDS public IPs | |
| FunctionGraph env vars, ECS user data | |
| SCM, ELB certificates | |
| EVS, EIP, ECS, VPC security groups | |
| RMS resource inventory | Required tags: Environment / Project / Owner |
| HSS host vulnerabilities | Detection + summary: no protected hosts → "HSS not enabled" finding; otherwise unhandled Critical/High vulnerabilities as findings (top 50), Medium/Low summarised in a warning |
| HSS per-host OS vulnerabilities ( | Huawei Cloud has no Patch Manager; one finding per protected host with unhandled OS vulnerabilities (Critical/High → 7.5, else 5.5) |
| ECS metadata options ( | Per-server |
Findings use the URN hws:<region>:<domainId>:<service>:<type>:<id> in resourceArn; accountId is the IAM domain ID. Report generators (Markdown / HTML / MLPS Level 3 / HW Defense) accept Huawei results; MLPS "cloud provider" items are worded for Huawei Cloud and Security Hub control IDs are replaced by RMS built-in policy names where mapped (e.g. iam-user-mfa-enabled, volumes-encrypted-check, vpc-sg-ports-check).
Recommended read-only IAM system policies (attach to the audit user / agency)
IAM ReadOnlyAccess, RMS ReadOnlyAccess, CTS ReadOnlyAccess, OBS ReadOnlyAccess (or Tenant Guest), ECS ReadOnlyAccess, EVS ReadOnlyAccess, VPC ReadOnlyAccess (includes EIP), RDS ReadOnlyAccess, ELB ReadOnlyAccess, SCM Administrator (no dedicated read-only policy), FunctionGraph ReadOnlyAccess, HSS ReadOnlyAccess, SecMaster ReadOnlyAccess; for later phases also WAF ReadOnlyAccess, DNS ReadOnlyAccess, CBR ReadOnlyAccess, CES ReadOnlyAccess, Organizations ReadOnlyAccess. Tenant Guest covers most reads but not IAM security-policy reads. Missing permissions degrade gracefully: the module reports a warning and stays success.
Known limitations (Phase 1)
Single account only.
org_mode/role_nameemit a warning and scan the current account; multi-account via Organizations + STSassumeAgencyis reserved for Phase 2 (list_org_accountsreturns an error forhuaweicloud).No IAM privilege-escalation scanner yet (requires
IAM ReadOnlyAccess, which the reference test account lacks);dns_dangling,network_reachability,disaster_recovery,waf_coverage,guardduty_findings,trusted_advisor_findings,access_analyzer_findingsandscan_ecr_image_cveare AWS-only for now (requesting them withprovider: "huaweicloud"returns a clear error; scan groups list them as unavailable).No enterprise-project (EPS) splitting; results cover the whole account.
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
36 toolsdetect_servicesB
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden of safety disclosure, and it does disclose both 'Read-only' and 'Does not modify any AWS resources'. This is meaningful and directly reduces the risk of misuse, though it doesn't cover follow-on effects such as rate limits or network 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 short and front-loaded, with a clear purpose followed by a safety note. 'Read-only' and 'Does not modify any AWS resources' are slightly redundant, but the whole description stays compact and usable.
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 read-only detection tool with two optional parameters and no output schema, this description gives enough to invoke it safely. However, it never states what the invocation returns — the declared services list, a boolean, or a report — so an agent must infer the result shape at call time.
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 gives 100% parameter coverage, fully describing region and provider defaults, plus the Huawei Cloud nuances. The description adds no parameter-specific detail, so the baseline 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 explicitly says to run the 'Security Service Detection security scanner', giving a concrete action and a named scanner scope. It includes 'only' to signal that this is a focused scan rather than a report or list, though it does not distinguish among the 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 guidance is given about when to choose this tool over alternatives such as scan_all, scan_and_report, or scan_security. The word 'only' hints at a narrow scope but doesn't name exclusions or selection criteria. The agent is left to infer appropriate usage.
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 |
|---|---|---|---|
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states 'Read-only. Does not modify any AWS resources,' which is valuable behavioral disclosure. However, no annotations are provided, so the description carries the full burden; it could add more context about output format or whether it queries live AWS APIs, but the safety guarantee is clearly stated.
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 waste. The core purpose and the read-only guarantee are front-loaded, and 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 simple list tool with one optional parameter and no output schema, the description is nearly complete. It could mention what the returned list contains (names, descriptions) but the description already says 'with descriptions.' The read-only note covers the main safety concern.
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 the provider parameter thoroughly. The description adds no additional parameter semantics beyond what the schema provides, 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 states a specific verb ('List') and resource ('available security scan modules') and explicitly notes it is read-only. It distinguishes itself from the many sibling scan_* tools by being the listing tool rather than a scanning tool.
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 clearly indicates this is for listing modules, not running scans, and the read-only note implies it is safe to call for discovery. It does not explicitly name alternatives or say when not to use it, but the sibling context makes the distinction clear.
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden for behavioral disclosure. It explicitly states 'Read-only,' which is the most important safety trait for this tool. It does not mention pagination, required IAM permissions, or response shape, but for a simple list operation the core behavior is adequately conveyed.
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 three short sentences with no filler. It front-loads the action, then adds the use-case and the read-only trait. 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?
For a simple list operation with zero required parameters and rich schema coverage, the description gives sufficient context: what it lists, why it's useful, and its safety profile. It does not describe the exact return fields, but no output schema exists and the phrase 'List all accounts' makes the general return type clear.
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%, and the schema already documents both 'region' and 'provider' with defaults and provider-specific guidance. The description adds no additional parameter semantics, so the 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 states a specific verb and resource: 'List all accounts in the AWS Organization.' It is clearly distinct from sibling tools like list_modules or list_groups, and the use-case sentence reinforces its role. It does not explicitly name an alternative, so it falls just short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The sentence 'Useful for discovering accounts before multi-account scanning' gives a clear context for when to invoke the tool. It does not explicitly mention when not to use it or name alternatives, but the use-case is specific enough to guide selection.
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_findingsB
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Read-only' and 'Does not modify any AWS resources,' which covers safety expectations. However, it does not disclose output format, whether it scans a single region or all regions, or any other behavioral details beyond read-only safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded with the main action. The sentence 'Read-only' and 'Does not modify any AWS resources' are somewhat redundant, but the overall structure is efficient and free of filler.
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 read-only scanner with two optional parameters fully described in the schema, the description is mostly adequate. However, with no output schema, the description does not clarify what the scanner produces or how results are presented, leaving a notable gap for a tool that returns findings.
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 input schema already documents region and provider with clear descriptions, including Huawei Cloud specifics. The description itself adds no additional parameter meaning, so the baseline 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 uses a specific verb with resource ('Run Access Analyzer Findings security scanner') and scopes it with 'only,' distinguishing it from the many sibling scanner tools. It clearly identifies what the tool does, although it could further explain what Access Analyzer Findings are.
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 is given about when to use this tool versus alternatives like scan_security_hub_findings, scan_guardduty_findings, or scan_all. 'Only' implies a narrow scope, but the description does not name alternatives or provide conditions for selection, leaving usage largely to inference.
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 | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). | |
| 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 the burden of behavioral disclosure. It explicitly adds 'Read-only. Does not modify any AWS resources' and notes parallel execution and multi-account org scanning, which are useful behavioral facts not present in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded, and every sentence carries useful information: scope, parallelism, safety, and org-mode support. There is no padding or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives a solid high-level picture: complete for invocation, but since there is no output schema and no annotations, it does not explain what the tool returns or how it relates to scan_and_report. It is adequate but not fully comprehensive for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters. The description adds no parameter-specific semantic detail beyond schema, matching the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action and scope: 'Run all security scanners in parallel (including service detection).' 'All scanners' distinguishes it from the individual scanner siblings at a glance, though it does not explicitly contrast it with scan_and_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 when to use this tool by emphasizing broad coverage ('all security scanners') and multi-account support, but it does not state explicit when/how alternatives like scan_and_report, scan_group, or individual scanners should be used instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_and_reportA
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 | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). | |
| 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?
With no annotations provided, the description must carry the full burden. It does disclose an important side effect: reports are saved to ~/.aws-security/reports/. However, it does not mention operational behaviors such as required credentials, runtime, cost implications, or the exact scope of 'full security scan'.
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?
Three short sentences with no filler: the main action is front-loaded, the benefit is stated second, and the output location is given last. 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?
For a tool with 8 optional parameters and no output schema, the description gives the core purpose and output location but leaves ambiguity about what 'full security scan' includes and what operational caveats apply. The schema fills parameter details, but behavioral context remains thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 8 parameters. The description adds no parameter-level meaning, but the baseline of 3 applies because the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific combined action: 'Run a full security scan AND generate reports in one step.' It also adds a distinguishing rationale ('Avoids large data transfer between tools') that separates it from the single-purpose scan_* and generate_* siblings.
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 this tool: when both scanning and report generation are needed, because it avoids the data transfer cost of chaining separate tools. It does not explicitly name alternatives or exclusions, but the context is clear enough.
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states 'Read-only' and 'Does not modify any AWS resources,' which tells the agent this tool is safe and non-destructive. It does not mention side effects like API costs or result output behavior, but the core safety trait is clearly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core purpose, which is good. However, 'Read-only' and 'Does not modify any AWS resources' are redundant statements that could be condensed into one, so not every sentence earns its place fully.
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 tool's scope and safety profile, and the schema handles the two optional parameters well. However, there is no indication of what the output or findings look like, and no guidance on how to choose this scanner over the many closely related sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 even without additional parameter explanations in the description. The schema already documents region defaults and the huaweicloud provider behavior in detail. The tool description adds no parameter-specific meaning beyond the tool's overall scope.
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 identifies the tool as running the Config Rules Findings security scanner, which distinguishes it from the many sibling scanner tools such as scan_guardduty_findings. The word 'only' narrows the scope, and 'Read-only' reinforces what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Config Rules Findings security scanner only' implies the tool should be used when Config Rules findings are the target, but it does not explicitly state when to prefer this over scan_security_hub_findings, scan_guardduty_findings, or other scanners. No exclusions, prerequisites, or alternative tool routing are provided.
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states 'Read-only' and 'Does not modify any AWS resources,' which is critical for an agent to understand the tool's safety profile. This adds meaningful context beyond the schema, though it does not mention other behaviors like error handling or output format. The explicit read-only declaration is a strong positive.
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 short sentences, efficient and to the point. The primary purpose is front-loaded, and the read-only caveat follows immediately. There is no unnecessary fluff or repetition, making it highly concise while still covering essential behavioral information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple scanner with two optional parameters and no output schema, the description covers the core purpose and the most important behavioral trait (read-only). The parameter details are fully documented in the schema, and no nested objects or complex return structures exist. It could benefit from a brief note on what the scan actually assesses (e.g., DR readiness indicators), but given the tool's simplicity, the completeness is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters (region and provider) having detailed descriptions in the schema. The description does not add any additional parameter-specific information, such as examples or constraints beyond what the schema already provides. Thus, it meets the baseline of 3 but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Run') and resource ('Disaster Recovery security scanner'), making it obvious that this tool is dedicated to DR security scanning. The word 'only' further narrows its scope, distinguishing it from sibling scan tools like scan_all or scan_secret_exposure. However, it does not explicitly enumerate what the scanner checks (e.g., backup, replication), so it stops short of full differentiation from other scanning 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?
The description implies usage for disaster recovery security scanning but does not provide explicit when-to-use or when-not-to-use guidance. There is no mention of alternatives or conditions for selecting this tool over others. The context signals show many sibling scanning tools, and without guidance an agent might need to infer when this is the right choice. It is clear but not explicitly prescriptive.
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states 'Read-only' and 'Does not modify any AWS resources,' which covers the most critical safety behavior. However, it does not mention return format, permission requirements, or that the provider parameter can target Huawei Cloud, which is a notable omission for a tool with cross-provider support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of three short, front-loaded sentences: the purpose, the read-only nature, and no modification guarantee. Every sentence adds distinct value with zero fluff. This is an efficient, well-structured description.
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 read-only scanner with two optional parameters and no output schema, the description adequately covers the primary purpose and safety profile. It does not mention provider support in the text, but the schema fully covers that, and no output format expectations are stated. Minor gaps are the lack of return-value hints and the AWS-specific language that might confuse when provider=huaweicloud, but overall this is reasonably 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 already has 100% description coverage for both parameters, including detail on the provider enum and Huawei Cloud behavior. The tool description adds no additional parameter-level meaning, so the baseline score of 3 applies. The description's reference to 'AWS resources' is slightly less general than the schema's provider parameter, which supports huaweicloud as well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Run'), a clear resource ('Dangling DNS security scanner'), and the word 'only' distinguishes it from sibling scanner tools. An agent can immediately tell this is a targeted scan for dangling DNS rather than a general scan tool. This effectively differentiates it from the many other scan_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('Dangling DNS security scanner only') but does not explicitly state when to use this versus alternatives like scan_all or other scan_* tools. There is no mention of prerequisites, exclusions, or a preferred workflow. This leaves the agent to infer the appropriate selection from the name and sibling context.
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). | |
| 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?
No annotations are provided, so the description carries the full burden. It discloses that the tool is read-only, that it performs deep scanning of image layers, that it reports classifications against official scan results, and that it can skip images based on size limits. It doesn't disclose rate limits, NVD API behavior beyond the parameter description, or what happens to partial results, but the core behavioral traits are clearly stated.
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 three sentences with zero waste. The core purpose and differentiator are front-loaded, the classification output is stated, and the read-only nature is appended. 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?
For a complex 14-parameter scan tool with no output schema, the description is reasonably complete: it states the purpose, the classification output, and the read-only nature. It doesn't describe the report structure or how results are returned, but the parameter descriptions cover the behavioral knobs. The lack of an output schema is a gap, but the description does enough to let an agent invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 14 parameters thoroughly. The description adds context about the overall scan behavior (deep-scan, classification) but doesn't add much per-parameter meaning beyond what the schema provides. Baseline 3 is appropriate because the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Deep-scan'), a specific resource ('ECR image layers'), and a specific scope ('critical/high CVEs missed by ECR Basic/Inspector Enhanced scanning'). It also names the classification output ('gap/confirmed/reverse-gap') and explicitly says 'Read-only', which distinguishes it from other scan tools. This is a clear, differentiated purpose statement.
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 this tool: when you need deeper CVE detection beyond ECR Basic/Inspector Enhanced, specifically for unmanaged binaries and distro secdb gaps. It doesn't explicitly name sibling alternatives or state when not to use it, but the contrast with 'ECR Basic/Inspector Enhanced scanning' provides clear context. The 'Read-only' note also helps an agent choose it over mutation 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 | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). | |
| 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 the full behavioral burden. It explicitly discloses 'Read-only' and 'Supports multi-account org scanning,' which are valuable safety and scope traits, but it does not describe result handling, runtime expectations, or any other side effects beyond being read-only.
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 compact and front-loaded: it states the action, the resource, a scenario example, the read-only safety property, and the multi-account capability in three short sentences. Every sentence earns its place with no filler 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 7-parameter tool with no output schema, the description is adequate but incomplete. The schema covers all parameter semantics, and the description names the scenario-based use case, but it does not mention how to discover available groups or what the tool returns after execution, which matters given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the individual parameters already include rich semantics such as defaults, enum values, Huawei Cloud region behavior, and role assumption behavior. The tool description adds no additional parameter-level meaning beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Run' and resource ('a predefined group of security scanners for a specific scenario'), with concrete examples like MLPS compliance and network defense. It is clearly distinct from the individual scan_* siblings, though it does not explicitly differentiate itself from scan_all or scan_and_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 gives clear context: use this tool when you need a scenario-based group of scanners rather than a single focused scanner. It also notes multi-account org scanning support, which signals a key selection factor, but it does not explicitly state when to prefer scan_all or scan_and_report instead.
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without any annotations, the description carries the full behavioral burden and it does disclose a key trait: the operation is read-only and does not modify AWS resources. This is essential side-effect communication for an agent deciding whether a scanner is safe to invoke. It omits other potential behavior details like runtime or API cost, but for a simple scanner, the non-destructive guarantee is the most important 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 only two short sentences with the action and target front-loaded. 'Does not modify any AWS resources' is slightly redundant with 'Read-only,' but the overall text is efficient and respects the reader's attention.
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 low-complexity tool with fully documented optional parameters, the description covers scope and safety adequately. However, since there is no output schema, the description does not explain what the scanner returns or what happens when it runs, which an agent may need to anticipate. It also leaves the decision of when to select GuardDuty over sibling scanners entirely unaddressed.
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 provides 100% coverage for both optional parameters, including detailed region defaults and Huawei Cloud behavior. The description text itself adds no parameter-level semantics, so the baseline of 3 applies; no deduction is needed because the schema fully compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Run GuardDuty Findings security scanner only.' The word 'only' explicitly limits the tool to this one scanner, distinguishing it from sibling tools such as scan_security_hub_findings or scan_inspector_findings. There is no ambiguity about the target 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 no guidance on when to use this tool versus the many similar scan tools in the sibling list. It does not mention Security Hub, Inspector, Trusted Advisor, Access Analyzer, or other finding sources, nor does it specify any condition that would make GuardDuty the correct choice. The 'only' clause is a scope limiter, not a usage rule.
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explicitly discloses 'Read-only' and 'Does not modify any AWS resources', which are key behavioral traits for a security scanner. It could add more (e.g., permissions, result format), but the core safety guarantee is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences front-load the purpose and the read-only guarantee. There is no wasted wording; every sentence is functional.
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 read-only scanner with two optional, well-documented parameters and no output schema, the description provides sufficient core context. It could mention relationships to sibling scanners, but the purpose and safety behavior are clearly covered.
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%, and both parameters (region, provider) have detailed descriptions in the schema. The main tool description adds no parameter-level meaning, so the baseline 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 states a specific verb ('Run'), a specific resource ('IAM Privilege Escalation security scanner'), and adds 'only' to narrow scope. It is clear and unambiguous, but it does not explicitly name or contrast sibling tools, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Use is implied: run this when you want IAM privilege escalation scanning. The word 'only' hints it is not for other scan types, but it does not name alternatives like scan_all or scan_and_report, nor give explicit conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_idle_resourcesA
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states 'Read-only. Does not modify any AWS resources,' which is critical safety information for an agent. It could add more detail about side effects or output, but the key non-mutating behavior is clearly disclosed.
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 three short sentences with no filler: purpose, scope, and safety. Every sentence contributes important information, and the key qualifier 'only' 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 low-complexity tool with zero required parameters and 100% schema coverage, the description is mostly adequate. However, with no output schema, it does not mention what the scan returns or how results are presented, and it does not relate this tool to the broader scan_all/scan_group workflow. These are meaningful gaps for an agent deciding how to use the result.
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%, and both parameters already have meaningful descriptions in the schema. The tool description adds no additional parameter-level semantics, so the schema carries the load. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Run Idle Resources security scanner only.' This clearly identifies what the tool does and distinguishes it from the many sibling scanning tools by narrowing the scope to idle resources. The read-only note reinforces the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance about when to use this tool versus alternatives like scan_all, scan_group, or the other scan_* tools. It only says 'only,' which hints at scope but does not explain when an agent should choose this tool or when it should not.
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states 'Read-only. Does not modify any AWS resources,' which is valuable safety information for an agent. It also discloses the huaweicloud fallback behavior ('org_mode falls back to the current account with a warning') in the parameter description, which is a meaningful behavioral trait beyond a simple scan.
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 with zero waste. The core purpose and safety guarantee are front-loaded, and the provider-specific nuance is placed in the parameter description where it belongs. 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?
For a read-only scanner with no required parameters and no output schema, the description is nearly complete. It covers purpose, safety, and provider-specific behavior. The only minor gap is that it does not describe what the scan returns or how results are delivered, but with no output schema and a simple read-only operation, this is a small omission.
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 both parameters. The description adds value by explaining the huaweicloud provider's region semantics (Huawei Cloud region ID, 'all' to scan every region project, single-account fallback), which goes beyond the bare schema enum. This compensates for the schema's minimal region 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 states a specific verb ('Run'), a specific resource ('IMDSv2 Enforcement security scanner'), and explicitly scopes it as read-only. It distinguishes itself from the many sibling scan tools by naming the exact scanner, so an agent can tell it apart from scan_iam_privilege_escalation or scan_public_access_verify without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by naming the scanner and noting it is read-only, but it does not explicitly state when to choose this tool over alternatives like scan_all or scan_group. It provides no exclusions or conditions (e.g., 'use this when you only need IMDSv2 enforcement'). The sibling list is large, and the description does not route the agent to a broader alternative.
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden of behavioral disclosure. It does state 'Read-only. Does not modify any AWS resources,' which is an important safety trait for a scanner. However, it does not mention required permissions, return/output behavior, or any other operational side effects beyond non-modification.
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 filler, front-loading the key 'only' scope and then adding the read-only safety note. 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?
For a two-optional-parameter, read-only scanner, the description covers the core operation and safety profile, and the schema covers parameters. Still, with no output schema and no annotation enrichment, the description does not indicate what the caller should expect back after running the scan, leaving a clear but minor completeness gap.
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 documents both parameters with 100% coverage, including a detailed description of the provider enum and Huawei Cloud behavior. The description adds no parameter-level information, so the schema-based 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 states the tool's job with a specific verb and resource: 'Run Inspector Findings security scanner only.' The 'only' phrasing clarifies that this is not a general scanner, though it does not explicitly name sibling tools such as scan_security_hub_findings. It is clear enough to identify the tool's purpose at a glance.
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 conveys the usage context: run only the Inspector Findings scanner, and it is read-only, so an agent can infer when it applies. It does not explicitly state when not to use it or name alternatives among the many scanner siblings, leaving some routing to inference.
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states 'Read-only' and 'Does not modify any AWS resources', which is a key safety-relevant behavior. This is genuinely useful information an agent otherwise could not infer from the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with no wasted words. Minor redundancy exists between 'Read-only' and 'Does not modify any AWS resources', but the overall structure is efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter tool with fully documented parameters, the description covers purpose and non-destructive behavior. However, it does not describe the output of the scan or provide usage guidance relative to the large sibling set, so it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both region and provider are already documented, including details like AWS vs Huawei Cloud region IDs and fallback behavior. The description adds no parameter-level meaning beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Run Network Reachability security scanner only'), making the tool's purpose clear. It is distinguishable from the many scan_* siblings by name and the qualifier 'only', though it does not explicitly reference an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'security scanner only' and 'Read-only' give an implied use context, but there is no explicit guidance about when to choose this scanner over siblings like scan_all, scan_and_report, or the other scan_* tools. It does not state when not to use it.
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full safety burden, and it explicitly states 'Read-only. Does not modify any AWS resources.' This is a crucial behavioral disclosure for a scanner that could otherwise be assumed to take remediation actions. It does not describe return/output behavior, but the read-only/no-modification claim covers the main side-effect risk.
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?
Three short declarative sentences, front-loaded with the action and scope, with no filler. Each sentence adds a distinct constraint: what to run, that it is read-only, and that it does not touch AWS resources. This is very 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 low-complexity scanner with two fully documented optional parameters, the description is mostly sufficient: purpose and safety are clear. However, there is no description of what the tool returns, and the no-modification statement only mentions AWS resources even though the provider enum includes Huawei Cloud. These are minor but real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters at 100% coverage, so the description does not need to repeat them. The description adds no parameter-level semantics, but the enum, defaults, and provider/region interaction are already in the schema. Baseline 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?
'Run Patch Compliance Findings security scanner only' gives a concrete verb, a specific scan target, and an explicit scope restriction. It is immediately clear this is a single-purpose findings scanner among the scan_* siblings. It does not name an alternative, but the resource and 'only' are sufficient.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'scanner only' and 'Read-only' imply this tool should be used for the isolated patch-compliance scan rather than broader scan/report flows. However, it names no sibling alternatives and gives no explicit conditions for choosing this over scan_all, scan_and_report, or the other findings scanners. Usage guidance is implied, not explicit.
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states 'Read-only' and 'Does not modify any AWS resources,' which is valuable safety-relevant context for a scanner tool. It does not disclose auth requirements or output behavior, but for a safe read-only scan this is reasonable.
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 short sentences with no filler. The primary purpose is front-loaded immediately, and the safety clarification follows without 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 only two optional parameters and full schema coverage, the description is mostly sufficient. It states the tool's scope and safety profile, though it does not mention what the scan returns or how it relates to grouped scan workflows. Given the low complexity, this is a minor gap.
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 both region and provider already well documented, including the huaweicloud nuance. The description itself adds no parameter-level information, so the 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 gives a specific verb ('Run'), a specific resource ('Public Access Verify security scanner'), and narrows scope with 'only', which clearly distinguishes it from the combined or report-generating siblings like scan_and_report and scan_all.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word 'only' implies this tool should not be used for broader scans or other scanner types, but the description does not explicitly state when to choose this versus alternatives such as scan_all or scan_group. Usage context is weakly implied rather than clearly specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_rms_compliance_findingsB
Run RMS Compliance Findings (Huawei Cloud) security scanner only. Read-only. Does not modify any AWS resources.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | AWS region to scan (default: server region) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden and does disclose the key safety trait: the operation is read-only and does not modify AWS resources. It doesn't mention auth, rate limits, or return behavior, but for a read-only scanner these are less critical, and the 'security scanner only' phrasing signals no remediation 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 very short and front-loads the main action in the first sentence. There is some redundancy between 'Read-only' and 'Does not modify any AWS resources', and 'security scanner only' partly restates the name, but overall it is compact and scannable.
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 two optional parameters and a fully documented schema, the description plus schema is mostly adequate. The main gaps are the lack of output/return information and the absence of usage context relative to sibling scanners, though 'security scanner' and the tool name partially 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 coverage is 100% and the parameter descriptions already explain region, provider defaults, Huawei Cloud region IDs, and the single-account fallback. The tool description adds no parameter-level meaning, so it stays at the baseline for fully documented schemas.
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 identifies the action (run) and resource (RMS Compliance Findings, Huawei Cloud security scanner), and the 'only' wording hints it is a focused single-scanner operation. It doesn't explain what the scanner produces or explicitly differentiate it from sibling scan_*_findings tools, though the name itself already provides that differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to choose this tool over alternatives like scan_all or scan_security_hub_findings, nor are exclusions or prerequisites mentioned. The word 'only' implies it is not a catch-all scan, but this is too indirect to be actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_secret_exposureA
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on the safety disclosure burden. It clearly states the operation is read-only and does not modify AWS resources, which is the key behavioral concern for a scanner. More detail about side effects such as required permissions or runtime would improve it, but the essential behavior is disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, stating the operation in the first sentence. 'Read-only' and 'Does not modify any AWS resources' are somewhat redundant, but the text remains compact and scannable.
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 low-complexity tool with two fully documented optional parameters and no output schema, the description plus schema cover the needed context: purpose, scope, provider options, and read-only safety. It could add explicit usage boundaries or return expectations, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both region and provider thoroughly, including huaweicloud-specific behavior. The description adds no parameter-level meaning, which is acceptable at baseline but not above it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a clear action ('Run') and a specific target ('Secret Exposure security scanner'), so the purpose is unambiguous. The word 'only' hints that this tool is scoped to secret-exposure scanning rather than other security checks, but it does not explicitly contrast with 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 phrase '...scanner only' implies this tool is for secret-exposure scanning and not for other scan types, but no explicit when-to-use or alternative sibling tools are mentioned. An agent must infer usage from the tool name and the word 'only'.
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
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 explicitly states 'Read-only. Does not modify any AWS resources.' This clearly discloses the most important behavioral trait (safety). It does not cover other behaviors like output format or permissions, but the read-only guarantee 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 filler. The purpose is front-loaded and the safety note is a valuable second sentence. 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?
The description covers purpose and safety, but with no output schema and many siblings like save_results and generate_report, it leaves unclear what the scan produces or whether results are returned or saved. For a tool with optional parameters and no annotations, this is a moderate gap.
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 both parameters are described in the schema, including the Huawei Cloud provider behavior. The description adds no parameter-level detail beyond the schema, so the baseline 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 states a specific action ('Run Security Hub Findings security scanner only') with a clear resource and scope. The word 'only' distinguishes it from broader scanners like scan_all and other findings scanners like scan_guardduty_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?
No guidance is given on when to use this tool versus alternatives. The sibling list includes many overlapping scanners (GuardDuty, Inspector, Trusted Advisor), and the description does not mention how this scanner differs or when to choose it over scan_all or scan_group.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_ssl_certificateB
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden, and it explicitly states 'Read-only' and 'Does not modify any AWS resources.' It does not cover permission needs, rate limits, or output behavior, but the core side-effect profile is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded, with the core purpose in the first sentence. 'Read-only' and 'Does not modify any AWS resources' are mildly redundant, but overall the description is appropriately compact.
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 purpose and side-effect safety, and the schema fully handles parameters. However, it does not mention expected return/output behavior and gives no context about how this scanner relates to broader scan workflows, leaving minor gaps for an agent deciding how to use it.
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 region and provider, including the huaweicloud nuance. The description adds no parameter-level meaning beyond what the schema provides, so the baseline 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 names a specific verb and resource — 'Run SSL Certificate security scanner only' — making the tool's focus clear. The word 'only' also separates it from the broader scan_all/scan_and_report siblings, though no sibling is explicitly named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this scanner versus the many sibling scan tools, or when a broader scan would be more appropriate. The 'only' wording implies exclusivity but does not explain how to choose between alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_tag_complianceA
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden and does disclose a key safety trait: 'Read-only. Does not modify any AWS resources.' However, it does not mention other behavioral aspects such as required permissions, whether findings are returned inline, or whether provider-specific behavior differs beyond what the schema already states.
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 three short sentences with no filler. The primary purpose is front-loaded, and every phrase adds distinct value: what it runs, that it is read-only, and that it does not modify resources.
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 only optional parameters and a fully documented schema, the description covers the read-only safety aspect. But with no output schema and no annotation support, it leaves the return behavior and operational context (e.g., what compliance findings look like, when this scanner is relevant) to inference.
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 input schema fully documents both parameters, including the huaweicloud provider nuances. The description adds no parameter-level information, so the 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 uses a specific verb-resource pair: 'Run Tag Compliance security scanner' and reinforces scope with 'only'. It clearly distinguishes this from the many sibling scan tools by naming the exact 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?
No guidance is given on when to choose this tool over alternatives such as scan_public_access_verify, scan_idle_resources, or scan_security_hub_findings. The word 'only' is a scope qualifier, not a usage guideline, and no when/when-not conditions or alternative tool names are mentioned.
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden of disclosing side effects. It explicitly states 'Read-only' and 'Does not modify any AWS resources,' which is the most critical behavioral trait for a scanner. It does not cover permission needs or output behavior, but the safety profile is clearly disclosed.
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 filler. The tool's purpose and key safety property are front-loaded, and 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?
The description covers the core purpose and side effects, and the schema covers parameters. However, with no output schema and no usage guidance among many similar scan tools, the overall context is only minimally adequate for an agent to confidently select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters fully, with 100% coverage including defaults and enum behavior. The description adds no parameter-level meaning beyond that, 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 identifies the action ('Run ... security scanner'), the specific resource (Trusted Advisor Findings), and emphasizes that it is 'only' this scanner. The resource name itself distinguishes it from sibling scan tools, though it does not explicitly contrast with them.
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 when-to-use guidance is provided. With many sibling scan_* tools, the description gives no explicit indication of when Trusted Advisor Findings should be chosen over Security Hub, GuardDuty, Inspector, or others. 'Only' communicates scope, not selection criteria.
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) | |
| provider | No | Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass "all" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing side effects. It explicitly states 'Read-only' and 'Does not modify any AWS resources,' which directly reassures an agent about safety. However, it does not mention other behavioral aspects like output format or whether it makes network calls, though the read-only guarantee is the most critical trait.
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 three short sentences, each carrying useful information: the action, the read-only nature, and the no-modification guarantee. It is front-loaded with the core purpose and wastes no 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 tool with two optional parameters and no output schema, the description is minimally adequate: it states what it does and that it is safe. However, it does not indicate what the scanner returns, how the results are presented, or any prerequisites such as AWS credentials or permissions. These gaps leave an agent guessing about the tool's full behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents both parameters (region, provider) including the enum and provider-specific behavior. The description adds no additional parameter semantics beyond what the schema provides, so the baseline 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 states a specific verb and resource: 'Run WAF Coverage security scanner only.' The word 'only' clearly distinguishes it from broader scanners like scan_all and the other scan_* siblings. This makes the tool's scope unmistakable even without opening the schema.
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 WAF coverage scanning through the explicit 'only' phrasing, but it never explicitly states when to choose this tool over alternatives such as scan_all or scan_security_hub_findings. There is no mention of exclusions or conditions that would route an agent to a sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
26 tool updates
v0.9.0- Changed
detect_services1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
list_modules2 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
list_org_accounts1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_access_analyzer_findings1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_all1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_and_report1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_config_rules_findings1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_disaster_recovery1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_dns_dangling1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_ecr_image_cve1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_group1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_guardduty_findings1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_iam_privilege_escalation1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_idle_resources1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_imdsv2_enforcement1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_inspector_findings1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_network_reachability1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_patch_compliance_findings1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_public_access_verify1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Added
scan_rms_compliance_findings - Changed
scan_secret_exposure1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_security_hub_findings1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_ssl_certificate1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_tag_compliance1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_trusted_advisor_findings1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
- Changed
scan_waf_coverage1 field changed- added
Input schema / properties / providerAdded value: +{ + "description": "Cloud provider to scan (default: aws). With huaweicloud, `region` is a Huawei Cloud region ID (e.g. cn-north-4); omit it or pass \"all\" to scan every region project of the account. Huawei Cloud Phase 1 is single-account (org_mode falls back to the current account with a warning).", + "enum": [ + "aws", + "huaweicloud" + ], + "type": "string" +}
2 tool updates
v0.8.0- Added
scan_ecr_image_cve - Changed
scan_group1 field changed- changed
Input schema / properties / group / descriptionPrevious value: -"Scan group ID: mlps3_precheck, hw_defense, exposure, data_encryption, least_privilege, log_integrity, disaster_recovery, idle_resources, tag_compliance, new_account_baseline, aggregation"New value: +"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"
34 tool updates
v0.7.6- First observed
detect_services - First observed
generate_html_report - First observed
generate_hw_defense_report - First observed
generate_maturity_report - First observed
generate_mlps3_html_report - First observed
generate_mlps3_report - First observed
generate_report - First observed
get_ai_summary_prompt - First observed
get_setup_template - First observed
list_groups - First observed
list_modules - First observed
list_org_accounts - First observed
save_results - First observed
scan_access_analyzer_findings - First observed
scan_all - First observed
scan_and_report - First observed
scan_config_rules_findings - First observed
scan_disaster_recovery - First observed
scan_dns_dangling - First observed
scan_group - First observed
scan_guardduty_findings - First observed
scan_iam_privilege_escalation - First observed
scan_idle_resources - First observed
scan_imdsv2_enforcement - First observed
scan_inspector_findings - First observed
scan_network_reachability - First observed
scan_patch_compliance_findings - First observed
scan_public_access_verify - First observed
scan_secret_exposure - First observed
scan_security_hub_findings - First observed
scan_ssl_certificate - First observed
scan_tag_compliance - First observed
scan_trusted_advisor_findings - First observed
scan_waf_coverage
TDQS
Scored across 36 tools
Each tool clearly targets a distinct operation: list modules/groups/accounts, run specific scanners per security domain, generate specific report types, or save/setup. Even the many scan_* tools are each named for a unique security check (e.g., scan_ssl_certificate vs scan_dns_dangling), and their descriptions explicitly state what they scan. The grouping tools (scan_all, scan_group, scan_and_report) are distinct in their purpose and input/output.
Tool names follow a consistent verb_noun pattern: list_* for listing, scan_* for scanning, generate_* for report generation, and get_* for retrieval. Exceptions like save_results and get_setup_template still follow the verb_noun structure. All names use snake_case consistently.
With 36 tools, this is on the heavier side, but the broad scope of AWS security scanning justifies the count. Each scanner represents a distinct security domain, and report generation tools cover different formats and compliance frameworks. However, the sheer number might overwhelm an agent, especially since many scan_* tools are repetitive in pattern.
The tool surface covers the full lifecycle: listing available modules/groups, discovering org accounts, running individual scans, running grouped scans, generating multiple report types (Markdown, HTML, MLPS, HW defense, maturity), and saving results. Minor gaps include lack of a get_results or delete_report tool, but for a security scanning server, the coverage is quite complete.
Maintenance
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
- AlicenseAqualityAmaintenanceagent-bom v0.105.0 is an open security scanner and self-hosted control plane for AI, MCP, and cloud infrastructure. The default scan profile in MCP server mode exposes 8 MCP tools. Additional profiles provide inventory, findings, compliance, graph, and runtime workflows.8445 PyPI31Apache 2.0
- AlicenseAqualityAmaintenanceOpen-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.7142 PyPI72MIT
- AlicenseNot gradedqualityAmaintenanceScans MCP servers and AI tools for security risks, providing 4-dimensional scoring and badges, with optional guardrail MCP for auto-protection.2MIT
- AlicenseAqualityDmaintenanceMCP server for auditing infrastructure-as-code attack paths, finding multi-hop chains from public internet to sensitive resources.2MIT