OXYGENOxygen/ Docs
Surfaces

Claude Code

Run Oxygen from Claude Code — the CLI in your terminal, plus the optional hosted MCP connector.

Claude Code is a terminal agent, so its strongest path into Oxygen is the oxygen CLI: full command surface, agent skills, and structured --json envelopes it can parse. You can additionally connect the hosted MCP server for conversational tool calls. Widgets do not render in a terminal.

What works here

CapabilityClaude Code
oxygen CLI in the terminalYes — the primary surface
Agent skills (--agents claude-code)Yes
Hosted MCP connector (OAuth)Yes — optional, remote MCP server
ui:// widgetsNo — terminal clients do not render widgets; the connector suppresses the widget block for them automatically
npm install -g @oxygen-agent/cli
oxygen login
oxygen skills install --agents claude-code --skill '*' --json

oxygen login opens a browser and stores credentials for the active profile. oxygen skills install teaches Claude Code the safe Oxygen workflow (context first, table first, dry run before live, inspect runs after) and installs into ~/.claude/skills. Requires Node.js >=22.22.0 and npm >=10.9.0.

For non-interactive or headless sessions, use a token instead of the browser login:

oxygen api-keys create --name "claude-code" --json
oxygen auth use-token --token <token> --json

Setup — hosted MCP (optional)

Add the hosted server as a remote MCP server:

claude mcp add --transport http oxygen https://oxygen-agent.com/mcp

Claude Code uses loopback OAuth redirects, which the connector's dynamic client registration allows by default. Complete the sign-in when the OAuth flow opens, then ask Claude to call oxygen_whoami. Do not paste API keys into prompts — let the OAuth flow hold the credential.

Verify your setup

Run these read-only checks in the terminal (none spend credits):

oxygen status --json
oxygen whoami --json
oxygen commands --json | jq '.data.commands | length'

Good output:

  • oxygen status returns an envelope whose data.compatible is true — your CLI is at or above the server's enforced minimum. It also reports client_version, server_version, minimum_cli_version, and a skew of in_sync, client_ahead, or client_behind.
{
  "ok": true,
  "data": {
    "client_version": "1.287.x",
    "server_version": "1.287.x",
    "minimum_cli_version": "1.181.0",
    "in_sync": true,
    "skew": "in_sync",
    "compatible": true
  }
}
  • oxygen whoami returns data.user.email and data.organization.name for the active org, plus an onboarding block. If onboarding.complete is false, load workspace context before paid work.
  • oxygen commands --json | jq '.data.commands | length' prints a positive integer — the full count of commands in the machine-readable manifest. If you connected the MCP server, ask Claude to run oxygen_whoami and oxygen_capabilities_search with a query like find company emails; the search returns ranked matches with read_only, paid, and in_core flags.

Cost and approval posture

Dry-run and preview commands never spend credits or write externally; paid provider calls, AI/tool column runs, enrichment, and external writes execute only after you pass --approved with a --max-credits ceiling. See Approvals and Spend caps.

Known limitations

  • No ui:// widget rendering — inspect results through the web_url in each JSON envelope or the web app.
  • The hosted MCP connector requires OAuth (dynamic client registration); if your environment blocks the browser handshake, use the CLI with a token instead.
  • Large CSV/JSON files should not be pasted into MCP prompts — import them with the CLI (oxygen tables import ... --background).

On this page