Provider catalog
Every callable provider tool, discoverable through one interface.
The catalog is the set of provider tools you can call from a tool column, an enrichment waterfall, a workflow step, or directly via oxygen tools run.
Two surfaces
| Surface | Naming | Implementation |
|---|---|---|
| Native | <provider>.<operation> (e.g. blitzapi.person_enrich) | Oxygen-normalized schema, costs, and errors |
| App actions | composio.<toolkit>.<action> | Broad app-action coverage when a native adapter is not available |
Prefer the native equivalent when both exist.
Which providers exist today, their auth mode, and how many operations each one exposes: provider reference.
Tool descriptor shape
| Field | Notes |
|---|---|
tool_id | provider.operation |
provider | Provider name |
display_name | Human-readable |
description | What the tool does |
categories | Capability tags |
cost.cost_hint | Rough credit cost per call |
estimated_credits_per_call | Concrete estimate |
side_effect_class | read or write |
latency_band | fast, medium, slow |
rate_limit | Provider limit |
fallback_to | Recommended providers if this one fails |
prefer_over | Older providers this one supersedes |
supports_managed | True if Oxygen has a managed credential rail; this alone does not claim that a priced managed-credit call is available |
managed_credit_posture | priced for actual per-call managed credits; fixed_account for LinkedIn/WhatsApp seats; no_bill for free managed operations; unpriced when a managed credential exists but live managed execution is blocked pending a price; otherwise unsupported |
supports_node_credit_cap | True only when a Workflow tool node's max_credits value changes runtime enforcement for this exact capability |
supports_byok | True if you can connect your own key |
byok_required | True if only BYOK works (no managed option) |
input_schema, output_schema | JSON Schema for inputs and outputs |
enum_catalogs | Allowed values for enum inputs |
Searching
oxygen tools search <query> --json
oxygen tools search --provider blitzapi --all --no-access-check --json
oxygen tools search people --capability mobile_phone --only-runnable --json
oxygen tools search --no-access-check --terse --limit 100 --json # fast complete-catalog inventory
oxygen tools get <tool-id> --json
oxygen tools enums list --json
oxygen tools enums get blitzapi industry --query software --jsontools search accepts free-text plus capability filters. tools get returns the full descriptor, including input and output schemas.
Use a broad brand-name query to discover a provider id, then --provider <id> --all for an exact inventory. This avoids treating fuzzy matches from other vendors as part of that provider's surface. For example, the provider id for Blitz is blitzapi; its current catalog contains 22 operation ids backed by 19 distinct routes (three ids are compatibility aliases).
The response's total_tools counts every match for your query and filters (not just the rows returned under --limit), so the empty-query --no-access-check form is the fast way to inventory the whole catalog: it skips per-tool availability checks and returns compact descriptors without availability info. Every response carries counts_complete. When it is true, total_tools is exact. When it is false, partial_sources names the catalog source that did not answer (for example the Composio directory) and the totals are understated — retry, and the CLI prints a warning to stderr when this happens. A separate access_check_failures list names tools whose availability could not be determined; those tools are still in the catalog and the totals remain exact.
Per-plan BYOK daily call thresholds and every other default ceiling: pricing reference.
Running a tool
oxygen tools run <tool-id> --input-json '{"first_name":"Ada","domain":"acme.com"}' --mode dry-run --json
oxygen tools run <tool-id> --input-json '{...}' --mode live --approved --max-credits 5 --jsonUse dry-run first. Live calls can consume credits or write externally depending on the tool, so keep one-off live runs small and prefer table runs for batches.
Bulk runs go through a run:
oxygen table-ingestions create-tool-page <table-id> --tool <tool-id> --request-json '{...}' --jsonThis writes each result as a row.
Checking access
oxygen tools search <query> --only-runnable --json
oxygen integrations list --json--only-runnable filters to tools the active org can currently call. If a tool is missing, check whether it requires a connected integration. MCP also exposes oxygen_tools_check_access for agents that need a structured access check.
Related
- Columns — wrapping a tool as a per-row column.
- Waterfalls — running providers in fallback order.
- Integrations — connecting BYOK accounts.
- LinkedIn data access — choosing between the managed
scraper.*operations and a connected account.