MCP & AI agents
Connect an MCP client to the hosted `oxygen_*` tool server.
Oxygen runs a hosted MCP server at https://oxygen-agent.com/mcp. It exposes the same primitives as the CLI, over the same /api/cli/* contract. Every tool is listed in the MCP reference, grouped by the toolset pack that advertises it.
Per-client setup and verification: Claude Code, Claude Desktop, Claude Cowork, Codex, Cursor, any other MCP client.
Connecting a client
For Claude Desktop, add a custom connector pointing at:
https://oxygen-agent.com/mcpSign in when the OAuth flow opens, then ask Claude to run oxygen_whoami and oxygen_tables_list.
For clients that need a bearer token, create a CLI API key and configure the client to send it as Authorization: Bearer <token>:
oxygen api-keys create --name "mcp client" --jsonDo not paste API keys into prompts or docs. Store them in the client's credential or connector configuration.
Session flow
oxygen_whoami.oxygen_orgs_selectif an organization is not already selected.oxygen_context_resolvefor workspace context.oxygen_capabilities_searchto route the outcome.oxygen_capabilities_schemaon only the selected names, then call the gateway tool.- Open the returned
web_urlvalues andui://widgets to inspect results.
Search first, hydrate exactly
A bare URL advertises the core toolset plus the always-listed oxygen_capabilities_* pair. Oxygen dispatches every other customer oxygen_* tool by exact name, but some hosts — including Claude Cowork — refuse names absent from their initial tools/list before the request reaches Oxygen.
oxygen_capabilities_search returns an ownership card (layer, primitive, negative boundary, posture, skills, endpoint families, recommended gateways) plus bounded MCP matches. Each match carries its toolset_pack, the smallest connector profile that advertises it. Follow with oxygen_capabilities_schema for one or a few exact names. If the host reports No such tool available, reconnect with ?toolset=<toolset_pack>; use ?toolset=full only when an automation truly needs the complete advertised registry.
Provider operations use a separate path: bounded oxygen_tools_search → exact oxygen_tools_get. Public or third-party LinkedIn reads route to native cookieless scraper.* operations; linkedin.* is for the connected workspace account's private data and writes.
Workflows as MCP tools
oxygen_workflows_apply, oxygen_workflows_call, oxygen_workflows_runs, and oxygen_workflows_tail are the generic workflow surface. You can also publish one workflow as its own MCP tool — the "Clay Functions" pattern — so an agent calls it by name instead of routing through the generic dispatcher.
- Opt in per workflow.
oxygen workflows mcp enable <workflow>(oroxygen_workflows_mcp_enable). Only workflows you explicitly enable are published;oxygen workflows mcp disable <workflow>removes the tool again and leaves the workflow active and callable viaoxygen_workflows_call. - The tool name is
oxygen_workflow_<slug>. The slug is used verbatim, hyphens preserved —lead-cleanupbecomesoxygen_workflow_lead-cleanup. A name over 64 characters is skipped fromtools/listuntil the slug is shortened;oxygen workflows mcp enablewarns you when that happens. - Discovery is through
tools/list. Published workflows appear alongside the staticoxygen_*tools;oxygen workflows mcp listshows what is currently published with each resolvedtool_name. - A bare call runs a dry run.
modedefaults todry_run, which previews without spending credits or writing externally. - Live execution is gated. Pass
mode: "live"withapproved: trueand amax_creditsceiling, after inspecting a dry run. Same gateoxygen_workflows_callenforces.
Widgets
Tools whose output benefits from visual inspection return a ui:// widget alongside readable text and structured JSON. oxygen_widgets_list returns every advertised widget and the tools that render it; it sits in the workspace pack rather than core, so a host that enforces tools/list needs ?toolset=workspace. Widgets are inspection surfaces — the JSON result stays the source for ids, cursors, and retry commands.
Large files
Do not send large CSV, JSON, JSONL, or XLSX files through an MCP prompt. Call oxygen_cli_file_import_prepare instead: it returns a local oxygen tables import ... --background command, so the file stays on the user's machine and the resulting ingestion run stays inspectable in Oxygen.
Safety in MCP calls
oxygen_tools_run_dry previews a tool call without spending credits. oxygen_tools_run_live, oxygen_columns_run on paid columns, enrichment runs, and external writes require the user's approved scope and credit ceiling first — see Approvals.
For bulk work, prefer table or enrichment runs over many one-off live tool calls. Runs produce timelines, failed-item lists, provider summaries, billing entries, and web deep-links.