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:
- a raw tool array
{ "tools": [...] }{ "result": { "tools": [...] } }
Flags
Examples
JSON output
With--json, Watchtower writes a single JSON object to stdout.
findingscontains static-analysis resultssemanticFindingsis populated in the default full scan and in--semanticmode, including both corpus-overlap findings and semantic parameter-conflict findings
Exit codes
Semantic findings do not change the exit code.
Related pages
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.