MCP server for Intruder API - provides tools to interact with Intruder security scanning platform
Server has 16 tools with consistent verb-noun naming (get_, list_, create_, delete_, cancel_). All tools have descriptions (10-200 chars, within baseline). However, input schemas are present but lack formal enum constraints for constrained parameters (e.g., severity, status, scan_type accept free-form strings instead of enums). Output schemas are undocumented, tools return plain strings rather than structured objects, forcing LLMs to parse unstructured text. No pagination support despite list_* tools. Error handling is absent from visible code. Parameter descriptions are present but lack format/constraint details (e.g., 'max 40 characters' for tag name is good, but severity values are only in docstring, not schema). Security: API key injected via environment variable (correct pattern). Overall: solid naming and basic descriptions, but weak schema formalization and no structured output.
Cancel a running scan.
Create a new scan.
Add a tag to a target.
Create one or more targets.
Delete a target.
Remove a tag from a target.
Get details of a specific scan.
Output schemas undocumented. All tools return plain strings (e.g., 'Created scan 123 (assessment_schedule)') instead of structured JSON objects. LLMs cannot extract typed fields for downstream tool calls or data extraction.
Constrained parameters lack enum schemas. 'severity' accepts free-form strings; description says 'one of critical|high|medium|low' but schema has no enum constraint. Same for 'status', 'scan_type'. LLMs cannot validate options and may hallucinate invalid values.
No pagination support. list_* tools return all results without limit, offset, or cursor. Large result sets will exhaust context window and degrade LLM reasoning.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Get scanner output for a specific occurrence of an issue.
Get the status of the Intruder API
Get the current user of the Intruder API that we are authenticated as
List issues in the Intruder account with optional filters.
List license information for the Intruder account. Shows usage and limits for infrastructure and application licenses. When a license is used, it is tied to the target that used it for 30 days.
List all occurrences for a specific issue with optional filters.
List scans in the Intruder account with optional filters.
List all tags in the Intruder account with optional filters. Tags are applied to targets.
List all targets in the Intruder account and their associated IDs and status (one of 'live', 'license_exceeded', 'unscanned', 'unresponsive', 'agent_uninstalled').
No error handling or recovery guidance. Code does not show try-catch blocks, error classification, or actionable error messages. If API call fails, LLM receives raw exception or HTTP error with no guidance on retry or next steps.
Destructive operations lack confirmation. delete_target and cancel_scan have no dry-run or confirmation step. Agents can irreversibly delete targets without user approval.