Skip to main content
Glama
dtkmn

MCP ZAP Server

Note This project is not affiliated with or endorsed by the ZAP project. It is an independent implementation.

mcp-zap-server exposes ZAP through MCP over streamable HTTP so agentic tools can run operator-controlled security workflows without brittle glue scripts or unsafe scanner access.

Use it when you want:

  • safe agentic scanning with guided defaults for spider, active scan, passive scan, API imports, findings, and reports

  • operator control through API-key or JWT auth, tool scopes, runtime policy bundles, rate limits, and audit events

  • self-hosted deployment with Docker Compose for local adoption and Helm for Kubernetes

  • expert ZAP access when you intentionally need lower-level ZAP context, user, scan, and report controls

Full documentation: danieltse.org/mcp-zap-server

An experimental headless Apple Silicon package bundles Java and ZAP for HTTP workflows. It is a maintainer-built local preview; public downloads are not available, and supplied previews are unsigned. The private ChatGPT connection guide explains Secure MCP Tunnel prerequisites and access to a local scanner.

Watch the demo: browser demo or YouTube

Quick Start

Prerequisites:

  • Docker 20.10+

  • Docker Compose v2 or newer (docker compose) with --wait and --wait-timeout support

  • your own MCP client with Streamable HTTP and custom-header support

This source selects image v0.17.1. Verify that the matching GitHub release and Linux AMD64/ARM64 images are published before starting it. Until then, use the published v0.16.0 release or build local source through the contributor setup. Read the 0.17.1 upgrade guide before changing an existing installation. Settings and selected versions are preserved; set IMAGE_TAG in .env deliberately when upgrading.

Prefer to ask Codex to handle setup? Manually install the optional MCP ZAP Connect plugin, then ask it to check prerequisites, start the Docker stack, configure your private MCP connection and verify status. The skill can help install missing prerequisites with your approval, then recheck and continue setup. Scanning is a separate request. The commands below remain available without the plugin.

For Cursor Desktop Free, follow the guided Cursor setup. Use a local Agent chat with available Cursor allowance to set up the scanner, check status, then request a demo crawl and report separately.

Claude Code local preview uses the same scanner and setup skill in a local Claude Code session.

For Claude Desktop Free, follow the download, setup and first-scan guide. The macOS MCPB preview adds agent-callable setup tools around the same Docker scripts and reuses existing installations. Choose a scanner release that includes the Desktop .mcpb, matching guide and checksum files. If those assets are not listed, use the local build instructions. This extension is separate from the Claude Code plugin.

git clone https://github.com/dtkmn/mcp-zap-server.git
cd mcp-zap-server

./bin/bootstrap-local.sh --start

This creates missing settings, preserves existing keys and workspace data, and starts a versioned release image. It reports ready after container health and authenticated MCP checks pass. The packaged client uses * for the curated guided tools; run scans only when requested. Existing settings retain their permissions. See quick-start permissions for the default and optional per-client restrictions.

Use Self-Serve First Run for version selection, configuration, stopping/restarting, startup timeouts, and recovery. For source builds, use the contributor setup.

Connect your MCP client:

The stack runs the MCP server, ZAP, and demo targets. Install and configure your preferred MCP client separately.

After connecting, try this first prompt:

Use the guided ZAP tools to crawl http://juice-shop:3000. Wait for the crawl
and passive analysis to finish, show a findings summary, generate an HTML
report, and read it back through MCP. Do not run an active scan.

Expect a completed crawl, a findings summary, and a report the client can read. Use the container URL http://juice-shop:3000 for this scan; the host preview http://localhost:3001 is for your browser. Finding counts vary; a connection or scan error is not a clean result.

The default stack binds published ports to loopback. Review Quick Start Security before changing access or scan-target settings. Agent install notes cover setup permissions and standalone OCI use.

Related MCP server: middleBrick

Discovery Metadata

This source includes 0.17.1 MCP Registry metadata in .mcp/server.json. Metadata in source does not publish a registry version or image. Check the MCP Registry and use metadata from the same published version as the image you deploy. The image includes the MCP server name expected by registry and catalog tooling. The published 0.16.0 version and its immutable digest remain documented in the 0.16.0 release guide.

Docker Compose remains the easiest installation path because the MCP server is designed to operate with a ZAP sidecar and explicit auth keys. The OCI package metadata is for advanced standalone installs where ZAP is already running and reachable from the MCP container.

What You Get

  • Guided scans: intent-first tools for spider, active scan, passive scan, API imports, findings, reports, and scan history.

  • Expert ZAP control: optional lower-level tools for advanced ZAP context, user, scan, and report workflows.

  • Authentication: API key mode by default, optional JWT mode with refresh and revocation support.

  • Runtime policy bundles: dry-run and enforcement support through zap_policy_dry_run and policy-mode configuration.

  • Scan queue and history: queued active, traditional spider, AJAX Spider, and Client Spider jobs with claim-based recovery, durable Postgres state, and evidence export.

  • Extension contracts: experimental policy, protection, evidence metadata, and extension metadata APIs with sample extension packaging.

  • Operational guardrails: request body limits, rate limits, workspace quotas, tool-scope authorization, structured logs, metrics, and audit events.

  • Deployment paths: local Docker Compose, published JVM container images, and Helm charts for Kubernetes.

In v0.13.0, Client Spider and browser authentication profiles support direct and queued browser crawling. See the Client Spider guide for setup, authenticated crawling, and reports. These features are not included in v0.12.0.

Version 0.17.1

The 0.17.1 release and upgrade guide describes neutral recorded-findings responses, authoritative explicit target denies, permission-aware next actions, and the local client setup options. Publication of the tag, images, registry version and Desktop downloads must be verified separately in GitHub Releases. Use a version with verified published images until the matching distribution is available. The v0.17.0 GitHub release is incomplete: its Desktop assets are absent and its image-release workflow did not complete. See the upgrade guide for availability checks.

Version 0.16.0

Version v0.16.0 is released. Linux AMD64 and ARM64 images are published on GHCR and Docker Hub, and MCP Registry 0.16.0 is active/latest. The release and upgrade guide records the image digest and installation boundaries.

Automation Framework plans now validate whole-plan durations and required engine/add-on capabilities, enforce filesystem containment for plans and artifacts, and validate report output directories and filenames. Plan status reports Successful as pending, no or unknown without treating a finish timestamp as proof of a completed scan. Scanner-aware CI comparisons require matching measured engine/add-on inventories, and target-scoped reports retain root alert evidence from the requested origin.

The local Docker quick start uses an explicitly versioned release image and authenticated readiness checks. The Apple Silicon package and private ChatGPT connection are optional preview paths; follow their guides for installation and network requirements.

Version 0.15.0

See GitHub Releases for the latest published version and its publication date. Version-specific documentation describes that version's behavior; it does not announce image availability. Deploy only after the corresponding release workflow succeeds and the versioned image is available in your registry.

Version v0.15.0 introduces optional OpenAPI imports from client-supplied content and complete paged report retrieval. Target-scoped reports remove unrelated shared-session data, HTTP crawl depth is configured independently from child count, and health checks reapply mandatory outbound settings when ZAP starts late or its engine is replaced. Review the storage and configuration requirements before enabling content import or upgrading an existing deployment.

It also includes a CloudFormation EKS starter and a walkthrough for deploying the Helm chart with JWT authentication, persistent report storage and network policies.

Version 0.14.0

Version v0.14.0 hardens API-key configuration, JWT revocation and refresh, Automation Framework plans, OpenAPI target overrides, HTTP metrics, and Helm ingress policy. It also adopts Gateway Core and the Spring WebFlux adapter 0.11.0, including shared governance audits and active-tool validation. Read the upgrade notes before deploying: the legacy API-key property is removed, JWT backend failures fail closed, and accepted automation inputs and audit fields have changed. Use published release images when upgrading.

