Usage Guide
Complete reference for using mcp2cli with MCP servers — covering every command, feature, and best practice.
Table of Contents
- Core Concepts
- Setup and Configuration
- Discovery and Listing
- Tool Commands
- Resource Commands
- Prompt Commands
- Arguments and Payloads
- Authentication
- Elicitation (Server → Client)
- Background Jobs
- Ping, Logging, and Completions
- Health and Diagnostics
- Event Delivery
- Alias Workflow
- Profile Overlays
- Output Formats
- Session and Capability Negotiation
- Transports
- Best Practices
- Complete Command Reference
Core Concepts
mcp2cli is a bridge CLI runtime that connects to MCP servers and exposes their capabilities as familiar terminal commands. Server tools become verbs, resources become nouns, prompts become workflows — no MCP protocol jargon in the public UX.
Key ideas:
- Discovery-driven commands — the server’s capabilities ARE the command
tree. Tool
inputSchemaand promptargumentsgenerate real typed--flags, not generic key=value pairs. - Named configs bind to MCP servers. Each config is a YAML file that specifies a transport (stdio or streamable HTTP), an endpoint, and runtime preferences.
- Invocation-name dispatch lets you create symlink aliases (
work,email,staging) that automatically select the matching config. - Active config (
mcp2cli use <name>) sets a default so you can run commands directly without a name prefix. - Profile overlays let you rename, hide, group, and alias commands to make the CLI feel hand-crafted for a specific server.
- Cached discovery remembers server capabilities between invocations for fast startup, offline listing, and typed command generation.
- Event delivery routes runtime events (progress, job updates, auth prompts) to configurable sinks — stderr, HTTP webhooks, Unix sockets, or SSE streams.
Setup and Configuration
Creating a config for a stdio server
mcp2cli config init \ --name local \ --app bridge \ --transport stdio \ --stdio-command npx \ --stdio-args '@modelcontextprotocol/server-everything'This creates configs/local.yaml in the platform config directory with a
stdio transport that spawns npx @modelcontextprotocol/server-everything as a
subprocess.
Creating a config for a streamable HTTP server
mcp2cli config init \ --name production \ --app bridge \ --transport streamable_http \ --endpoint http://127.0.0.1:3001/mcpListing configs
mcp2cli config listShowing a specific config
mcp2cli config show --name productionSetting the active config
mcp2cli use production # Set active configmcp2cli use --show # Show current active configmcp2cli use --clear # Clear active configWhen an active config is set, commands can be invoked directly:
mcp2cli echo --message helloConfig YAML structure
schema_version: 1
app: profile: bridge
server: display_name: My MCP Server transport: stdio # or streamable_http endpoint: null # Required for streamable_http stdio: command: npx args: - '@modelcontextprotocol/server-everything' cwd: null # Optional working directory env: {} # Optional environment variables
defaults: output: human # human | json | ndjson
logging: level: warn # trace | debug | info | warn | error format: pretty # pretty | json outputs: - kind: stderr
auth: browser_open_command: null # Optional command for OAuth flows
events: enable_stdio_events: true # http_endpoint: "http://127.0.0.1:9090/events" # local_socket_path: "/tmp/mcp2cli-events.sock" # sse_endpoint: "127.0.0.1:9091"
# Optional: customize the CLI surface# profile:# display_name: "My Custom Tool"# aliases: {}# hide: []# groups: {}# flags: {}# resource_verb: getEnvironment overrides
Any config field can be overridden with a MCP2CLI_ environment variable:
MCP2CLI_LOGGING__LEVEL=debug work echo --message testThe config and data directories themselves can be overridden:
MCP2CLI_CONFIG_DIR=/custom/config MCP2CLI_DATA_DIR=/custom/data mcp2cli ...Discovery and Listing
Discovery introspects the MCP server’s capabilities. The ls command is the
primary listing interface:
List all capabilities
work lsFilter by kind
work ls --tools # Tools onlywork ls --resources # Resources onlywork ls --prompts # Prompts onlyFilter by name/description
work ls --filter echowork ls --filter deploy --toolsPagination
work ls --limit 5work ls --cursor "next-page-token"work ls --all # Show everythingJSON output
work --json lsReturns structured JSON with the full discovery payload:
{ "app_id": "work", "command": "discover", "summary": "discovered 14 capabilities", "lines": ["..."], "data": { "category": "capabilities", "items": [ { "id": "echo", "kind": "tool", "title": "Echo Tool", "description": "..." } ] }}Discovery cache and fallback
Discovery results are cached per config. If a live discovery call fails (e.g. the server is down), mcp2cli falls back to the cached inventory with an explicit stale-data warning:
[work] live discovery failed; returned cached inventory insteadThis means you can still list capabilities using the last known server state, even when disconnected.
How discovery maps to MCP protocol
| Action | MCP Method |
|---|---|
| List tools | tools/list |
| List resources | resources/list |
| List prompts | prompts/list |
The runtime sends initialize + notifications/initialized before the first
discovery call in a session, negotiating protocol version and capabilities.
Tool Commands
Tools are the primary action surface. Each server tool becomes a top-level CLI
command with typed flags derived from its inputSchema.
Basic invocation
work echo --message helloOutput:
title: Echo Tooldescription: Echoes back the input stringEcho: helloMultiple arguments
work add --a 5 --b 3Enum arguments
work annotated-message --message-type error --include-imageThe --message-type flag only accepts values from the schema’s enum:
error, success, debug.
Viewing tool help
work echo --helpOutput:
Echoes back the input
USAGE: work echo --message <MESSAGE>
OPTIONS: --message <MESSAGE> Message to echo [required] --json Output in JSON format --background Run as background job -h, --help Print helpNamespace grouping (dotted names)
Dotted tool names become nested subcommands:
# Server exposes: email.send, email.reply, email.draft.creatework email send --to user@example.com --body "Hello"work email reply --thread-id 123 --body "Thanks"work email draft create --subject "Draft"Background invocation
work long-running-operation --duration 10 --steps 5 --backgroundThis creates a local job record that tracks the remote task. See Background Jobs.
JSON output
work --json echo --message helloHow tool invocation maps to MCP protocol
The command sends a tools/call JSON-RPC request with the tool name and
arguments (constructed from the typed flags). Content blocks in the response
are rendered as human-readable lines. If the server returns isError: true,
the output indicates the error.
Resource Commands
Resources are named content items exposed by the server — files, documents, data blobs.
Read a concrete resource
work get "demo://resource/static/document/architecture.md"Output:
uri: demo://resource/static/document/architecture.mdmime_type: text/markdowncontent: # Everything Server – Architecture ...The get verb is the default resource command. It can be customized to fetch
or read via a profile overlay.
Resource templates as commands
Parameterized resources (URI templates) become their own commands with typed flags:
# Single-parameter template: greeting/{name} → positional argumentwork greeting Alice
# Multi-parameter template: mail://search?q={query}&folder={folder} → flagswork mail-search --query invoice --folder inboxJSON output
work --json get "demo://resource/static/document/architecture.md"How resource reading maps to MCP protocol
| Action | MCP Method |
|---|---|
| Read a resource | resources/read |
The response includes contents[] with uri, mimeType, and either text
or blob data.
Prompt Commands
Prompts are guided templates defined by the server that produce structured
messages. Each prompt becomes a top-level command with typed flags from its
arguments metadata.
Run a simple prompt
work simple-promptOutput:
prompt: simple-promptoutput: This is a simple prompt without arguments.Run a prompt with arguments
work complex-prompt --temperature 0.7 --style conciseJSON output
work --json simple-promptHow prompts map to MCP protocol
| Action | MCP Method |
|---|---|
| Run a prompt | prompts/get |
The response messages[] are rendered as text. Both array-shaped and
object-shaped content blocks are supported.
Arguments and Payloads
Commands accept typed flags generated from server schemas. For complex payloads, additional argument mechanisms are available:
Typed flags (primary)
Flags are generated from tool inputSchema and prompt arguments:
work deploy --environment staging --replicas 3 --image myapp:latestRequired flags are enforced. Optional flags use defaults from the schema.
JSON-typed flags
For values that must be a specific JSON type (arrays, objects):
work configure --tags '["alpha","beta"]' --limits '{"cpu":"2","memory":"4Gi"}'Bulk JSON payloads
# From a JSON stringwork deploy --args-json '{"environment":"staging","config":{"replicas":3}}'
# From a filework deploy --args-file ./payload.jsonMerge precedence
When multiple argument sources are used, they merge in this order (later wins at the leaf level):
--args-file(base layer)--args-json(overlays file)- Typed flags (final override)
work deploy \ --args-file ./base.json \ --args-json '{"config":{"replicas":10}}' \ --environment canaryAuthentication
mcp2cli provides a unified auth command surface for managing server credentials.
Login
work auth loginFor real servers (non-demo), this prompts for a bearer token via stdin:
enter bearer token for work: <paste token>The token is persisted in a file-backed token store at
instances/<config>/tokens.json.
For demo servers (demo.invalid endpoint), a simulated browser-based OAuth flow is used.
Check auth status
work auth statusShows the current authentication state:
auth: authenticatedaccount: bearer-token (stored)Logout
work auth logoutClears the stored token and resets auth session state.
JSON output
work --json auth statusToken persistence
Tokens are stored per-config in the data directory:
data/instances/<config-name>/tokens.jsonStructure:
{ "bearer_token": "your-token-here", "account": "bearer-token", "updated_at": "2026-03-27T12:00:00Z"}Elicitation
Elicitation is a server-initiated flow where the MCP server requests structured input from the user during a command. This is an advanced MCP protocol feature.
How it works
-
You run a command that triggers an elicitation:
Terminal window work trigger-elicitation-request -
The server sends an
elicitation/createJSON-RPC request to the client with a message and a JSON Schema describing the requested fields. -
mcp2cli prompts each field interactively on the terminal (stderr for prompts, stdin for input):
--- elicitation request ---Please provide additional information:Name (Your full name) [required]: John DoeAge [required] [default: 25]: 30Role [options: admin, user, guest]: admin--- end elicitation --- -
The response is sent back to the server as a JSON-RPC response with
action: "accept"and the collected content.
Type coercion
mcp2cli coerces input values based on the JSON Schema property type:
| Schema Type | Coercion |
|---|---|
boolean | true/yes/y/1 → true; anything else → false |
integer | Parsed as i64; falls back to string |
number | Parsed as f64; falls back to string |
array | Comma-separated values, split and trimmed |
string | Used as-is |
Enum matching
For fields with enum or anyOf/oneOf options, mcp2cli:
- Shows the available options in the prompt
- Matches input by title (case-insensitive)
- Falls back to
constvalues from the schema
Default values
If a field has a default value in the schema and the user provides empty
input, the default is used automatically.
Schema support
The elicitation schema follows JSON Schema Draft 7+ conventions:
properties— field definitionsrequired— mandatory fieldstitle/description— shown in the promptdefault— pre-filled on empty inputenum— option listoneOf/anyOf— title/const matching for rich enums
Client capability advertisement
mcp2cli advertises elicitation capability during the initialize handshake
so servers know the client supports interactive input:
{ "capabilities": { "elicitation": {} }}Unknown server→client requests
If the server sends a request method that mcp2cli doesn’t recognize, it
responds with a standard JSON-RPC -32601 method not found error to prevent
protocol hangs.
Background Jobs
When an MCP server supports task-oriented execution, mcp2cli can track long-running operations as background jobs.
Start a background job
work long-running-operation --duration 10 --steps 5 --backgroundIf the server returns a task ID, a local JobRecord is created.
List all jobs
work jobs listOutput:
abc-123 running invokedef-456 completed invokeShow job details
work jobs show abc-123work jobs show --latestwork jobs show --latest --command invokeWait for a job to complete
work jobs wait abc-123work jobs wait --latestSynchronously waits for the remote task to reach a terminal state.
Cancel a job
work jobs cancel abc-123work jobs cancel --latestWatch a job
work jobs watch abc-123work jobs watch --latest --command invokeWatch emits runtime events as the job progresses and completes.
Job lifecycle
--background → [queued] → [running] → [completed | canceled | failed]| State | Meaning |
|---|---|
queued | Accepted by the server, not yet started |
running | Actively executing |
completed | Finished successfully, result available |
canceled | Canceled by the user or server |
failed | Failed, failure reason available |
Job persistence
Jobs are persisted in the data directory and survive across CLI invocations. Results and failure reasons are stored when available.
Ping, Logging, and Completions
These runtime commands provide protocol-level control over the MCP session.
Ping
work pingSends an MCP ping request to check server liveness and measure round-trip
latency. Useful for connectivity checks in scripts:
work ping && echo "Server is alive"Server-side logging level
work log debug # Set server log level to debugwork log infowork log warnwork log errorwork log trace # Maximum verbositySends a logging/setLevel notification to the server. This controls what the
server logs, not mcp2cli’s own log level (use MCP2CLI_LOGGING__LEVEL for
that).
Completions
work complete ref/tool echo message "hel"Sends a completion/complete request to the server, asking for suggested
values for the given argument.
Arguments:
ref_kind— reference type:ref/toolorref/promptname— the tool or prompt nameargument— the argument name to completevalue(optional) — partial value to complete from
Health and Diagnostics
Doctor
work doctorShows a comprehensive health summary:
config: workprofile: bridgetransport: stdioserver: mcp-servers/everything 2.0.0auth: unauthenticatednegotiated: protocol 2025-03-26 with 5 capability groups cachedinventory: 14 tools, 3 resources, 2 prompts cachedReports:
- Config name and adapter profile
- Transport type
- Server name and version
- Auth state
- Cached negotiated capabilities
- Cached discovery inventory counts
Inspect
work inspectShows the full server capability response: protocol version, capabilities (tools, resources, prompts, logging, completions, experimental), server info (name, version), and session metadata.
JSON output
work --json doctorEvent Delivery
mcp2cli emits structured events during command execution covering progress, server log messages, job state changes, auth prompts, capability change signals, and informational messages.
Event types
| Event | Fields | When |
|---|---|---|
info | app_id, message | General status messages |
progress | app_id, operation, current, total, message | During long-running operations, server notifications/progress |
server_log | app_id, level, logger, message | Server notifications/message log messages |
job_update | app_id, job_id, status, message | When job state changes |
auth_prompt | app_id, message | During auth login flows |
list_changed | app_id, kind, message | Server notifications/{tools,resources,prompts}/list_changed |
Delivery sinks
Events are delivered to configured sinks. Multiple sinks can be active simultaneously.
Stderr (default)
events: enable_stdio_events: trueHuman-readable one-line events on stderr:
[work] invoking capability echo[work] job abc-123 running watch started[work] server info (db): Connection pool created[work] analyze-1 3/5 Computing aggregates...HTTP webhook
events: http_endpoint: "http://127.0.0.1:9090/events"POSTs each event as a JSON body to the endpoint. Fire-and-forget, non-blocking.
Unix domain socket
events: local_socket_path: "/tmp/mcp2cli-events.sock"Writes newline-delimited JSON (NDJSON) to the socket. Connect-per-event.
SSE server
events: sse_endpoint: "127.0.0.1:9091"Starts a local HTTP server that serves text/event-stream to connected
clients. Uses a tokio broadcast channel so multiple clients can subscribe.
Command execution
events: command: "notify-send 'mcp2cli' '${MCP_EVENT_MESSAGE}'"Runs a shell command (via sh -c) for each event with environment variables:
| Variable | Content |
|---|---|
MCP_EVENT_TYPE | Event type: info, progress, server_log, job_update, auth_prompt, list_changed |
MCP_EVENT_JSON | Full JSON-serialized event |
MCP_EVENT_APP_ID | The app_id field |
MCP_EVENT_MESSAGE | Human-readable one-line message |
Examples:
# Send to syslogevents: command: "logger -t mcp2cli '${MCP_EVENT_MESSAGE}'"
# POST to webhook with curlevents: command: "curl -s -X POST http://hooks.internal/mcp -d \"${MCP_EVENT_JSON}\""
# Desktop notification (Linux)events: command: "notify-send 'mcp2cli' '${MCP_EVENT_MESSAGE}'"How MCP server notifications are handled
During MCP operations, the server may send JSON-RPC notifications that mcp2cli routes through the event broker to all configured sinks:
| Notification | Event type | Behavior |
|---|---|---|
notifications/progress | progress | Progress token, current/total, message |
notifications/message | server_log | Level, logger name, log data |
notifications/tools/list_changed | list_changed | Writes stale marker; next ls forces re-discovery |
notifications/resources/list_changed | list_changed | Same as tools |
notifications/prompts/list_changed | list_changed | Same as tools |
notifications/resources/updated | info | Resource URI in message |
Both stdio and streamable HTTP transports handle interleaved notifications within the response stream.
Sampling
When a server sends sampling/createMessage during a tool call, mcp2cli
presents the request interactively and collects a human response:
--- sampling request ---The server requests a model response.Model hint: claude-3-5-sonnetSystem: You are a helpful assistantMax tokens: 1000
Messages: [user] Summarize this document
Your response (or 'decline' to reject): <type your response>--- end sampling ---The response is sent back with model: "human-in-the-loop" and
role: "assistant". Type decline or press Enter with no input to reject
the request (returns JSON-RPC error -32600).
mcp2cli advertises sampling and elicitation capabilities during MCP
initialization.
Alias Workflow
The alias workflow lets you create dedicated CLI entrypoints that feel like standalone applications.
Create a symlink alias
mcp2cli link create --name workThis creates a symlink in the link directory (typically ~/.local/bin/work)
that points to the mcp2cli binary. When invoked as work, the runtime
selects the work config automatically.
Validation
link create validates that a named config exists before creating the
symlink. Use --force to bypass this check:
mcp2cli link create --name staging --forceUse the alias
work lswork echo --message "from alias"work --json doctorThe alias behaves identically to mcp2cli work <command> — it dispatches
based on argv[0].
Custom link directory
mcp2cli link create --name work --dir /usr/local/binReserved names
The names mcp2cli, config, link, and use are
reserved and cannot be used as alias names.
Profile Overlays
Optional YAML profiles customize the dynamic CLI surface — renaming commands, hiding internal tools, grouping related capabilities, and renaming flags.
Adding a profile
Add the profile section to your config YAML:
profile: display_name: "Work Toolkit" aliases: long-running-operation: lro get-tiny-image: image create.payload: object # Rename grouped subcommand: "create payload" → "create object" email.send: compose # "email send" → "email compose" hide: - print-env - debug-probe groups: debug: - print-env - annotated-message flags: echo: message: msg resource_verb: fetchProfile fields
| Field | Type | Purpose |
|---|---|---|
display_name | string | Shown in --help banner instead of server name |
aliases | map | Rename commands: original: short-name. Supports dotted names to rename grouped subcommands: group.child: new-child |
hide | list | Hide commands from help and ls |
groups | map of lists | Custom subcommand grouping |
flags | nested map | Rename flags per command: cmd: {flag: alias} |
resource_verb | string | Verb for resource reads (get, fetch, read) |
Result
work echo --msg hello # Renamed flagwork lro --duration 5 # Shortened command namework image # Friendly namework create object # Renamed grouped subcommand (was: create payload)work email compose --to ... # Renamed within group (was: email send)work debug print-env # Custom groupwork fetch "demo://resource/..." # Custom resource verbProfiles are always optional. Without one, the CLI uses the server’s metadata.
Output Formats
Human (default)
Human-readable text lines:
echo tool Echoes back the input stringJSON
work --json ls# orwork --output json lsStructured JSON object:
{ "app_id": "work", "command": "discover", "summary": "discovered 14 capabilities", "lines": ["echo tool Echoes back the input string", "..."], "data": { "category": "capabilities", "items": [...] }}NDJSON
work --output ndjson echo --message helloNewline-delimited JSON — each event and the final output are separate JSON lines, suitable for streaming consumption.
Format precedence
--jsonflag (highest priority)--output <format>flag- Config
defaults.outputvalue human(fallback)
Session and Capability Negotiation
Protocol handshake
On the first operation in a session, mcp2cli performs the MCP initialization handshake:
- Sends
initializewith:- Protocol version (
2025-03-26) - Client info (
mcp2cli+ version) - Client capabilities (
elicitation: {})
- Protocol version (
- Receives
InitializeResultwith:- Server protocol version
- Server capabilities (tools, resources, prompts, logging, completions)
- Server info (name + version)
- Sends
notifications/initialized
Capability caching
Negotiated capabilities are persisted per config so subsequent commands can skip re-initialization and validate commands against known server capabilities.
Capability enforcement
Before executing a command, mcp2cli checks cached capabilities to fast-fail if
the server doesn’t support the requested operation. For example, if the
server’s capabilities don’t include prompts, running a prompt command will
fail immediately with a clear error.
Session persistence
For streamable HTTP transport, session IDs (returned via Mcp-Session header)
are tracked and used to maintain session continuity across requests.
Transports
Stdio
The stdio transport spawns a subprocess MCP server and communicates via line-delimited JSON-RPC on stdin/stdout.
server: transport: stdio stdio: command: npx args: ['@modelcontextprotocol/server-everything'] cwd: /path/to/working-dir # Optional env: # Optional environment variables NODE_ENV: productionProtocol details:
- Each JSON-RPC message is a single line terminated by
\n - The runtime reads server responses line by line
- Server→client requests (e.g.
elicitation/create) are handled inline during pending commands - Notifications are dispatched to the event broker
Streamable HTTP
The streamable HTTP transport sends JSON-RPC requests as HTTP POST to the server endpoint.
server: transport: streamable_http endpoint: http://127.0.0.1:3001/mcpProtocol details:
- Requests include
Accept: text/event-stream, application/jsonandContent-Type: application/json - Responses may be SSE streams containing JSON-RPC response events
- Session ID from
Mcp-Sessionheader is tracked and sent on subsequent requests
Demo mode
Configs with the endpoint https://demo.invalid/mcp use a built-in demo
backend with file-backed state. Useful for testing and learning without a
real server.
Best Practices
1. Run ls after setting up a config
work lsThis populates the discovery cache, enabling:
- Typed commands with proper
--flags - Fast listing without hitting the server
- Capability validation before sending requests
- Offline fallback when the server is unreachable
2. Use --json for scripting and automation
work --json ls | jq '.data.items[].id'work --json echo --message test | jq '.data'work --json auth status | jq '.data.auth_session.state'3. Use the alias workflow for multi-server setups
mcp2cli config init --name dev --transport stdio --stdio-command ...mcp2cli config init --name staging --transport streamable_http --endpoint ...mcp2cli config init --name prod --transport streamable_http --endpoint ...
mcp2cli link create --name devmcp2cli link create --name stagingmcp2cli link create --name prod
dev lsstaging deploy --version 1.2.3prod doctor4. Use --args-file for complex payloads
work deploy --args-file ./deploy-config.json5. Use background jobs for long-running operations
work analyze-dataset --dataset q4-2025 --backgroundwork jobs watch --latest6. Use doctor to diagnose issues
work doctorCheck: Is auth set up? Is the server reachable? Are capabilities cached? What protocol version is negotiated?
7. Set up event delivery for observability
events: enable_stdio_events: false http_endpoint: "http://monitoring:9090/mcp-events"8. Use --config for ad-hoc server connections
mcp2cli myserver --config /path/to/server.yaml ls9. Keep logging quiet in normal use
MCP2CLI_LOGGING__LEVEL=debug work echo --message test 2>debug.log10. Use profile overlays for polished CLIs
profile: aliases: long-running-operation: lro hide: - internal-debug-toolComplete Command Reference
Host commands (no config required)
| Command | Description |
|---|---|
mcp2cli config init | Create a new named config |
mcp2cli config list | List all named configs |
mcp2cli config show --name <NAME> | Show a specific config |
mcp2cli link create --name <NAME> | Create a symlink alias |
mcp2cli use <NAME> | Set active config |
mcp2cli use --show | Show active config |
mcp2cli use --clear | Clear active config |
Server-derived commands (from discovery)
| Pattern | Description |
|---|---|
<tool-name> [--flags] | Call a tool (flags from JSON Schema) |
<prompt-name> [--flags] | Run a prompt (flags from arguments) |
<template-name> [--flags|positional] | Read a resource template |
get <URI> | Read a concrete resource |
<group> <subcommand> | Dotted names become subcommand groups |
Runtime commands (always available)
| Command | Description |
|---|---|
auth login | Authenticate with the server |
auth logout | Clear stored credentials |
auth status | Show auth state |
jobs list | List background jobs |
jobs show [ID | --latest] | Show job details |
jobs wait [ID | --latest] | Wait for job completion |
jobs cancel [ID | --latest] | Cancel a running job |
jobs watch [ID | --latest] | Watch job progress |
doctor | Show runtime health |
inspect | Show server capabilities and metadata |
ls [--tools|--resources|--prompts] [--filter] | Unified capability listing |
ping | Server liveness check |
log <LEVEL> | Set server-side logging level |
complete <REF> <NAME> <ARG> [VALUE] | Request tab-completions |
Global flags
| Flag | Description |
|---|---|
--json | Output in JSON format |
--output <FORMAT> | Output format: human, json, ndjson |
--config <PATH> | Use a specific config file path |
--background | Run as background job (tools only) |