AWS EBS volume optimization tool that analyzes idle and overprovisioned volumes, detects optimization opportunities, and executes recommended actions via AWS Lambda
EBS Optimization Tool has 10 tools with basic schemas and descriptions, but significant gaps in parameter documentation, output schema clarity, and error handling guidance. Most tools lack descriptions for individual parameters (e.g., 'volume_info' in execute_recommendation is described only as 'Volume information dictionary' with no field specification). Output schemas are not documented, callers cannot predict response structure. Error handling is minimal; most tools return boolean or None without actionable recovery guidance. Naming is generally clear (verb_noun pattern), but composition issues exist: execute_recommendation conflates multiple concerns (snapshot, delete, type change, resize) into one tool. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels. Average tool description length ~150 chars (within baseline 194), but parameter descriptions are sparse or generic.
Analyzes EBS volumes to detect idle and overprovisioned volumes. Returns analysis results including volume metrics, idle status, overprovisioning status, and cost information.
Attaches an EBS volume to an EC2 instance. Attach request is sent without waiting for completion.
Creates an EBS volume snapshot. Snapshot creation is asynchronous - only the creation request is sent without waiting for completion.
Deletes an EBS volume. Delete request is sent without waiting for completion.
Detaches an EBS volume from an EC2 instance. Detach request is sent without waiting for completion.
Detects idle EBS volumes based on CloudWatch metrics. Identifies volumes with high idle time, low IO operations, and low throughput.
Output schemas not documented. Tools return results but callers cannot predict field names, types, or structure. E.g., analyze_volumes returns 'analysis results' but no schema is visible.
execute_recommendation conflates 5 distinct actions (snapshot_only, snapshot_and_delete, change_type, resize, change_type_and_resize) into one tool. Should split into separate tools: create_snapshot, delete_volume, modify_volume_type, modify_volume_size.
Parameter 'volume_info' in execute_recommendation lacks field specification. Described as 'Volume information dictionary' with no schema of required/optional keys. LLM cannot construct valid input.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | <=2025-11-25 | v2 |
Detects overprovisioned EBS volumes based on disk usage, IOPS usage, and throughput usage metrics.
Executes recommended actions on EBS volumes including snapshot creation, volume deletion, type changes, and resizing. Supports actions: snapshot_only, snapshot_and_delete, change_type, resize, change_type_and_resize.
Changes the EBS volume size. Only supports size increases, not decreases.
Changes the EBS volume type. Supports changing between gp2, gp3, io1, io2, st1, sc1 types with optional IOPS and throughput parameters.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. delete_volume, detach_volume, and execute_recommendation are destructive but unmarked. Agents cannot reason about safety.
Error handling returns boolean or None without recovery guidance. E.g., delete_volume returns False on error but does not tell LLM whether to retry, ask user, or abort. No actionable error messages.