OXYGENOxygen/ Docs
Data

Columns

Typed actions that produce row-level values, state, and provenance.

A column is a typed action on every row of a table. Some columns hold source data; others compute values, call AI, call provider tools, enrich records, or link workflow state. Every executable column writes cells with status, cost, provenance, and history.

Column kinds

KindProducesCostDeterminism
manualImported, pasted, or entered value0Static
sourceProvider-sourced or imported fact0 or provider-definedSource-defined
formulaComputed from other cells in the row0Deterministic
aiLLM callCredits per callNon-deterministic
toolProvider tool call (catalog)VariesProvider-defined
enrichmentManaged enrichment plan such as work email, mobile phone, or company enrichmentPer provider attemptProvider-defined
relationLink to another table or record set0Deterministic
workflowWorkflow-owned status or outputDepends on workflowWorkflow-defined
systemOxygen-managed metadata0System-defined

Every kind produces a cell with status, provenance, cost, and history.

Adding a column

oxygen columns add <table-id> --label <label> --key <key> --kind <kind> --data-type <type> --json

Manual

oxygen columns add <table-id> --label "Notes" --key notes --kind manual --data-type text --json

Formula

oxygen columns add <table-id> \
  --label "Fit Score Number" \
  --key fit_score_number \
  --kind formula \
  --data-type numeric \
  --definition-json '{"expression":"path(fit_score, \"score\")"}' \
  --json

Use formulas to extract scalar fields from JSONB AI or tool outputs before downstream steps use them.

AI

oxygen columns add <table-id> \
  --prompt-key icp-fit-scoring \
  --input-mapping '{"company_name":{"type":"column","columnKey":"company_name"},"domain":{"type":"column","columnKey":"domain"}}' \
  --json

AI outputs are stored as JSON envelopes. Use a formula column or columns materialize when downstream tools need one specific field.

Tool

oxygen columns add <table-id> \
  --label "Person Enrichment" \
  --key person_enrichment \
  --kind tool \
  --data-type jsonb \
  --definition-json '{"version":1,"mode":"native","toolId":"blitzapi.person_enrich","inputMapping":{"person_linkedin_url":{"type":"column","columnKey":"linkedin_url"}}}' \
  --json

Tool kind binds the column to one provider tool.

Enrichment helper

oxygen enrich-column preview <table-id> \
  --capability work_email \
  --linkedin-url-column linkedin_url \
  --company-domain-column domain \
  --limit 10 \
  --json

The enrichment helper creates or reuses an enrichment column for common waterfall-style jobs. See Waterfalls.

Running a column

oxygen columns run <table-id> <column-key> [--row-id <id> | --limit <n>] --json

Use a one-row or small pilot first. For large or paid runs, use the durable background path with an explicit row scope and credit ceiling:

oxygen table-runs create <table-id> --column <column-key> --limit 100 --max-credits 50 --json

See Runs, Modes, Approvals.

Maintenance

oxygen columns rename <table-id> <old-key> --key <new-key> --label "New Label" --json
oxygen columns update <table-id> <column-key> --definition-json '{"inputMapping":{}}' --dry-run --json
oxygen columns archive <table-id> <column-key> --json
oxygen columns rerun --table <table-id> --column <column-key> --row <row-id> --json
oxygen columns materialize <table-id> person_enrichment --preset work_email --json

On this page