Skip to main content
Complete flag tables for every mcpjam command. For guides and recipes, see the individual command pages.

Global flags


server commands

All server commands accept the shared connection flags below, plus command-specific options.

Shared connection flags

Transport selection is inferred from --url vs --command when --transport is omitted. Use --transport http|stdio when you want an explicit validation step. For stdio targets, child processes inherit the parent shell environment by default. -e/--env adds or overrides child env values, and structured debug artifacts only record the explicit env keys you passed on the command line. --credentials-file cannot be combined with individual token flags (--access-token, --oauth-access-token, --refresh-token, --client-id, --client-secret). The CLI rejects conflicting auth sources upfront.

server probe

No additional flags beyond shared connection flags.

server doctor

server info

No additional flags.

server validate

No additional flags.

server ping

No additional flags.

server capabilities

No additional flags.

server export

No additional flags.

tools commands

tools list

Uses shared connection flags, plus: When --host is set, the output includes a host field and a toolsDroppedVisibility count. Hosts that opt out of visibility filtering (e.g. cursor) keep all tools.

tools call

Plus shared connection flags. Without --ui, tools call returns the raw tool result. With --ui, it opens Inspector by default in a TTY and returns a compact envelope with result, inspectorBrowserUrl, and inspectorRender status. inspectorRender.status is rendered when Inspector accepted the render, skipped when the tool succeeded but Inspector had no active browser client, an unsatisfied render precondition, or a render timeout, and error for non-recoverable render command failures. inspectorRender.remediation is always present and is one of open_browser, retry, reconnect_server, or none. Skipped renders are emitted as a stable root warning plus inspectorRender.warning, both with the shape { code, message, remediation, browserUrl?, hasActiveClient?, inspectorStarted? }. Stable skipped-render codes are no_active_client, timeout, disconnected_server, and unsupported_in_mode. Skipped renders keep the tool-call exit code unless --require-render is set; tool failures, validation failures, non-skippable render command errors, and --require-render skipped renders all exit nonzero. --attach-only is an exception to the skipped-render rule for no_active_client: by default a missing browser client yields inspectorRender.status = "skipped" with inspectorRender.remediation = "open_browser", but when --attach-only is set, no_active_client is treated as non-skippable, surfaces as a root error (not a downgraded warning), and exits nonzero like other non-skippable render failures. --inspector-url points to the Inspector backend/API; pass --frontend-url when you already know the browser/client URL and want to skip health-advertised frontend checks and local dev port discovery. Use --no-open when browser automation already opened inspectorBrowserUrl; use --attach-only when startup, browser opening, and discovery should all be disallowed. Default non-TTY --ui runs do not open a browser unless --open is passed. When --open is in effect (default in TTYs, opt-in elsewhere), the App Builder URL and the initial browser-client wait progress are emitted to stderr unless --quiet is set, regardless of whether stderr is a TTY; only the elapsed-seconds heartbeat is gated on stderr being a TTY. The Inspector path injects the completed tool result through renderToolResult; it does not call the tool a second time. Fresh tabs do not hydrate the injected render state; use the active Inspector client that received the render. Use --debug-out for the full render envelope including params and command responses. --ui cannot be combined with --reporter.

Reading tools call --ui output as an agent

Treat the tool result and the Inspector render as separate outcomes. An exit code of 0 means the tool call succeeded and no hard render error occurred; it does not, by itself, prove the UI rendered. Confirm UI delivery with inspectorRender.status === "rendered". If inspectorRender.status === "skipped", branch on inspectorRender.remediation or the stable root warning.code. If --require-render is set, the same skipped-render issue moves from root warning to root error and the command exits with code 1.

resources commands

resources list

Uses shared connection flags, plus:

resources read

Plus shared connection flags.

resources templates

Uses shared connection flags, plus:

prompts commands

prompts list

Uses shared connection flags, plus:

prompts get

Plus shared connection flags.

xaa commands

xaa run

Run the Cross-App Access (ID-JAG) debugger: self-issue an ID-JAG, redeem it at the target authorization server (RFC 7523), and call the MCP server with the resulting access token. See the XAA Debugger guide for the trust setup, registration strategies, and CI usage.

Registration strategies

Confidential CIMD (--client-auth private-key-jwt)

When --registration cimd --client-auth private-key-jwt is used, the CLI loads or generates a local EC P-256 key pair (stored in ~/.mcpjam). The public key is encoded into a reflector URL on app.mcpjam.com, which becomes the client_id. The CLI signs a client_assertion with the private key at token-redemption time; the private key never leaves the machine.
For a cloud authorization server, expose the inspector origin through a tunnel and pass the public origin as --issuer-base-url — see making the issuer reachable. Key rotation: the key is the identity. Deleting ~/.mcpjam/xaa-client-private.pem or changing the XAA_CLIENT_PRIVATE_KEY environment variable generates a new client_id; any RAS-side allowlisting must be updated after rotation.

oauth commands

oauth login

oauth conformance

oauth conformance-suite

oauth metadata

oauth proxy / oauth debug-proxy


protocol commands

protocol conformance