Security Defaults

The default posture is intentionally conservative:

  • api-key mode is the base runtime default.

  • none mode is for explicit local dev/test only.

  • Docker Compose binds published ports to loopback by default.

  • The Java 25 JVM image uses a digest-pinned distroless runtime with no shell or package manager; debug it through logs, metrics, and external diagnostic containers rather than installing tools into the application container.

  • URL validation blocks localhost, private networks, and link-local targets by default.

  • Target authentication is optional and profiles default to an empty list. When enabled, guided auth binds an exact server-side credential reference and login settings to one approved origin; callers provide only profileId and targetUrl.

  • Public auth exchange endpoints are rate-limited.

  • MCP request bodies have a hard early size cap.

For a first private AWS deployment without Kubernetes, use AWS EC2 with Docker Compose and its standalone example.

For Kubernetes, use the EKS infrastructure starter to create a dedicated evaluation cluster in an existing VPC, then deploy with the existing Helm chart. Follow the walkthrough for network configuration, JWT authentication, persistent storage and deployment checks.

Production and shared deployments should review:

Architecture

flowchart LR
  Client["Your MCP Client"] -->|"MCP over Streamable HTTP"| MCP["MCP ZAP Server"]
  MCP -->|"ZAP API"| ZAP["ZAP"]
  ZAP -->|"scan"| Target["Authorized target app"]
  MCP -->|"reports / findings / history"| Evidence["Evidence + reports"]

For multi-replica queueing, durable Postgres state, claim recovery, and ingress affinity, use the operations docs instead of this README:

Extension Model

The extension API exposes selected contracts for policy, protection, evidence and metadata integrations:

Extensions do not add runtime multi-engine support. Additional scanner engines require their own adapters and explicit capability boundaries.

Documentation Map

Start here:

Scanning:

Operations:

Open Source Core And Extension Model

mcp-zap-server is the Apache-2.0-licensed open-source core. It is intended to be useful on its own for self-hosted MCP and ZAP workflows.

Private or enterprise capabilities may be built as separate extensions around this core. Those extensions are not required to run the OSS project, and enterprise implementation code is not shipped in this repository.

The boundary is intentional:

  • this repository remains the public OSS distribution

  • extension points should be documented and kept stable where practical

  • private extensions must not weaken the security, licensing, or usability of the OSS core

  • security scanning and open-source program entitlements for this repository apply only to this public project

Contributing And Support

If this project saves you time or becomes part of your security workflow, you can sponsor the maintainer to support ongoing maintenance.

Agentic Lab offers optional paid support for teams adopting the public core in production. Commercial support is separate from the Apache-2.0-licensed OSS distribution, and the public core should remain usable without private extensions or paid services.

Contact Agentic Lab

License

Apache License 2.0. Copyright 2025-2026 Daniel Tse. See LICENSE.

Available Tools

21 tools
zap_attack_startA

Start a guided active scan for a specific target host or base URL after crawl/import setup. The server decides direct versus queued execution from deployment topology. When authSessionId is supplied, guided attack currently accepts prepared form-login sessions only.

NameRequiredDescriptionDefault
policyNoOptional active-scan policy name when you need a non-default rule set
recurseNoOptional recurse flag (default: true)
targetUrlYesTarget host or base URL to attack, for example https://app.example.com or https://app.example.com/api
authSessionIdNoOptional prepared auth session ID from zap_auth_session_prepare. Guided attack currently accepts form-login sessions only.
idempotencyKeyNoOptional idempotency key used only when guided execution selects queued mode; ignored in direct mode.

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description must carry behavioral weight. It does add meaningful context: the server chooses direct vs queued execution, and authSessionId is limited to prepared form-login sessions. Yet it omits what the tool returns, whether the call blocks, whether the scan runs asynchronously, and what side effects beyond initiating a scan occur.

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

Conciseness5/5

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

Two sentences, no filler, with the main purpose front-loaded. Every clause earns its place by adding a distinct piece of context: purpose, execution-mode behavior, and auth limitation.

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

Completeness2/5

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

For a 5-parameter action with no output schema and no annotations, the description is thin on operational essentials. It never says what the caller receives (e.g., scan ID, status reference), whether the scan starts immediately, or how to monitor it via sibling tools like zap_attack_status. An agent could invoke it correctly but be unable to interpret the result or know next steps.

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

Parameters3/5

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. The description adds some useful context that aligns with parameters, particularly explaining that the server decides direct vs queued mode, which clarifies when idempotencyKey matters. It mostly restates what the schema already captures for targetUrl and authSessionId, so it does not substantially exceed the baseline.

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

Purpose5/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: 'Start a guided active scan for a specific target host or base URL.' This clearly identifies the operation and differentiates it from siblings like zap_crawl_start and zap_passive_scan_wait. The phrase 'after crawl/import setup' adds sequencing that further anchors its role.

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 context for when to invoke this tool: after crawl/import setup, when an active scan is needed. It also notes that the server, not the client, decides direct vs queued execution. However, it does not explicitly name alternatives or state when not to use it, so it stops short of full routing guidance.

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

zap_attack_statusA

Get status for a guided active-scan operation.

NameRequiredDescriptionDefault
operationIdYesGuided attack operation ID returned by zap_attack_start

TDQS

A3.5/5.0
Behavior3/5

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

The word 'Get' implies a read-only operation, which is useful, but no annotations are provided and the description does not explicitly disclose non-mutating behavior, polling semantics, or behavior when the operation no longer exists. It leaves an important lifecycle behavior to inference.

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

Conciseness5/5

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

The description is a single sentence and has no filler or irrelevant detail. It front-loads the core purpose and stays appropriately minimal for a status-query tool.

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

Completeness3/5

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

For a one-parameter status endpoint, the description is close to sufficient: it states the resource and the schema documents the parameter. However, with no output schema and no lifecycle or polling guidance, the description does not fully prepare an agent for interpreting status outcomes or knowing when this tool applies.

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

Parameters3/5

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

Schema description coverage is 100%, so the single operationId parameter is already well documented, including its provenance as a return value from zap_attack_start. The description adds no further parameter-level meaning beyond that.

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

Purpose5/5

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

The description uses a specific verb, 'Get status', and a specific resource, 'a guided active-scan operation.' This clearly differentiates it from passive-scan, crawl-status, and history tools, and does not simply restate the tool name.

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

Usage Guidelines2/5

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

The description does not state when an agent should call this tool, such as after zap_attack_start or while polling an attack operation, and it does not mention any alternatives or exclusions. The usage is only implicit from the name and schema, not explained.

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

zap_attack_stopA

Stop a guided active-scan operation.

NameRequiredDescriptionDefault
operationIdYesGuided attack operation ID returned by zap_attack_start

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only restates the stop action without explaining whether stopping is asynchronous, whether it is idempotent, whether results are preserved, or what side effects occur. This is a meaningful gap for a mutation-style tool.

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

Conciseness5/5

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

The description is a single clear sentence with no filler or redundant elaboration. It front-loads the action and the object, making it immediately scannable for an agent.

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

Completeness3/5

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

For a single-parameter stop operation, the core invocation is adequately specified: the agent knows the action and the required operationId. However, with no annotations and no output schema, the description leaves uncertainty about the post-condition of the operation, such as whether further status polling is needed or whether the operation can be stopped more than once.

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

Parameters3/5

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

Schema description coverage is 100%, and the operationId parameter is already well documented as the ID returned by zap_attack_start. The tool description adds no parameter-level detail beyond what the schema provides, 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.

Purpose5/5

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

