Skip to main content
Glama

fsv_scan

Run authorized web vulnerability scans against a target URL with passive, balanced, or aggressive profiles, returning findings by severity with CWE/OWASP mapping and remediation.

Instructions

Run a web vulnerability scan against a target URL. Crawls the site (same-origin, skips logout/asset links) and runs modules by profile: 'passive' sends no payloads (headers, SSL/TLS, DNS, cookies, WAF, fingerprint, JWT, CSP, SRI, security.txt); 'balanced' (default) adds safe active checks (XSS, SQLi, CORS, open-redirect, SSTI, host-header); 'aggressive' is the same modules at higher rate/concurrency. Returns findings grouped with severity, CWE, OWASP category, confidence and remediation. Time-boxed by max_minutes (default 20; partial results are kept). use_ct_logs=true also asks Certificate Transparency logs (crt.sh) for subdomains (sends the domain to a third party — only with the user's consent); allow_external=false skips modules that contact hosts other than the target. seed_urls adds same-origin pages no link points to; headers/cookies make it an authenticated scan (use a test account, never a real user's session). Only scan targets the user owns or is authorized to test; pass authorized=true only after they confirm.

Input Schema

NameRequiredDescriptionDefault
crawlNo
depthNo
targetYes
cookiesNo
headersNo
modulesNo
profileNobalanced
max_urlsNo
seed_urlsNo
authorizedYes
max_minutesNo
use_ct_logsNo
exclude_pathsNo
allow_externalNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so well: it discloses that aggressive mode raises rate/concurrency, that the scan is time-boxed by max_minutes with partial results kept, that the crawl skips logout/asset links, that ct_logs sends the domain to a third party (crt.sh) and requires consent, and that authenticated scanning should use a test account. These are the exact behavioral facts an agent needs and that structured fields do not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and the profile enum, and nearly every clause adds a fact an agent needs (consent for crt.sh, time-boxing, authorization). It is a dense single block, though, and the parameter notes would read better as a short list than as an inline stream of clauses.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a complex 14-parameter, potentially intrusive scanning tool with no annotations; the description covers authorization, third-party data exposure, time-boxing, and mutating scan behavior, and an output schema exists so return values need not be detailed. The main gap is that module selection and the crawl/depth/max_urls limits are left entirely to the schema titles.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate and it largely does: it explains profile values and default, max_minutes default and partial-results behavior, use_ct_logs' third-party implication, allow_external's effect, seed_urls' role, and the headers/cookies authentication intent. It leaves crawl, depth, max_urls, modules and exclude_paths undocumented (notably module names are never explained or pointed to fsv_list_modules).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Run a web vulnerability scan against a target URL', then specifies what the scan does (crawl same-origin, run modules by profile). This is clearly a full scan rather than a quick check or WAF check, but the description never explicitly names the sibling tools (fsv_quick_check, fsv_waf_check) to route the agent. Solid but no explicit sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear when-to-use guidance for each profile ('passive' sends no payloads vs 'balanced' adds active checks vs 'aggressive' higher concurrency), for use_ct_logs (only with user consent), for allow_external, and for headers/cookies (authenticated scan with a test account). It also states the authorization precondition and that authorized=true should only be passed after confirmation. It does not explicitly say when to prefer a sibling tool like fsv_quick_check instead, so not a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.