Use --format json|human for raw output and --reporter json-summary|junit-xml for CI reports.

protocol conformance-suite


apps commands

Shared connection flags

Apps commands share the same transport inference rules as the rest of the CLI: --url implies HTTP, --command implies stdio, and --transport is an optional explicit override.

apps conformance

MCP Apps server-side conformance checks. Uses shared connection flags plus: Use --format json|human for raw output and --reporter json-summary|junit-xml for CI reports.

apps conformance-suite


compat command

Check whether an MCP server’s tools and widgets work on each AI host. Uses shared server connection flags (see server commands) plus:
The result includes a per-host verdict (works, degraded, blocked, or unknown), a findings list explaining each verdict, and a top-level summary count. When the tool list is truncated (more than 50 pages), verdicts that would otherwise be works are downgraded to unknown.

hosts commands

Manage the hosts saved in your hosted MCPJam projects. All hosts commands require an sk_ API key (via --api-key or the MCPJAM_API_KEY environment variable) or a prior mcpjam login.

Shared platform flags

hosts templates

List the built-in host templates usable with hosts create --template. No additional flags.

hosts list

hosts get

hosts create

Provide either --template or --file/--json, not both.

hosts update

hosts delete


environments commands

Manage project environments in your hosted MCPJam projects. A project environment is a named, live-editable execution bundle — one host, optionally a standalone server group, optionally a pinned skill selection and pinned plugin versions — that eval suites and journeys run against.
A project environment is not a Computer sandbox image (those are mcpjam images), and not the STDIO environment variables you pass with --env.
All environments commands require an sk_ API key (via --api-key or the MCPJAM_API_KEY environment variable) or a prior mcpjam login. Reading requires project membership; creating, updating, archiving, and restoring require project admin — a key bound to a non-admin gets a FORBIDDEN error on those.

Shared platform flags

The revision workflow

Environments use optimistic concurrency. Every write takes --expected-revision, the revision you last read:
If someone else changed the environment in between, the write fails with a CONFLICT error (HTTP 409) instead of overwriting their edit — re-read it and retry. CONFLICT also covers a duplicate name and archive-state errors (archiving something already archived, editing something archived), so read the message.

environments list

environments get

environments resolve

Preview what the environment resolves to right now: the host’s current config, the closed server set, and the pinned plugin versions. Fails with CONFLICT when the environment can’t currently produce a runnable configuration (for example a pinned plugin was disabled); details.code carries the specific reason.

environments create

* --name and --host-id may instead be supplied inside --file/--json; explicit flags override the same key in the JSON body. Use the JSON body for the structured fields that have no flag — serverAttachmentId, skillSelection, and pluginVersionIds:

environments update

Only the fields you pass change. To clear serverAttachmentId, skillSelection, or pluginVersionIds, send an explicit null in the JSON body — an empty array is rejected, it is not a way to clear:

environments archive

Archiving is reversible and frees the name for a new environment; the row is kept.

environments restore

Fails with CONFLICT if another live environment took the name while this one was archived. Plugin pins whose version no longer exists at all are dropped on restore — compare the returned pluginVersionIds against what you archived.

What can be pinned

Both pin fields are narrower than they look:
  • skillSelection accepts project-shared skills only. Personal skills, skills with supporting files or extra frontmatter, and plugin-component skills are all rejected.
  • pluginVersionIds accepts a plugin version only when its plugin is installed and enabled, the version is ready, at most one version per plugin is pinned, and none of the version’s skills carry supporting files.

images commands

Manage custom Computer sandbox images in your hosted MCPJam projects. An image is defined by a blueprint — YAML with a digest-pinned base image, initialize steps baked into the image at build time, and maintenance / knowledge text delivered to the agent at runtime (never executed automatically):
All images commands require an sk_ API key (via --api-key or the MCPJAM_API_KEY environment variable) or a prior mcpjam login.

Shared platform flags

images list

images get

images validate

Lint a blueprint without saving it. Prints ok plus the resolved base digest, or structured errors with the YAML path of each violation.

images create

images edit

images build

Trigger an image build for the sandbox image (async). Poll images logs to check build status.

images logs

Show a sandbox image’s builds (newest first) with their log preview.

images use

Boot your computer from this sandbox image. This rebuilds the computer — installed files are wiped.

images reset

Reset your computer to its current image, wiping mutable state.

images promote

Share a personal-draft sandbox image with the whole project. Requires project admin permissions.

images delete

Permanently delete a sandbox image from a project.

inspector commands

inspector open

Start or attach to the local Inspector and open the UI.

inspector start

Start the local Inspector in the background without opening a browser.

inspector stop

Stop the local Inspector if it is running.

eval commands

Author and run eval suites in your hosted MCPJam projects. All eval subcommands require an MCPJam API key (--api-key or MCPJAM_API_KEY).

Shared platform flags

eval create

Create a runnable eval suite from authored test cases. The suite is persisted and returned with a suiteId; it is not run. Execute it afterward with eval run. Provide the suite definition via --file or --json (not both). The definition is a JSON object with at minimum name, model, servers, and cases. Servers must be HTTP; stdio servers are rejected before any write.

eval list