The description uses a specific verb, 'Stop', and a specific resource, 'guided active-scan operation'. This clearly identifies the tool as the counterpart to zap_attack_start and differentiates it from sibling tools like zap_crawl_stop and zap_passive_scan_status.

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

Usage Guidelines3/5

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

Usage context is implied by the phrase 'guided active-scan operation' and by the operationId parameter being described as returned by zap_attack_start. However, the description does not explicitly say when to use it versus alternatives, such as stopping a crawl or waiting for an attack status.

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

zap_auth_session_prepareB

Prepare a guided auth session from an operator-managed profile. Use a kind=browser profile for Client Spider, or kind=form for HTTP spider and active scans. The requested target must remain on the profile's authorized origin.

NameRequiredDescriptionDefault
profileIdYesOperator-configured authentication profile ID
targetUrlYesTarget URL on the profile's authorized origin; paths may vary

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses an authorization constraint ('the requested target must remain on the profile's authorized origin'), which is genuine behavioral context. It does not, however, disclose whether preparing a session mutates server state, what happens to a previously prepared session, or what the operation returns.

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?

Three tight sentences with the core purpose front-loaded, then routing guidance, then the constraint. Nothing is padded, though the kind-based guidance sits slightly off to the side of the actual parameters.

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

Completeness3/5

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

For a stateful 'prepare' tool with no annotations and no output schema, the description covers purpose, profile-kind routing, and an origin constraint, but omits side effects, session lifetime, and return behavior. Adequate but with clear gaps for an agent to invoke it confidently.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (profileId, targetUrl) are already documented in the schema and the baseline is 3. The description reinforces the targetUrl origin constraint but adds no syntax, format, or example detail beyond what the schema provides.

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?

States a specific verb and resource ('Prepare a guided auth session from an operator-managed profile'), which is clear enough for an agent to know it sets up authentication rather than validating it. It does not explicitly contrast itself with the sibling zap_auth_session_validate, so it falls 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.

Usage Guidelines3/5

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

The second sentence gives real routing guidance ('kind=browser profile for Client Spider, or kind=form for HTTP spider and active scans'), which tells the agent which profile kind fits which downstream workflow. However, 'kind' is a property of the operator-managed profile, not of this tool's parameters, and no alternative tool or when-not condition is named, leaving the guidance indirect.

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

zap_auth_session_validateA

Validate a prepared guided auth session before authenticated crawl or attack flows.

NameRequiredDescriptionDefault
sessionIdYesSession ID returned by zap_auth_session_prepare

TDQS

A3.7/5.0
Behavior2/5

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 only states the action 'validate' without revealing whether it is read-only, what happens on success or failure, or any side effects. This is a notable gap for a tool that might be called in an automated flow.

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

Conciseness5/5

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

A single, efficient sentence that front-loads the action and resource. Every word earns its place, with no redundancy or filler.

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

Completeness3/5

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

For a simple one-parameter tool, the description covers the essential 'what' and 'when' but omits behavioral details such as return format, error conditions, and whether the validation is a side-effect-free check. Given no annotations or output schema, the description is adequate but leaves gaps that an agent might need to infer or discover.

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

Parameters3/5

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

The schema description for sessionId already states it is the session ID returned by zap_auth_session_prepare, and the tool description aligns with that. Since schema coverage is 100%, the description adds minimal extra meaning beyond reinforcing the 'prepared' nature. This meets the baseline but doesn't exceed it.

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

Purpose5/5

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

The description clearly states the tool's purpose: to validate a prepared guided auth session. It uses a specific verb ('validate') and identifies the resource (auth session), and the context ('before authenticated crawl or attack flows') distinguishes it from sibling tools like zap_auth_session_prepare.

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?

The description implies when to use this tool: after preparing a session and before initiating crawl or attack flows. It provides clear contextual timing but does not explicitly mention when not to use it or alternative tools. It stops short of naming alternatives or exclusions, but the sequencing is evident.

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

zap_crawl_startA

Start a guided crawl for a target host or root URL. The server decides direct versus queued execution from deployment topology. Use strategy=http for traditional server-rendered sites, strategy=client for JavaScript-driven apps using Client Spider, or strategy=browser for the existing AJAX Spider API. strategy=auto starts with HTTP Spider; only an unauthenticated direct HTTP start failure triggers AJAX fallback. Auto does not detect JavaScript coverage. Client Spider requires the Client Side Integration add-on and headless Firefox. Prepared browser authentication sessions require strategy=client; prepared HTTP form-login sessions require http or auto.

NameRequiredDescriptionDefault
strategyNoOptional crawl strategy: auto starts HTTP (unauthenticated direct mode alone falls back to AJAX on HTTP start failure), http for traditional link discovery, client for Client Spider on JavaScript-driven apps, or browser for the AJAX Spider API. Auto does not detect JavaScript coverage.
targetUrlYesTarget host or root URL to crawl, for example https://app.example.com or https://app.example.com/admin
authSessionIdNoOptional session ID from zap_auth_session_prepare. Use a kind=browser profile with strategy=client, or a kind=form profile with http/auto. The browser strategy means AJAX Spider and rejects authSessionId.
idempotencyKeyNoOptional idempotency key used only when guided execution selects queued mode; ignored in direct mode.

TDQS

A4.7/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 the server decides direct vs queued execution, the narrow AJAX fallback condition, the Client Side Integration add-on and headless Firefox dependencies, and that auto does not detect JavaScript coverage. This is unusually rich behavioral context for a start operation.

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?

Front-loads purpose then strategy guidance, and every sentence is informative. However, it is a dense run-on paragraph and some statements (e.g., 'Auto does not detect JavaScript coverage') are repeated verbatim in the schema, slightly reducing efficiency.

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?

Covers strategies, auth pairings, and the idempotency caveat, which is comprehensive for a crawl-start tool. It stops short of telling the agent what the call returns or how to track progress (e.g., via zap_crawl_status), which with no output schema would have been the natural closing detail.

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 coverage is 100% and the schema already documents all four parameters in detail, so the baseline is 3. The description adds interpretable value by explaining the strategy trade-offs and the authSessionId compatibility rules, edging above baseline, though much of it is echoed in the schema descriptions.

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

Purpose5/5

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

States a specific verb and resource ('Start a guided crawl for a target host or root URL'), making it clearly distinct from siblings like zap_attack_start, zap_crawl_stop, and zap_crawl_status. An agent can identify the operation 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.

Usage Guidelines5/5

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

Explicitly maps each strategy value to a situation ('strategy=http for traditional server-rendered sites, strategy=client for JavaScript-driven apps...') and states the precise fallback trigger. It also spells out the auth-session pairing rule ('prepared browser authentication sessions require strategy=client').

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

zap_crawl_statusB

Get status for a guided crawl operation.

NameRequiredDescriptionDefault
operationIdYesGuided crawl operation ID returned by zap_crawl_start

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must carry full behavioral disclosure. It only says 'get status,' implying a read operation, but does not specify whether this is safe, whether it has side effects like consuming resources, or what the operationId represents (e.g., a unique identifier returned by the start tool). It lacks details about what the status response contains or any state changes, leaving a significant gap given the absence of annotations.

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 a single, concise sentence that gets to the point immediately. It does not waste words, and the purpose is front-loaded. The only minor issue is that it could have added a bit more context without becoming verbose, but for a one-parameter status tool, this is well-structured.

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

Completeness2/5

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

The tool has a simple input schema and no output schema, and annotations are absent. Given that it is a status-checking tool for a crawl operation, the description should clarify what kind of status information the agent can expect (e.g., progress, completion) and any prerequisites (e.g., the operation must have been started). It does not provide enough context for an agent to know what to do with the result, making it incomplete for effective use.

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

Parameters3/5

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

The schema already describes the operationId parameter as 'Guided crawl operation ID returned by zap_crawl_start' with 100% coverage, so the baseline is 3. The description adds no additional information about the parameter (e.g., format, whether it is required), but it does confirm the parameter is an operation ID, which is helpful. Since the schema covers fully, this is adequate.

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 clearly states the purpose: get status for a guided crawl operation, distinguishing it from status tools for other operations like zap_passive_scan_status and zap_attack_status. However, it could be more explicit about what 'guided crawl' entails and how it differs from related crawl tools like zap_crawl_stop, though the name and input schema suggest it.

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

Usage Guidelines3/5

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

The description implies usage when you need to check the status of a crawl started with zap_crawl_start, as indicated by the parameter description. However, it does not explicitly state when to use this tool versus other status tools (e.g., zap_attack_status) or provide any alternatives, leaving the agent to infer based on the operation type.

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

zap_crawl_stopB

Stop a guided crawl operation.

NameRequiredDescriptionDefault
operationIdYesGuided crawl operation ID returned by zap_crawl_start

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action but doesn't disclose whether the operation is idempotent, what happens to in-progress crawl data, whether it requires an active operation, or what the response looks like. For a control operation, this is a notable gap.

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 a single, short sentence that is front-loaded with the action and resource. It earns its place with no wasted words, though it could add a bit more context without becoming verbose.

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

Completeness2/5

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

For a control operation with no annotations and no output schema, the description is thin. It doesn't mention prerequisites (e.g., operation must be running), side effects, or return behavior. An agent would need to infer these from the parameter name and sibling tools.

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

Parameters3/5

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 single parameter. The description adds no extra meaning beyond the schema, but the baseline of 3 applies because the schema fully covers the parameter semantics.

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 states a specific verb ('Stop') and resource ('a guided crawl operation'), which clearly identifies the action. It doesn't explicitly distinguish from sibling tools like zap_attack_stop, but the resource term 'guided crawl' differentiates it from other stop operations.

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

Usage Guidelines3/5

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

The description implies usage: call this when you need to stop a guided crawl. It doesn't explicitly state when to use it versus alternatives like zap_attack_stop or zap_crawl_status, but the resource-specific wording provides enough context for an agent to infer the right scenario.

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

zap_findings_detailsA

Drill into findings after reading the summary. Requires a nonblank target baseUrl covered by scan evidence visible to the caller. By default this returns grouped details for matching alerts. Set includeInstances=true when you need bounded raw alert occurrences with concrete URLs, params, evidence, or attack samples.

NameRequiredDescriptionDefault
limitNoOptional instance limit used only when includeInstances is true
baseUrlYesRequired nonblank target base URL covered by scan evidence visible to the caller
pluginIdNoOptional plugin ID filter when you already know the ZAP alert/plugin identifier to inspect
alertNameNoOptional alert name filter when you want one alert family only
includeInstancesNoOptional true to include bounded raw instances with concrete URLs and evidence; false returns grouped detail blocks

TDQS

A4.4/5.0
Behavior4/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 well: it discloses the default behavior (grouped details), the opt-in mode and what it yields (bounded raw occurrences with URLs/params/evidence/attack samples), and an access prerequisite (baseUrl must be covered by scan evidence visible to the caller). It stops short of return-format or pagination/limit behavior detail.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the purpose and prerequisite, then the default behavior, then the opt-in flag. No filler or repetition of schema text.

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?

With no output schema, the description must convey returns and does so at a useful level (grouped blocks vs. bounded raw instances). It is nearly complete for a 5-parameter, single-required read tool, though the shape of a 'grouped detail block' remains unspecified.

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 coverage is 100%, so the baseline is 3, but the description goes beyond the schema by clarifying that includeInstances switches between grouped and raw-instance output and that results are bounded, and by framing baseUrl as an evidence-coverage requirement rather than just a string.

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

Purpose5/5

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

States a specific verb and resource ('drill into findings') and explicitly positions itself relative to a sibling ('after reading the summary'), so an agent can distinguish it from zap_findings_summary without opening either schema. The two operating modes (grouped vs. instances) are also named.

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?

Gives a clear sequencing rule ('after reading the summary') and an explicit trigger for the includeInstances flag. It does not spell out when NOT to use this tool or name the alternative in a negative form, so it falls short of the 5-level 'when/when-not/alternatives' standard.

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

zap_findings_summaryA

Read currently recorded alerts, including while scan work is in progress, as a concise grouped risk summary for fast triage. Alert counts do not establish scan completion, coverage, or safety. Requires a nonblank target baseUrl covered by scan evidence visible to the caller.

NameRequiredDescriptionDefault
baseUrlYesRequired nonblank target base URL covered by scan evidence visible to the caller, for example https://app.example.com/admin

TDQS

A4/5.0
Behavior4/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 real work: it discloses that results are live/partial during running scans, that counts must not be read as completion, coverage, or safety, and that access is scoped to evidence visible to the caller. It omits read-only confirmation, pagination, and result-shape details.

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

Conciseness5/5

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

Three tight sentences, front-loaded with what the tool does, followed by a skeptical caveat and the precondition. No filler; every sentence changes how an agent would use the tool.

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?

For a single-param tool with no output schema or annotations, the description covers purpose, valid timing, access scoping, and an interpretation warning. The only gap is no hint about grouping dimensions or response size.

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

Parameters3/5

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

Schema description coverage is 100% and the description's wording ("nonblank target baseUrl covered by scan evidence visible to the caller") essentially restates the schema's own parameter text. Baseline 3 applies since the schema already does this work.

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?

States a specific verb and resource ("Read currently recorded alerts") plus the output form ("concise grouped risk summary for fast triage"), which separates it in spirit from zap_findings_details. It does not name that sibling explicitly, so the differentiation is implied rather than stated.

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?

"Including while scan work is in progress" and "for fast triage" give clear, actionable conditions for reaching for this tool over the status/detail tools. It stops short of stating an explicit exclusion or naming zap_findings_details as the alternative when full per-alert detail is wanted.

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

zap_passive_scan_statusB

Get passive scan backlog and completion status.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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 implies a read-only status check ('Get') but does not explicitly state that it is non-blocking, does not trigger scans, or has no side effects. It is not misleading, but it lacks explicit behavioral disclosure for a tool with zero annotation support.

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

Conciseness5/5

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

The description is a single, focused sentence that front-loads the verb 'Get' and the key resource. There is no redundancy, and it is appropriately concise for a zero-parameter status query.

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

Completeness3/5

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

For a zero-parameter, no-output-schema tool, the description covers the basic action. However, it omits context about how it relates to zap_passive_scan_wait, which an agent might need to choose correctly. It also does not specify whether the status is a snapshot or whether it returns immediately, leaving some ambiguity.

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?

The tool has zero parameters and the schema confirms this (empty properties, 100% coverage). With no parameters to describe, the baseline of 4 applies, and there is nothing additional the description needs to clarify.

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 states a specific verb 'Get' and a clear resource: 'passive scan backlog and completion status.' This distinguishes it from sibling tools like zap_attack_status and zap_crawl_status, which target other scan types. It is clear but does not explicitly contrast with zap_passive_scan_wait, so it misses full differentiation.

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

Usage Guidelines2/5

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. The sibling list includes zap_passive_scan_wait, which likely serves a different purpose (waiting vs. checking status), but the description does not mention this distinction or provide any contextual cues for selection.

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

zap_passive_scan_waitA

Wait for the passive scan backlog to drain before reading findings or generating reports.

NameRequiredDescriptionDefault
pollIntervalMsNoPolling interval in milliseconds (1-10000, optional, default: 1000)
timeoutSecondsNoMaximum seconds to wait before returning (1-300, optional, default: 60)

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the key behavioral trait — this is a blocking wait that enforces ordering before reads/reports — but it says nothing about what happens if the backlog never drains or on timeout (though timeout semantics are partly covered by the schema's timeoutSeconds field).

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

Conciseness5/5

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

A single front-loaded sentence that states the action and the sequencing rationale with zero waste. Nothing is redundant or padded.

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?

For a low-complexity tool with two optional, fully documented parameters and no required inputs, the description covers purpose and ordering adequately. It would be stronger if it mentioned what the call returns or how the blocking status tool relates, but no output schema exists to demand that.

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

Parameters3/5

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

Schema description coverage is 100%, so both pollIntervalMs and timeoutSeconds are already documented with ranges and defaults. The description adds no parameter meaning beyond the schema, which is the expected baseline when the schema does the heavy lifting.

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 gives a specific action and resource: waiting for the passive-scan backlog to drain. It is unambiguous about what the tool does, but it never contrasts itself with the closely related sibling zap_passive_scan_status (the non-blocking check), so sibling differentiation is left to inference.

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 states a clear usage context: run it before reading findings or generating reports. That is real sequencing guidance. However, it names no alternative and gives no exclusion, so an agent is not explicitly told when to use zap_passive_scan_status instead of blocking here.

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

zap_report_generateA

Generate a human-shareable report artifact using guided defaults. Use this after passive scan backlog drains when you want an export or handoff artifact; use findings summary/details for interactive triage.

NameRequiredDescriptionDefault
themeNoOptional light/dark theme for full-session HTML. Target-scoped HTML uses the standard template's default appearance; JSON has no theme.
formatNoOptional report format: html for human reading or json for machine processing
baseUrlNoOptional absolute HTTP(S) origin or path prefix. Supplying it publishes a target-scoped report; omission explicitly includes the full ZAP session.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full disclosure burden. It adds a real behavioral precondition (run it only after the passive scan backlog drains) and signals that 'guided defaults' are applied, but says nothing about where the artifact lands, whether it is persisted, or how it is later retrieved (a sibling, zap_report_read, exists for that).

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

Conciseness5/5

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

Two compact sentences, front-loaded with the action, and the second sentence is pure routing information. No filler, no restatement of the title.

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

Completeness3/5

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

Adequate on selection but thin on the lifecycle: with no annotations and no output schema, the agent is told what to generate but not what it receives back or how to read the resulting artifact. The schema partially compensates by spelling out scoping and theme behavior.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains theme, format and baseUrl, including the non-obvious rule that omitting baseUrl scopes to the full session. The description contributes nothing param-specific ('human-shareable' loosely hints at the html format), so baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource ('Generate a human-shareable report artifact') and immediately separates itself from sibling triage tools (zap_findings_summary/zap_findings_details). An agent can tell what this produces versus its nearest siblings without opening any schema.

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?

Gives an explicit precondition ('after passive scan backlog drains') and an intent ('export or handoff artifact'), plus a named alternative for interactive triage. It stops short of disambiguating the other report-related siblings (zap_report_read, zap_scan_history_export, zap_scan_history_customer_handoff), which would be the natural follow-up question.

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

zap_report_readA

Preview a generated report artifact through MCP after zap_report_generate. If truncated, use zap_report_read_chunk to retrieve the complete artifact in bounded pages.

NameRequiredDescriptionDefault
maxCharsNoMaximum characters to return (optional, default: 20000, max: 200000)
reportPathYesReport path returned by zap_report_generate

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the behavioral burden. It discloses that output may be truncated and routes complete retrieval to a sibling, and 'Preview' signals a non-mutating read operation. It does not cover permissions, authorization, or error behavior, so it is not fully complete.

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

Conciseness5/5

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

Two tight sentences, front-loaded with purpose and then the truncation fallback. No filler or redundancy.

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?

For a simple two-parameter read tool with no output schema, the description covers purpose, prerequisite, and truncation handling. It could specify the artifact format or return shape, but the core decision information is present.

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

Parameters3/5

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

Schema coverage is 100%, so reportPath and maxChars are fully documented in the schema. The description adds no parameter-level semantics beyond the dependency on zap_report_generate, so baseline 3 applies.

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

Purpose5/5

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

Names a specific verb (Preview) and resource (generated report artifact), ties it to the producing sibling zap_report_generate, and distinguishes it from zap_report_read_chunk for truncated output. An agent can select it 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.

Usage Guidelines5/5

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

States when to use it (after zap_report_generate) and names the alternative when output is truncated (zap_report_read_chunk). This is explicit routing with no inference required.

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

zap_report_read_chunkA

Retrieve a generated UTF-8 report in bounded JSON pages. Append content in order, follow nextOffset until endOfFile=true, and supply the first page's artifactSha256 as expectedSha256 on later pages. Offsets and maxChars count Unicode code points. Artifacts are limited to 50 MiB; the SHA-256 identifies the full original UTF-8 file.

NameRequiredDescriptionDefault
offsetNoStarting Unicode code point offset (default: 0)
maxCharsNoMaximum Unicode code points in this page (default: 20000, maximum: 200000)
reportPathYesReport path returned by zap_report_generate
expectedSha256NoFull artifact SHA-256 from the first page; subsequent pages reject a changed report

TDQS

A4.7/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: page ordering, termination signal (endOfFile), integrity verification (expectedSha256 rejects a changed report), code-point counting semantics, and a 50 MiB artifact limit. These are exactly the operational traits an agent needs and none are derivable from the schema alone.

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

Conciseness5/5

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

Four dense sentences, front-loaded with the core action, then the calling protocol, then units and limits. Every sentence contributes a distinct fact; nothing is filler or restated from the schema.

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

Completeness5/5

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

There is no output schema, so the description appropriately surfaces the return-side fields an agent must act on (nextOffset, endOfFile, artifactSha256) alongside the pagination and integrity rules. Complete for a chunked-read tool with four parameters.

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 coverage is 100%, so the baseline is 3, but the description adds genuine value beyond it: it clarifies that offset/maxChars count Unicode code points (not bytes), explains the artifactSha256-to-expectedSha256 handshake across pages, and notes the SHA-256 identifies the full original file rather than the page.

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

Purpose5/5

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

States a specific verb (Retrieve) and resource (a generated UTF-8 report) and immediately qualifies the mode as 'bounded JSON pages', which distinguishes it from the sibling zap_report_read without needing to name it. An agent can tell this is the paged/chunked reader rather than a one-shot fetch.

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?

Gives explicit procedural context: append pages in order, follow nextOffset until endOfFile=true, and pass the first page's artifactSha256 as expectedSha256 on later calls. It does not name zap_report_read as the non-paged alternative or state when-not to use chunking (e.g. small reports), so it stops short of full when/when-not routing.

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

zap_scan_history_customer_handoffA

Generate a customer-safe Markdown handoff summary from scan history without raw internal IDs, backend references, workspace IDs, or metadata.

NameRequiredDescriptionDefault
limitNoOptional maximum entries to review, bounded by server configuration
targetNoOptional evidence-window selector used internally; the raw selector is never echoed in customer-facing output
handoffNameNoOptional release, pilot, or customer handoff label included in the summary

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden, and it does provide meaningful behavioral detail: the output is Markdown, customer-safe, and stripped of raw internal IDs, backend references, workspace IDs, and metadata. It does not explicitly state whether the operation is read-only or whether the summary is returned directly, but the wording strongly implies a non-destructive generation action.

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

Conciseness5/5

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

The description is a single, tight sentence that leads with the primary action and output, then adds the most important constraints. There is no filler, repetition of the tool name, or unnecessary detail.

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?

For a low-complexity tool with three optional parameters, no output schema, and no annotations, the description is largely sufficient: it defines what the tool produces)Skip, in what format, and what it intentionally omits. It could be more explicit about whether the summary is returned inline or written somewhere, but the core invocation-relevant information is present.

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

Parameters3/5

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

The schema description coverage is 100%, so the baseline is 3. The description adds no parameter-specific detail beyond the schema, but the schema already explains limit, target, and handoffName sufficiently, including the note that the raw target selector is never echoed in customer-facing output.

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

Purpose5/5

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

The description uses a specific verb ('Generate') and names a distinct resource: a customer-safe Markdown handoff summary from scan history. It distinguishes itself from siblings like raw list/export or report tools by emphasizing the sanitized, customer-facing output and the explicit exclusion of internal IDs and metadata.

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

Usage Guidelines3/5

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

The intended use is implied by the purpose: it creates a customer-safe summary rather than a raw or internal-facing view. However, it never explicitly states when to prefer this over close siblings such as zap_scan_history_export, zap_scan_history_release_evidence, or zap_report_generate, and it gives no exclusion criteria.

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

zap_scan_history_exportA

Export scan history as inline JSON text for internal evidence processing; no export file is created. Use zap_scan_history_list for a readable listing, zap_scan_history_release_evidence for a summary bundle, or zap_scan_history_customer_handoff for a customer-facing summary. Returns version, generatedAt, retentionDays, entryCount, and entries containing scan/job/artifact records, including internal IDs, paths, and metadata; review before sharing. Only records accessible to the caller in the current workspace are included, newest first. Omitted or blank filters select all accessible records; supplied filters combine with AND. The snapshot is capped by limit, has no pagination, and returns an empty entries array when nothing matches. It does not start scans or contact targets. Querying may delete expired stored ledger entries under the configured retention policy; it does not refresh scan outcomes from ZAP.

NameRequiredDescriptionDefault
limitNoPositive maximum number of entries. Omission uses the configured export maximum (500 by default); larger values are capped to that maximum. Zero or negative values are rejected.
statusNoOptional case-insensitive exact status filter: queued, running, succeeded, failed, or cancelled for jobs; started for direct scans; generated for reports. Omit or leave blank for all statuses.
targetNoOptional case-insensitive substring of the target URL, target display name, or artifact location, e.g. api.example.com. Omit or leave blank for all targets.
evidenceTypeNoOptional case-insensitive exact type filter: scan_job, scan_run, or report_artifact. Omit or leave blank for all types.

TDQS

A4.8/5.0
Behavior5/5

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

No annotations exist, so the description carries the full burden and does so well: it discloses the surprising destructive side effect ('querying may delete expired stored ledger entries under the configured retention policy'), that no file is created, that there is no pagination and results are capped by limit, that it does not start scans or contact targets, and that it does not refresh outcomes from ZAP.

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?

Front-loaded with the core action and the no-file caveat, then alternatives, then return shape and behavioral caveats. Every sentence carries information, though the enumerated return fields and the alternate-tool list make it longer than strictly necessary.

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

Completeness5/5

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

With no output schema, the description compensates by naming the return keys (version, generatedAt, retentionDays, entryCount, entries) and warning that entries contain internal IDs and paths. Combined with the filter semantics and the retention side effect, an agent has everything needed to call it correctly and warn the user.

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 coverage is 100%, so the per-parameter semantics are already documented, making 3 the baseline. The description adds cross-parameter behavior the schema cannot express: omission/blank semantics for all filters, AND-combination of supplied filters, the limit cap, and the empty-array result when nothing matches.

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

Purpose5/5

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

States a specific verb (export) and resource (scan history), specifies the output form (inline JSON text, no file created), and names the three sibling tools it is not. An agent can distinguish it from zap_scan_history_list, zap_scan_history_release_evidence, and zap_scan_history_customer_handoff without opening any schema.

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

Usage Guidelines5/5

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

Explicitly routes the agent: readable listing -> zap_scan_history_list, summary bundle -> release_evidence, customer-facing summary -> customer_handoff, internal evidence processing -> this tool. Also states when filters apply ('omitted or blank filters select all accessible records; supplied filters combine with AND').

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

zap_scan_history_getA

Read one scan history or release-evidence entry by ID.

NameRequiredDescriptionDefault
entryIdYesEntry ID returned by zap_scan_history_list

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral burden. The verb 'Read' clearly signals a non-mutating operation, which is useful, but the description does not disclose behavior for missing/invalid IDs, permissions, or what the returned entry contains. It is adequate for a simple read but not fully transparent.

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

Conciseness5/5

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

One sentence, front-loaded with the action ('Read') and the resource ('one ... entry'), with zero filler. Every word earns its place for a single-parameter getter.

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?

The description combined with the fully documented parameter is enough for an agent to invoke the tool on a simple get-by-ID operation. However, with no output schema and no annotations, the description leaves return format and error behavior unspecified; this is a minor gap given the low complexity.

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

Parameters3/5

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

With 100% schema description coverage, the parameter is already documented: 'Entry ID returned by zap_scan_history_list.' The description only restates 'by ID' and adds no new meaning about format, constraints, or relationship to other tools beyond the schema.

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

Purpose5/5

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

States a precise verb ('Read'), a specific resource ('one scan history or release-evidence entry'), and an access pattern ('by ID'). The singular 'one ... by ID' differentiates it from the list-oriented sibling zap_scan_history_list, and naming both entry types removes ambiguity about what can be fetched.

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

Usage Guidelines3/5

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

The read-by-ID wording implies the tool is for retrieving a single previously obtained entry, but the description does not explicitly state when to prefer it over zap_scan_history_list, zap_scan_history_release_evidence, or other sibling tools. There is no when-not or alternative routing, so usage context is only implied.

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

zap_scan_history_listA

List recent scan history and release-evidence entries, including queued scans, direct scan starts, and generated report artifacts.

NameRequiredDescriptionDefault
limitNoOptional maximum entries to return, bounded by server configuration
statusNoOptional status filter such as queued, running, succeeded, failed, cancelled, started, or generated
targetNoOptional target or artifact substring filter
evidenceTypeNoOptional evidence type filter: scan_job, scan_run, or report_artifact

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. 'List' strongly implies a read-only operation, and the description adds the included entry types. However, it does not disclose default ordering, pagination, limit behavior, or output shape, which would be useful given no output schema.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. Every phrase adds useful information: the verb, the resource, and the specific entry categories.

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

Completeness3/5

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

The schema fully covers parameters, and the operation is simple with no required inputs. However, the absence of an output schema and annotations, plus no mention of how this list relates to the sibling get/export tools, leaves some context gaps for an agent deciding whether this tool is sufficient.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already fully documented in the schema. The description adds little beyond the 'recent' context and the general categories, which does not substantially improve parameter understanding.

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

Purpose5/5

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

The description uses a specific verb ('List') and resource ('recent scan history and release-evidence entries'), and enumerates concrete included categories. This clearly differentiates it from sibling tools like zap_scan_history_get or zap_scan_history_export without needing to open the schema.

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

Usage Guidelines3/5

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

The description implies when to use the tool: when a recent list of scan history and evidence entries is needed. However, it provides no explicit guidance about when to prefer this over zap_scan_history_get, zap_scan_history_export, or zap_scan_history_release_evidence, nor any exclusions.

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

zap_scan_history_release_evidenceB

Export a release or pilot handoff evidence bundle with summary counts, target coverage, warnings, and bounded ledger entries.

NameRequiredDescriptionDefault
limitNoOptional maximum entries to export, bounded by server configuration
targetNoOptional target or artifact substring filter for the evidence window
releaseNameNoOptional release, pilot, or handoff label included in the exported bundle

TDQS

B3.3/5.0
Behavior3/5

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

The description discloses what the export contains ('summary counts, target coverage, warnings') and that ledger entries are bounded, which is useful behavioral context. However, with no annotations, it does not clarify whether the export is returned directly, written to a file, or requires permissions, and does not explain side effects or response format.

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

Conciseness5/5

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

A single, front-loaded sentence states the purpose and key output characteristics with no wasted words. Every element contributes to understanding what the tool does.

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

Completeness3/5

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

For a tool with only three optional, well-described parameters, the description is adequate but not rich. It omits the export's return shape or delivery mechanismché, and there is no output schema or annotations to fill that gap, leaving an agent uncertain about what invoking the tool actually yields.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter already has a meaningful description. The tool description adds little beyond 'target coverage', which loosely maps to the target parameter, but does not expand on limit, target, or releaseName semantics.

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 clearly states the action ('Export') and a specific resource ('release or pilot handoff evidence bundle') with distinctive contents (summary counts, target coverage, warnings, bounded ledger entries). It does not explicitly name sibling alternatives like zap_scan_history_customer_handoff or zap_scan_history_export, but the resource qualifier makes the purpose reasonably distinct.

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

Usage Guidelines2/5

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

There is no guidance about when to choose this tool over similar siblings such as zap_scan_history_export, zap_scan_history_customer_handoff, or zap_scan_history_get. No context, conditions, exclusions, or alternatives are mentioned, leaving selection to inference.

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

zap_target_importA

Import an OpenAPI/Swagger definition, GraphQL schema, or SOAP WSDL to prepare API endpoints for testing. Use when you have an API definition; use zap_crawl_start to discover ordinary web pages. Requires a reachable, configured ZAP instance with the matching OpenAPI, GraphQL, or SOAP add-on. Import changes the current ZAP session and may send requests to the definition source and API targets; use only authorized targets. It does not start an active scan: after reviewing import messages, call zap_attack_start with the API target URL only when active testing is permitted and approved. Content mode accepts actual OpenAPI JSON/YAML text with a required full HTTP(S) hostOverride and an explicitly enabled shared filesystem; it cannot read chat attachments automatically. Returns plain text containing definition type, source kind, and import status. URL/file mode also includes source and engine messages; content mode withholds contents, internal paths, and raw engine warning text. Review warnings before proceeding. Invalid inputs, blocked URLs, and ZAP API failures raise errors.

NameRequiredDescriptionDefault
sourceYesRequired definition URL, ZAP-readable file path, or actual JSON/YAML text when sourceKind=content. A chat attachment name, client-local path or inaccessible resource URI is not definition content. Content imports are bounded to 1 MiB and reject external references and YAML aliases.
sourceKindYesRequired source mode: url for a definition ZAP downloads, file for a definition on ZAP's filesystem, or content for self-contained OpenAPI JSON/YAML text. Content is OpenAPI-only and requires configured shared staging. Case-insensitive.
endpointUrlNoRequired for graphql: HTTP(S) API endpoint to test, for example https://api.example.com/graphql; must be reachable by ZAP and allowed by server URL policy. Ignored for openapi and soap.
hostOverrideNoOpenAPI target override allowed by server URL policy. Required full HTTP(S) URL for content imports, for example https://api.example.com/v1. URL/file imports also allow authority/path with an explicit host, for example api.example.com:9090/v1; omit only for trusted definition-derived targets constrained by ZAP egress controls. Ignored for graphql and soap.
definitionTypeYesRequired definition format: openapi (OpenAPI/Swagger), graphql (GraphQL schema), or soap (WSDL). Case-insensitive.

TDQS

A4.7/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 behavioral burden and does so thoroughly: it discloses prerequisites, session changes, outbound requests to definition sources and API targets, authorization constraints, content-mode limitations, return contents, and error conditions. It also clarifies that import does not start an active scan, which prevents a meaningful misuse.

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

Conciseness5/5

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

The description is front-loaded with purpose and usage, then covers prerequisites, side effects, content mode, return values, and errors. Despite its length, every sentence adds actionable information for a complex, multi-mode tool with no annotations.

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

Completeness5/5

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

Given no annotations and no output schema, the description is complete enough for correct invocation: it covers required environment setup, source modes, side effects, authorization constraints, return behavior, error cases, and the necessary follow-up step. Nothing critical for safe and correct use appears to be missing.

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

Parameters3/5

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 all five parameters in detail, including mode-specific requirements. The description restates some cross-parameter constraints, such as content mode requiring hostOverride and shared filesystem staging, but adds little semantic detail beyond what the schema provides.

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

Purpose5/5

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

The description states a specific verb and resource: importing OpenAPI/Swagger, GraphQL, or SOAP WSDL definitions to prepare API endpoints for testing. It also distinguishes this from ordinary web discovery by explicitly naming zap_crawl_start as the alternative for web pages.

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

Usage Guidelines5/5

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

It gives clear selection guidance: use this when you have an API definition, but use zap_crawl_start to discover ordinary web pages. It also states the post-import workflow, directing the agent to review messages and only call zap_attack_start when active testing is permitted and approved.

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.

  1. 5 tool updatesv0.16.0
    • Changedzap_crawl_start1 field changed
      • changedInput schema / properties / strategy / description
        Previous value: -"Optional crawl strategy: auto for the default engine, http for traditional link discovery, client for Client Spider on JavaScript-driven apps, or browser for AJAX Spider."New value: +"Optional crawl strategy: auto starts HTTP (unauthenticated direct mode alone falls back to AJAX on HTTP start failure), http for traditional link discovery, client for Client Spider on JavaScript-driven apps, or browser for the AJAX Spider API. Auto does not detect JavaScript coverage."
    • Changedzap_passive_scan_wait2 fields changed
      • changedInput schema / properties / pollIntervalMs / description
        Previous value: -"Polling interval in milliseconds (optional, default: 1000)"New value: +"Polling interval in milliseconds (1-10000, optional, default: 1000)"
      • changedInput schema / properties / timeoutSeconds / description
        Previous value: -"Maximum seconds to wait before returning (optional, default: 60)"New value: +"Maximum seconds to wait before returning (1-300, optional, default: 60)"
    • Changedzap_report_generate2 fields changed
      • changedInput schema / properties / baseUrl / description
        Previous value: -"Optional base URL filter to include only one host or path in the report"New value: +"Optional absolute HTTP(S) origin or path prefix. Supplying it publishes a target-scoped report; omission explicitly includes the full ZAP session."
      • changedInput schema / properties / theme / description
        Previous value: -"Optional report theme: light or dark"New value: +"Optional light/dark theme for full-session HTML. Target-scoped HTML uses the standard template's default appearance; JSON has no theme."
    • Addedzap_report_read_chunk
    • Changedzap_target_import3 fields changed
      • changedInput schema / properties / hostOverride / description
        Previous value: -"Optional OpenAPI target override allowed by server URL policy: a full HTTP(S) URL or authority/path with an explicit host, for example https://api.example.com/v1 or api.example.com:9090/v1. Scheme-only and path-only overrides are rejected; use a full URL instead. Omit or leave blank only for trusted definition-derived targets constrained by ZAP egress controls. Ignored for graphql and soap."New value: +"OpenAPI target override allowed by server URL policy. Required full HTTP(S) URL for content imports, for example https://api.example.com/v1. URL/file imports also allow authority/path with an explicit host, for example api.example.com:9090/v1; omit only for trusted definition-derived targets constrained by ZAP egress controls. Ignored for graphql and soap."
      • changedInput schema / properties / source / description
        Previous value: -"Required HTTP(S) definition URL reachable by ZAP and allowed by server URL policy, or a file path readable inside the ZAP host/container (for example /zap/wrk/openapi.yaml). File contents are not accepted here."New value: +"Required definition URL, ZAP-readable file path, or actual JSON/YAML text when sourceKind=content. A chat attachment name, client-local path or inaccessible resource URI is not definition content. Content imports are bounded to 1 MiB and reject external references and YAML aliases."
      • changedInput schema / properties / sourceKind / description
        Previous value: -"Required source mode: url for a definition ZAP downloads, or file for a definition on ZAP's filesystem. Case-insensitive."New value: +"Required source mode: url for a definition ZAP downloads, file for a definition on ZAP's filesystem, or content for self-contained OpenAPI JSON/YAML text. Content is OpenAPI-only and requires configured shared staging. Case-insensitive."
  2. 5 tool updatesv0.14.0
    • Changedzap_crawl_start2 fields changed
      • changedInput schema / properties / authSessionId / description
        Previous value: -"Optional prepared auth session ID from zap_auth_session_prepare. Guided crawl currently accepts form-login sessions only and rejects browser strategy when auth is supplied."New value: +"Optional session ID from zap_auth_session_prepare. Use a kind=browser profile with strategy=client, or a kind=form profile with http/auto. The browser strategy means AJAX Spider and rejects authSessionId."
      • changedInput schema / properties / strategy / description
        Previous value: -"Optional crawl strategy. Use auto to prefer the default guided engine, http for traditional pages and simple link discovery, or browser for SPAs, authenticated flows, and JavaScript-heavy navigation."New value: +"Optional crawl strategy: auto for the default engine, http for traditional link discovery, client for Client Spider on JavaScript-driven apps, or browser for AJAX Spider."
    • Changedzap_findings_details2 fields changed
      • changedInput schema / properties / baseUrl / description
        Previous value: -"Optional base URL filter to scope findings to one host or path"New value: +"Required nonblank target base URL covered by scan evidence visible to the caller"
      • changedInput schema / required
        Previous value: -[]New value: +[
        +  "baseUrl"
        +]
    • Changedzap_findings_summary2 fields changed
      • changedInput schema / properties / baseUrl / description
        Previous value: -"Optional base URL filter to scope findings to a specific host or path, for example https://app.example.com/admin"New value: +"Required nonblank target base URL covered by scan evidence visible to the caller, for example https://app.example.com/admin"
      • changedInput schema / required
        Previous value: -[]New value: +[
        +  "baseUrl"
        +]
    • Changedzap_scan_history_export4 fields changed
      • changedInput schema / properties / evidenceType / description
        Previous value: -"Optional evidence type filter: scan_job, scan_run, or report_artifact"New value: +"Optional case-insensitive exact type filter: scan_job, scan_run, or report_artifact. Omit or leave blank for all types."
      • changedInput schema / properties / limit / description
        Previous value: -"Optional maximum entries to export, bounded by server configuration"New value: +"Positive maximum number of entries. Omission uses the configured export maximum (500 by default); larger values are capped to that maximum. Zero or negative values are rejected."
      • changedInput schema / properties / status / description
        Previous value: -"Optional status filter"New value: +"Optional case-insensitive exact status filter: queued, running, succeeded, failed, or cancelled for jobs; started for direct scans; generated for reports. Omit or leave blank for all statuses."
      • changedInput schema / properties / target / description
        Previous value: -"Optional target or artifact substring filter"New value: +"Optional case-insensitive substring of the target URL, target display name, or artifact location, e.g. api.example.com. Omit or leave blank for all targets."
    • Changedzap_target_import5 fields changed
      • changedInput schema / properties / definitionType / description
        Previous value: -"Definition type: openapi, graphql, or soap"New value: +"Required definition format: openapi (OpenAPI/Swagger), graphql (GraphQL schema), or soap (WSDL). Case-insensitive."
      • changedInput schema / properties / endpointUrl / description
        Previous value: -"Optional GraphQL endpoint URL when definitionType is graphql"New value: +"Required for graphql: HTTP(S) API endpoint to test, for example https://api.example.com/graphql; must be reachable by ZAP and allowed by server URL policy. Ignored for openapi and soap."
      • changedInput schema / properties / hostOverride / description
        Previous value: -"Optional host override when definitionType is openapi"New value: +"Optional OpenAPI target override allowed by server URL policy: a full HTTP(S) URL or authority/path with an explicit host, for example https://api.example.com/v1 or api.example.com:9090/v1. Scheme-only and path-only overrides are rejected; use a full URL instead. Omit or leave blank only for trusted definition-derived targets constrained by ZAP egress controls. Ignored for graphql and soap."
      • changedInput schema / properties / source / description
        Previous value: -"Definition source URL or file path"New value: +"Required HTTP(S) definition URL reachable by ZAP and allowed by server URL policy, or a file path readable inside the ZAP host/container (for example /zap/wrk/openapi.yaml). File contents are not accepted here."
      • changedInput schema / properties / sourceKind / description
        Previous value: -"Source kind: url or file"New value: +"Required source mode: url for a definition ZAP downloads, or file for a definition on ZAP's filesystem. Case-insensitive."
  3. 20 tool updates
    • First observedzap_attack_start
    • First observedzap_attack_status
    • First observedzap_attack_stop
    • First observedzap_auth_session_prepare
    • First observedzap_auth_session_validate
    • First observedzap_crawl_start
    • First observedzap_crawl_status
    • First observedzap_crawl_stop
    • First observedzap_findings_details
    • First observedzap_findings_summary
    • First observedzap_passive_scan_status
    • First observedzap_passive_scan_wait
    • First observedzap_report_generate
    • First observedzap_report_read
    • First observedzap_scan_history_customer_handoff
    • First observedzap_scan_history_export
    • First observedzap_scan_history_get
    • First observedzap_scan_history_list
    • First observedzap_scan_history_release_evidence
    • First observedzap_target_import

TDQS

A3.8/5.0

Scored across 21 tools

Disambiguation4/5

Crawl, attack, passive scan, auth, report, findings, and history operations are generally well separated by distinct resource+action names. The main overlap is within scan history (list/get/export/release_evidence/customer_handoff) and report_read vs report_read_chunk, but descriptions clarify their roles. A few boundary cases remain, such as choosing among history export variants, which adds mild confusion.

Naming Consistency5/5

All tools consistently use the zap_ prefix followed by snake_case resource/action naming (e.g., zap_crawl_start, zap_attack_stop, zap_findings_summary). Verb and resource ordering is predictable throughout, with no mixed casing or style deviations.

Tool Count4/5

At 21 tools, the count is on the heavy side but reasonable for a security scanning domain that must cover crawl, attack, auth, reports, findings, import, and history workflows. Each tool appears to serve a distinct lifecycle operation, though the history surface is somewhat expansive.

Completeness4/5

The surface covers the core lifecycle well: crawl/attack start-stop-status, passive scan wait/status, auth prepare/validate, target import, findings summary/details, report generation/reading, and history inspection/export. Minor gaps exist, such as no explicit alert disposition/false-positive management or session cleanup/configuration tools, but core workflows are covered.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Integrates OWASP ZAP security testing with AI assistants through MCP, enabling automated vulnerability scanning and AI-powered security analysis during development. Supports multiple scan types including active, passive, and AJAX spider scans with real-time status updates.
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Scan APIs for security vulnerabilities and get OWASP risk scores. Detects auth bypass, BOLA/IDOR, data exposure, prompt injection, and 12+ security categories.
    11 npm
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    A lightweight MCP server that wraps OWASP ZAP's REST API as Model Context Protocol tools, enabling AI agents to perform automated security scanning.
    -