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 capabilities search "add an AI column and enrich work emails" --json
oxygen commands get "enrich-column preview" --json

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 capabilities search names the owning primitive, its negative boundary, the first gateway commands/tools, and the exact hydration step. oxygen commands get returns only the selected command's flags and safety markers. The full oxygen commands --json manifest remains available as an opt-in diagnostic, not the normal discovery path.
  • If you connected MCP, ask Claude to run oxygen_capabilities_search with the same outcome, then oxygen_capabilities_schema for one selected tool. Provider operations use the separate bounded oxygen_tools_search → exact oxygen_tools_get path.

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