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
| Capability | Claude Code |
|---|---|
oxygen CLI in the terminal | Yes — the primary surface |
Agent skills (--agents claude-code) | Yes |
| Hosted MCP connector (OAuth) | Yes — optional, remote MCP server |
ui:// widgets | No — terminal clients do not render widgets; the connector suppresses the widget block for them automatically |
Setup — CLI (recommended)
npm install -g @oxygen-agent/cli
oxygen login
oxygen skills install --agents claude-code --skill '*' --jsonoxygen 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> --jsonSetup — hosted MCP (optional)
Add the hosted server as a remote MCP server:
claude mcp add --transport http oxygen https://oxygen-agent.com/mcpClaude 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 statusreturns an envelope whosedata.compatibleistrue— your CLI is at or above the server's enforced minimum. It also reportsclient_version,server_version,minimum_cli_version, and askewofin_sync,client_ahead, orclient_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 whoamireturnsdata.user.emailanddata.organization.namefor the active org, plus anonboardingblock. Ifonboarding.completeisfalse, 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 runoxygen_whoamiandoxygen_capabilities_searchwith a query likefind company emails; the search returns ranked matches withread_only,paid, andin_coreflags.
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 theweb_urlin 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).