Lint cloud IAM policies (AWS/GCP/Azure JSON) for least-privilege violations
Single tool 'iamlint_scan' has a basic description (89 chars) but critically lacks parameter descriptions and output schema documentation. The input schema defines 'target' as a string but provides no guidance on format, constraints, or expected values (file path vs directory vs glob pattern). No output schema is documented, LLMs cannot predict the structure of returned findings. Error handling is absent; no guidance on what happens if the target doesn't exist, is unreadable, or contains invalid IAM policies. The tool name 'iamlint_scan' is acceptable (verb_noun form) but the implementation is minimal and does not follow production-grade tool patterns.
Lint cloud IAM policies (AWS/GCP/Azure JSON) for least-privilege violations. Returns JSON findings.
No output schema documented. LLMs cannot predict the structure of findings returned by iamlint_scan. The code returns to_json(scan(target)), but the JSON structure is not specified in the tool definition.
Parameter 'target' lacks description and constraints. No guidance on whether it accepts file paths, directories, glob patterns, or all three. No mention of required format, length limits, or error cases (e.g., nonexistent path).
No error handling or recovery guidance. Tool description does not explain what happens on failure (file not found, permission denied, invalid JSON). LLMs receive no actionable error messages.
Tool description is 89 characters, below the 194-char baseline for production tools. Lacks context on when to use this tool, what 'least-privilege violations' means, and which cloud providers are supported (AWS/GCP/Azure mentioned in docstring but not in tool description).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2026-07-28+ | v2 |
No pagination or result limiting documented. If scan returns hundreds of findings, the response could exhaust context windows. No mention of max results or how to handle large outputs.