Tools and MCP
Serve MCP, print client config, and list, describe or call tools from the shell.
Serve MCP, print client config, and list, describe or call tools from the shell.
| Command | Description |
|---|---|
cua-driver mcp | Run the stdio MCP server. |
cua-driver mcp-config | Print client-specific connection guidance (MCP config where supported). |
cua-driver list-tools | List every registered MCP tool with a one-line description. |
cua-driver describe | Print a tool's full description and JSON input schema. |
cua-driver call | Invoke an MCP tool through the running daemon. |
cua-driver manifest | Emit a stable JSON description of the CLI surface. |
cua-driver dump-docs | Output machine-readable CLI and MCP documentation JSON. |
Every command also accepts the global options.
cua-driver mcp#Run the stdio MCP server.
On Windows and Linux, bare cua-driver mcp owns its runtime directly and shuts it down on stdin EOF. On macOS it proxies to CuaDriver.app so desktop permissions retain the app identity. Pass --direct to make the macOS MCP process own the runtime and TCC attribution, or --socket to select an explicit daemon endpoint.
cua-driver mcp [OPTIONS]| Flag | Type | Default | Description |
|---|---|---|---|
--socket | string | Select an explicit daemon socket or named-pipe endpoint. | |
--host-bundle-id | string | Advisory host bundle id label echoed in check_permissions output (embedded mode). | |
--cursor-theme | string | cua.default | Select an installed cursor theme id. |
--cursor-reduced-motion | string | auto | Follow the OS setting, force still frames, or allow animation: auto, on, or off. |
--grant | string | Pre-authorize a residual standard-mode boundary for a newly launched runtime. Repeatable; supported value: existing-profile. | |
--direct | boolean | false | Own the runtime in this MCP process; mutually exclusive with --socket. |
--claude-code-computer-use-compat | boolean | false | Accepted for older Claude Code setup snippets; there is no standalone screenshot tool; use get_window_state for window screenshots. |
--embedded | boolean | false | Declare embedding-host mode. Without --direct, require the host's private service through --socket instead of auto-launching the standalone app. |
Examples
# Run the stdio MCP server (what MCP clients launch)
cua-driver mcp
# Connect to a daemon on an explicit socket
cua-driver mcp --socket /tmp/cua-driver.sockcua-driver mcp-config#Print client-specific connection guidance (MCP config where supported).
Supported clients include claude, codex, cursor, antigravity, openclaw, opencode, hermes, pi, prime-agent, qwen, droid, and zcode.
cua-driver mcp-config [OPTIONS]| Flag | Type | Default | Description |
|---|---|---|---|
--client | string | Client name to print configuration for. |
Examples
# Print a generic mcpServers entry
cua-driver mcp-config
# Print setup for Codex
cua-driver mcp-config --client codexcua-driver list-tools#List every registered MCP tool with a one-line description.
cua-driver list-toolsExamples
# List every tool with a one-line description
cua-driver list-toolscua-driver describe#Print a tool's full description and JSON input schema.
cua-driver describe <tool-name>| Argument | Type | Default | Description |
|---|---|---|---|
<tool-name> | string | required | Name of the MCP tool to describe. |
Examples
# Print a tool's description and input schema
cua-driver describe clickcua-driver call#Invoke an MCP tool through the running daemon.
Requires a Cua Driver daemon. JSON arguments may be passed as a positional JSON object or through stdin.
cua-driver call [OPTIONS] <tool-name> [<json-args>]| Argument | Type | Default | Description |
|---|---|---|---|
<tool-name> | string | required | Name of the MCP tool to invoke. |
<json-args> | string | optional | JSON object for the tool input schema. If omitted, stdin is read when piped. |
| Flag | Type | Default | Description |
|---|---|---|---|
--screenshot-out-file | path | Write the first image content block from the response to this path. | |
--socket | string | Override the daemon socket or named-pipe path. |
Examples
# Call a tool with no arguments
cua-driver call list_apps
# Click at window coordinates
cua-driver call click '{"pid":844,"x":100,"y":200}'
# Save the screenshot from a tool response
cua-driver call get_window_state '{"pid":844,"window_id":10725}' --screenshot-out-file state.pngcua-driver manifest#Emit a stable JSON description of the CLI surface.
Consumers can use this instead of hardcoding launch arguments such as the MCP invocation.
cua-driver manifest [OPTIONS]| Flag | Short | Type | Default | Description |
|---|---|---|---|---|
--pretty | -p | boolean | false | Pretty-print JSON. |
Examples
# Print the CLI surface as JSON
cua-driver manifest --prettycua-driver dump-docs#Output machine-readable CLI and MCP documentation JSON.
Used by the docs generator to keep reference pages in sync with the live binary.
cua-driver dump-docs [OPTIONS]| Flag | Short | Type | Default | Description |
|---|---|---|---|---|
--type | string | all | Which docs to emit: all, cli, or mcp. | |
--pretty | -p | boolean | false | Pretty-print JSON. |
Examples
# Print the CLI documentation JSON
cua-driver dump-docs --type cli --pretty| Code | Meaning |
|---|---|
0 | Success. |
1 | Failure: the daemon is not running or is incompatible, a tool call returned an error, or the operation failed. call and direct tool invocations exit with the daemon's result code (1 on a tool error); update --apply passes through the installer's status. |
2 | Invalid input: tool arguments that are not valid JSON, an unknown mcp-config client, or an update --apply refused on a local development install. |
64 | Usage error: an unknown or missing subcommand or argument, or conflicting flags (for example revoke without exactly one of --session or --all, or an authorization flag passed to mcp). |