call; the others help you discover what’s available.
| Subcommand | Purpose |
|---|---|
list | Print every tool name on stdout, one per line. |
describe <tool> | Print a tool’s title, description, and input schema. |
call <tool> [flags] | Run a tool and write its response to stdout. |
help | Print usage. Also matched by --help, -h, or no args. |
list
list works without an API key.
describe <tool>
- The tool’s title (one line)
- Its full description (the same text MCP clients see)
- Every input flag (
--name, optional flag suffix, and the description attached to each argument)
list, it makes no backend call.
If the tool name is unknown, prints Unknown tool: <name> to stderr and exits with code 2.
call <tool> [flags]
{"error": "…"}) so success and failure parse identically.
Argument forms
You can pass inputs three ways. They behave identically once parsed.- Inline flags
- Inline JSON
- JSON file
--key value pairs. Values are JSON-parsed when possible, so the right type lands in the schema:--n 25→ number25--dry_run true→ booleantrue--options '["A","B"]'→ array--text "Which tagline wins?"→ string (JSON parse fails, falls back to string)
--verbose) are treated as boolean true.Input validation
Inputs are validated against the tool’s Zod schema before any backend call. Missing required fields, wrong types, and enum mismatches all fail fast:Exit codes
| Code | Meaning |
|---|---|
0 | Tool ran. The response (which may itself be a {"error": …} payload from the backend) is on stdout. |
2 | CLI usage error — unknown subcommand, unknown tool, or input failed schema validation. |
1 | Unhandled crash (binary failed to start). |
Output and pipes
Tool responses go to stdout. Diagnostic logs (handler errors, stack traces) go to stderr. This separation means you can safely pipe intojq without log noise:
help
Environment
| Variable | Required | Description |
|---|---|---|
USERINTUITION_API_KEY | For call only | Your API key, prefixed with ui_sk_. Not needed for list, describe, or help. |
BACKEND_URL | No | Override the backend API URL. Defaults to https://api.userintuition.ai. |

