Skip to main content
scan is the only command most developers need. Use it with a local server, a remote MCP endpoint, a manifest file, or stdin. By default, scan runs both the deterministic static checks and the deeper semantic analysis pass. Use --syntactic for only the deterministic checks or --semantic for only the semantic layer.

Synopsis

Input modes

You must provide exactly one explicit input source. --server, --remote, and --manifest are mutually exclusive. Manifest and stdin accept:
  1. a raw tool array
  2. { "tools": [...] }
  3. { "result": { "tools": [...] } }

Flags

Examples

JSON output

With --json, Watchtower writes a single JSON object to stdout.
  • findings contains static-analysis results
  • semanticFindings is populated in the default full scan and in --semantic mode, including both corpus-overlap findings and semantic parameter-conflict findings

Exit codes

Semantic findings do not change the exit code.

Static analysis

See how to use the default static checks in local development, CI, manifest workflows, and multi-server platforms.

Semantic workflow

Learn how the semantic corpus is built and how --semantic uses it during scans.