List the eval suites saved in a project.

eval run

Start an asynchronous eval run of an existing suite. Responds immediately with a runId; poll status with eval status.

eval status

Get the status and summary of an eval run.

tunnel

Expose a local MCP server through an MCPJam relay tunnel and register it as a server in your hosted project, so evals and chatboxes can target it. Requires an sk_ API key or a prior mcpjam login. The tunnel stays up until Ctrl-C; the server record outlives the session (calls fail fast at the edge until you re-run, which revives the same URL slug with a fresh secret).
With --format json, a single machine-readable startup object (public URL, server ID, slug, project) is written to stdout; ongoing status goes to stderr in both formats.
The public tunnel URL embeds a bearer secret and is stored on the project server record so the platform can call it. Every re-run rotates the secret and disconnects any previous tunnel session for the same server.

eval commands

All eval commands accept the shared platform flags below.

Shared platform flags

eval create

Create a runnable eval suite from authored test cases (does not run it).

eval list

List the eval suites saved in a project.

eval run

Start an eval run of an existing suite (asynchronous). If the suite has attached project environments (eval environments set), the run executes against one of them — its resolved host config, closed server set, and pinned plugin versions — instead of the suite’s saved server selection:
  • exactly one attached → that one is used, and eval status reports it;
  • several attached → --environment is required, and the error names the candidates;
  • --environment and --server are mutually exclusive: an environment supplies a closed server set that an override cannot change.
Every run records the environment and the exact revision it used, so eval status can answer “which configuration did this run actually execute against?” long after the environment has been edited.

eval status

Get the status and summary of an eval run.

eval iterations

List per-iteration results for an eval run (pass/fail, tool calls, tokens, latency). Results are paginated.

eval trace

Fetch the full trace for one eval iteration (complete message history and spans). Can be large.

eval get

Show an eval suite’s full settings.

eval update

Edit an eval suite’s settings (only the flags you pass change).

eval delete

Permanently delete an eval suite (and its cases and runs).

eval schedule

Enable or disable scheduled runs for a suite. Pass either --enable or --disable (not both). A scheduled run launches exactly one run, so a suite with several attached environments must pin one with --environment; a suite with exactly one defaults to it. --environment is rejected with --disable: disabling preserves the existing pin, so accepting one there would silently do nothing.

eval environments subcommands

Attach or detach the project environments an eval suite runs against. Attaching is what makes eval run --environment available for the suite.

eval environments set

Replace the suite’s attached environments (this sets the whole list, in order).
Rejected if it would strand an enabled schedule pinned to an environment being removed — repoint the schedule (eval schedule --enable --environment ...) or disable it first.

eval environments clear

Detach every environment, reverting the suite to its saved server selection. Subject to the same schedule guard as set: rejected if the suite has an enabled schedule pinned to one of the environments being removed. Repoint the schedule or disable it first.

eval cases subcommands

eval cases list

List a suite’s test cases.

eval cases get

Show one test case.

eval cases run

Run a single case as a persisted, fully-queryable run — inspect it with eval iterations / eval steps like any other run. Environment selection works exactly as it does for eval run.

eval cases create

Add a test case to a suite (definition via --file/--json).

eval cases update

Edit a test case (definition via --file/--json).

eval cases delete

Permanently delete a test case.

eval cases generate

AI-generate test cases from the suite’s tools (spends credits).

mcp command

mcp

Run MCPJam as an MCP server over stdio so MCP clients (Claude Desktop, Claude Code, Cursor, …) can connect to, exercise, and debug other MCP servers. See MCPJam as an MCP server for the exposed tools and client setup.
The command takes no flags of its own. The global --timeout <ms> flag sets the default per-request timeout against target servers, and --quiet suppresses the startup notice on stderr. Stdout carries only JSON-RPC; never pipe other output into it.

telemetry commands

Telemetry commands inspect and configure anonymous CLI telemetry. They never emit telemetry events themselves.

telemetry status

Shows the effective telemetry state, install ID state, state file path, debug mode, and disable reason when disabled. This command does not create an install ID.

telemetry disable

Persistently disables anonymous CLI telemetry by writing enabled: false to the telemetry state file. If no install ID exists yet, this command does not create one.

telemetry enable

Persistently enables anonymous CLI telemetry. If no install ID exists yet, this command creates a random install UUID.

login / logout / whoami commands

These commands manage your MCPJam platform session. login opens a browser for OAuth and stores the session locally; logout removes it; whoami shows the account behind the current credentials.

login

The MCPJAM_API_URL environment variable is equivalent to --api-url. An invalid value in either source is a hard error (exit 2). URL resolution order for cloud commands after login:
  1. Explicit --api-url flag
  2. MCPJAM_API_URL environment variable
  3. The apiUrl stored with the OAuth session (only when the stored login is the credential; sk_ API keys do not inherit the stored URL)
  4. Production default (https://app.mcpjam.com/api/v1)

logout

No additional flags. Removes the stored MCPJam session.

whoami


Exit codes

Codes above 2 are reserved for outcomes a script should act on differently — not merely for naming a failure. See MCP Tasks for the full tasks watch mapping.