OXYGENOxygen/ Docs
Authoring

Blueprints

Install a whole GTM motion at once — tables, columns, prompts, and a disabled workflow — then turn it on yourself.

A blueprint installs a motion in one command: the tables, the columns, the prompt templates, and one workflow, created disabled. Preflight tells you exactly what will land before anything is written.

oxygen blueprints is the live surface. oxygen workflows templates search|describe|preflight|apply still respond, but they are deprecated aliases onto the same endpoints. oxygen workflows templates run is removed — it answers HTTP 410 with error code workflow_template_run_deprecated. Replace it with oxygen blueprints apply <slug> followed by oxygen workflows call <workflow>.

Browse

In the app: sidebar Recipes, under Knowledge, opens /blueprints. The page header reads Blueprints and splits into Saved in this workspace and Shipped seeds. That sidebar item is beta-gated — if you don't see it, open Settings → Beta features and switch on Enable beta features. The /blueprints URL works either way; the gate only hides the nav entry.

/blueprints/<slug> shows What this blueprint creates (tables, columns, required integrations, required context), an Apply via CLI block to copy, and the full envelope JSON. There is no apply button: blueprints are applied from the CLI or MCP by design.

From a terminal:

oxygen blueprints list --json
oxygen blueprints list --tag outbound --json
oxygen blueprints describe outbound-pilot --json
oxygen blueprints marketplace --json   # the public marketplace; no auth needed

Preflight

Preflight first. It costs 0 credits, makes no provider calls, and changes nothing.

oxygen blueprints preflight outbound-pilot --input-json '{...}' --json

The preflight object carries ok, issues[], missing_integrations[], missing_context_keys[], table_collisions[], and prompt_collisions[]; alongside it the envelope returns a spend block pinned at credits_used: 0 and next[] — the exact apply command that preserves the inputs you just validated. Price-aware seeds add pricing_forecast with cap_status, cap_scope, and cap_remediation; an insufficient cap affects live and scheduled runs only. ok: false means fix what issues lists, then preflight again.

To reapply against an existing workflow, pass --workflow-id <uuid-or-slug>. next keeps the exact selector you supplied plus any reused table bindings.

Apply

oxygen blueprints apply outbound-pilot --input-json '{...}' --json

apply costs 0 credits and makes no provider calls or external writes — but it is not read-only. It creates real workspace tables, columns, and prompt templates, plus the blueprint's workflow, disabled. Reapplying cuts a new revision even when your inputs are unchanged — schedule authority is revision-bound — and workflows[].revision says which. Only the shipped LinkedIn monitor reuses its installed tables automatically; for any other blueprint a name clash surfaces as table_collisions, and you reuse that table explicitly with --table-ref <ref>=<table_id>. The response reports each workflow's future per-run credit ceiling. Nothing executes until you ask for it.

Run it — this spends credits

oxygen workflows get <workflow> --json                  # inspect what landed
oxygen workflows call <workflow> --mode dry_run --json  # free rehearsal, works while disabled
oxygen workflows enable <workflow> --json               # a disabled workflow refuses --mode live
oxygen workflows call <workflow> --mode live --approved --max-credits 25 --json

A live call needs both --approved and --max-credits, and refuses with workflow_disabled until the workflow is enabled. Enabling an autonomous trigger (cron, webhook, event) on a workflow that calls tools additionally needs oxygen workflows enable <workflow> --approved --max-credits <n>, where --max-credits is the ceiling per delivery.

Save and share your own

oxygen blueprints export --workflow <id> --out ./motion.json --json
oxygen blueprints save --file ./motion.json --json
oxygen blueprints share <slug> --json     # returns oxygen-agent.com/b/<code>

A share URL is public: anyone holding it can apply the bundle. shares lists your share links, unshare <code> revokes one, tag <slug> --tags "..." replaces a saved bundle's workspace tags, archive <slug> hides it (seeds cannot be archived). publish <slug> lists it on the public marketplace — it first scans the envelope for API tokens, tenant UUIDs, and email addresses, and refuses without --approved if it finds any. unpublish <slug> delists it; the share URL keeps working.

/blueprints vs /workflows/templates

/workflows/templates (Workflow templates, reached from New workflow at /workflows/new) lists only the shipped seeds. /blueprints lists those same seeds plus anything your workspace saved — use it. The template detail page has one thing the blueprint page doesn't: Open in editor, shown for seeds that have a declarative graph, which loads /workflows/builder?template=<id> and saves nothing until you publish.

On this page