declick
Compile APIs, MCP servers, and databases into agent-ready CLIs
TLDR
SYNOPSIS
declick command [options] [args]
DESCRIPTION
declick compiles an API spec, MCP server, database, CLI, web page, or (on Windows) desktop window into a named shell adapter. Each adapter exposes verbs that return one JSON envelope and one of five exit codes, so an agent can call tools through the shell instead of carrying a full MCP tool listing on every turn.Every engine, and declick itself, honors the same output contract: describe for a compact surface, --json for a stable envelope, --fields / --limit / --where to cut the payload before it reaches a model, and --dry-run on mutating verbs. declick add writes ~/.declick/name/manifest.json, a two-line launcher under ~/.declick/bin, and a SKILL.md into agent skill directories that already exist (~/.claude/skills, and ~/.codex/skills, ~/.hermes/skills, ~/.openclaw/skills, ~/.agents/skills when present).The ten built-in engines (zero runtime npm dependencies, Node 24+) are openapi, postman, har, graphql, mcp, sqlite, cli, web, desktop, and compose. Auth is never stored in a manifest: required names are read from the process environment, then ~/.creds/vault.env. Optional DashClaw governance and a local policy.json can block mutating verbs with exit 3.
PARAMETERS
setup
Put ~/.declick/bin on PATH, adopt the agent's MCP servers as adapters, write a rules block to CLAUDE.md or AGENTS.md, and (Claude Code) install a PreToolUse hook. --dry-run prints the plan; --revert restores a byte-exact snapshot.add source --name n
Compile a source into ~/.declick/n (manifest, launcher, SKILL.md). Sources include OpenAPI/Swagger URLs or files, Postman/Insomnia collections, HAR captures, GraphQL schemas, mcp:command, sqlite:path, cli:binary, web:url, app:window (Windows), and compose:chain.json. --verbs / --tag subset a large spec; --engine overrides detection; --force overwrites a name collision; --dry-run compiles and lints without writing.run name verb [args]
Invoke a compiled verb without putting the adapter on PATH. Once ~/.declick/bin is on PATH, the short form name verb [args] is equivalent.describe name
Print the adapter surface (verbs, required args, base URL). Pages itself over about 2000 characters. --full, --verb v, --grep text, --offset N, --limit N narrow the listing.list
Every adapter: engine, source, verb names, auth keys, last run, last error.engines
Built-in engines. --source x reports which engine a source would use before anything is written.doctor
Node version, home, PATH, skill dirs, vault, deskclaw, Claude CLI, governance, engine readiness, and whether setup has run. Exit 1 only when Node is too old.path --install
Put ~/.declick/bin on PATH for new shells. --dry-run previews without writing.daemon [start | stop | status]
Keep stdio MCP servers warm between runs. HTTP MCP adapters never use it.defaults name
Per-adapter flag defaults in ~/.declick/name/defaults.json. --set k=v, --unset k, --clear, optional --verb v.policy
Inspect ~/.declick/policy.json. --check adapter verb shows which rule wins; --example prints a starter file.auth name
Report which required env keys are present (process environment, then ~/.creds/vault.env) and from where. Exit 4 when any is missing.lint name / build name / skill [name]
Check the contract, recompile from the stored source, or regenerate SKILL.md. skill --print writes one skill to stdout.remove name [verb]
Delete an adapter (manifest, launcher, skill) or one desktop verb.export name / import [file|-]
Round-trip a JSON bundle of manifest plus recipes. declick export n | declick import - rebuilds on another machine.compose name
Print a compose chain. --steps file compiles a chain of existing adapter verbs into one verb.audit
Read ~/.declick/audit.jsonl newest first. --adapter n, --since 10m, --failed, --sum.ui
Local page at http://127.0.0.1:4870 (loopback only). --open, --port N, --allow-authoring.uninstall --yes
Revert setup if it ran, delete ~/.declick, and print the npm rm -g declick line. Refuses without --yes.--json
Envelope on stdout. Default when stdout is not a TTY. Success: {ok:true, data, meta}. Failure: {ok:false, error, exit}. --json false forces text.--fields a,b
Project named fields (dotted paths allowed). A list that matches nothing is exit 1.--limit N
Cap list output (default 50). Must be a positive integer.--where k=v
Filter a list before --fields and --limit. Repeatable. Operators: =, !=, ~ (regex), >, >=, <, <=, =* (present).--rows path
Unwrap a dotted array field inside a response object.--dry-run
Print what a mutating verb or write command would do; set meta.dryRun: true.--each file
Run the verb once per NDJSON/JSON-array item (- for stdin). One envelope; exit is 0 only when every item succeeded.--cache seconds
Answer a read-only verb from a stored response younger than this. Exit 1 on a mutating verb.--max-bytes N
Ceiling on data bytes (default 8192, 0 off). Over the cap: meta.truncated and meta.capped, exit still 0.--no-defaults
Ignore ~/.declick/name/defaults.json for this call.--header 'K: V', --base-url url, --body @file, --retry N, --timeout ms, --verbose, --curl
HTTP request flags on openapi, postman, and har verbs.commands / version / --help
Command surface as data, build version, or one command's flags and examples.
CONFIGURATION
~/.declick/
Default home (DECLICK_HOME). Adapters, launchers, cache, audit log, daemon socket, and setup snapshots.~/.declick/name/manifest.json
Compiled contract. Regenerated by declick build; do not edit by hand.~/.declick/name/defaults.json
Optional per-adapter / per-verb flag defaults. Survives build; deleted with remove.~/.declick/policy.json
Local allow/warn/block rules (globs on adapter and verb). First match wins. Invalid JSON fails closed (every run exits 1). DECLICK_POLICY moves the path.~/.declick/audit.jsonl
One JSON line per verb invocation. DECLICK_AUDIT=off disables it.~/.declick/bin/
Generated adapter launchers. declick path --install (and setup) put this directory on PATH.DECLICK_MAX_BYTES, DECLICK_CACHE, DECLICK_DEFAULTS, DECLICK_TIMEOUT_MS, DECLICK_DAEMON_IDLE_MS
Output cap, response cache, defaults, HTTP/MCP timeout, and daemon idle (ms). See declick doctor and the upstream reference for the full list.DASHCLAW_API_KEY, DASHCLAW_URL
Optional remote guard for mutating verbs. No key means verbs run and the envelope records governance.enabled: false.
EXIT CODES
0
Success.1
Error (bad flags, invalid input, Node too old, unreadable policy).2
Not found (adapter, verb, window, or element).3
Blocked (local policy, DashClaw guard, unarmed deskclaw, or STOP).4
Auth needed (required env key missing).
CAVEATS
Requires Node 24 or newer; an older runtime exits 1 with one line naming the version it found. Published on npm as declick; distro packages are uncommon.Releases after 0.3.0 use the Elastic License 2.0 (use and modify; do not offer it as a managed service). 0.3.0 on npm was MIT.The desktop engine shells out to deskclaw and is Windows-only; declick engines reports it as not ready on other platforms. author / repair need the Claude Code CLI on PATH. declick ui binds loopback only and is a local control page, not a public server.
HISTORY
declick is a Node CLI by ucsandman, first published on GitHub in September 2026 (npm package declick, homepage declick.dev). It compiles OpenAPI, MCP, SQLite, and related sources into shell verbs with a shared output contract aimed at coding agents. Version 0.6.x added compose chains, a warm MCP daemon, local policy, and agent setup / uninstall.
