Codex
Run OXYGEN from OpenAI Codex — the CLI in your terminal, plus the hosted MCP connector on the core toolset profile.
The oxygen CLI is the primary path here: full command surface, agent skills, and --json envelopes. The hosted MCP connector is optional; connect it on the core profile, OXYGEN's default.
What works here
| Capability | Codex |
|---|---|
oxygen CLI in the terminal | Yes — the primary surface |
Agent skills (--agents codex) | Yes — installed into ~/.codex/skills |
| Hosted MCP connector (OAuth) | Yes — use ?toolset=core |
ui:// widgets | No — the connector detects Codex and strips the inline widget block automatically |
Setup — CLI
npm install -g @oxygen-agent/cli
oxygen login
oxygen skills install --agents codex --jsonRequires Node.js >=22.22.0 and npm >=10.9.0. oxygen login opens a browser and stores credentials for the active profile. oxygen skills install writes the OXYGEN skills into ~/.codex/skills (one per OXYGEN feature, such as tables, enrichment, sourcing and the sequencer, plus onboarding) and installs every skill unless you pass --skill <name>.
oxygen login also works when Codex runs it for you: approve the sign-in in your browser. Where nobody can approve a sign-in, such as CI, create a token from a terminal that is already signed in, then store it where the CLI runs:
oxygen api-keys create --name "codex" --json
oxygen auth use-token --token <token> --jsonSetup — hosted MCP (optional)
Add this URL to Codex's MCP configuration:
https://joinoxygenagents.com/mcp?toolset=coreThe core profile is OXYGEN's default, so a bare URL selects it too. It advertises a bounded golden-path set plus the oxygen_capabilities_* tools (search, schema, and the oxygen_capabilities_read / oxygen_capabilities_call runners) instead of the full registry. A capability search first identifies the owning primitive and its boundary, then recommends the gateway tools; every hidden tool stays callable by exact name through those runners. Complete the OAuth sign-in when it opens. The MCP tool reference lists every tool and the pack that advertises it.
Codex has its own tool search as well. Since Codex CLI 0.142.2, it loads MCP tools through tool search by default when the model and provider support it, according to OpenAI's changelog.
Verify your setup
These are read-only and spend no credits:
oxygen status --json
oxygen whoami --json
oxygen capabilities search "build a hosted workflow for new signups" --json
oxygen commands get "workflows schema" --jsonoxygen status—data.compatible: truemeans your CLI meets the server's enforced minimum. The envelope also carriesclient_version,server_version,minimum_cli_version,api_url, and askewofin_sync,client_ahead, orclient_behind.oxygen whoami—data.user.email,data.organization.name, and anonboardingblock of factual markers such asconnectedandactivated; load workspace context before paid work.oxygen capabilities searchreturns one bounded ownership card and recommended gateways.oxygen commands gethydrates only the selected command's arguments, flags, and safety markers. The fulloxygen commands --jsonmanifest is an opt-in diagnostic.- If you connected MCP, ask Codex to call
oxygen_whoamiandoxygen_capabilities_searchwith a query likeenroll leads in a sequence, then hydrate one result withoxygen_capabilities_schema. Provider and enrichment discovery is separate: boundedoxygen_tools_search, then exactoxygen_tools_get.
Cost and approval posture
Dry-run and preview calls 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 (or approve the equivalent scope through MCP). See Approvals and Spend caps.
Known limitations
- No
ui://widget rendering — inspect results via theweb_urlin each envelope or the web app. - The core profile (
?toolset=core, or a bare URL) advertises a bounded set of tools, not the full registry. Find any other tool withoxygen_capabilities_searchand run it by exact name throughoxygen_capabilities_readoroxygen_capabilities_call. - Do not paste large CSV/JSON files into MCP prompts — import them with
oxygen tables import <table> --file <path> --background.