Skip to main content
The CLI follows Unix conventions: JSON to stdout, errors to stderr, meaningful exit codes. This makes it composable with jq, shell scripts, cron jobs, and AI coding agents like Claude Code, Cursor, and Codex.

Piping with jq

Since all output is valid JSON, use jq to extract, filter, and transform results:

Shell Scripts

Resolve a city name and search permits

Usage:

Batch lookup contractors by ID

Cron Jobs

Monitor permit activity on a weekly schedule:

AI Agent Integration

The CLI is built with an agent-first design. AI coding agents (Claude Code, Cursor, Codex, or custom agents) can:
  1. Read --help to understand available commands and flags
  2. Run commands and parse the JSON output
  3. Branch on exit codes to handle errors programmatically
  4. Chain commands to build multi-step research workflows

How an AI agent uses the CLI

The CLI help text is written to be clear and specific so that an LLM can construct the correct command on the first attempt. No human-oriented decorations (colors, spinners, progress bars) interfere with parsing.

Why CLI over MCP for agents?

The CLI avoids common MCP pain points:
  • No context bloat — the agent only reads what it requests
  • No credential juggling — one API key in the environment
  • No host lock-in — works with any agent that can run shell commands
  • No protocol overhead — plain JSON in, plain JSON out

Error Handling in Scripts