MCP App Store
by KeenEthics

Overview

OXYGEN is revenue infrastructure for B2B startups. Connect your existing OXYGEN account to inspect workspace tables, preview company searches, estimate sourcing costs, and maintain GTM data and knowledge from ChatGPT. Table previews and sourcing-run summaries can appear as inline cards. Workspace changes require your instruction; paid lookups and sourcing require explicit approval and a bounded credit ceiling. This plugin does not purchase subscriptions or credits, send outreach, or run arbitrary workflows. Available data and paid execution depend on your existing OXYGEN workspace permissions and balance.

Tools

oxygen_budget_list

ChatGPT
Lists the organization's standing credit caps by scope and window, plus the plan defaults that apply without one: the daily guard and per-run Agent and trigger ceilings.

oxygen_columns_add

ChatGPT
Adds a column; set column.kind. Inline AI uses {{column_key}}; inputMapping supplies literals/context; runCondition uses bare keys. preset adds a bundle; inputs={slot:column} pins identity. company_enrich: ~1 credit/profile, no field choice. Classify via column.definition.decision: labels (labels), yes_no, score (levels lowest first); question in prompt or decision.question.

oxygen_columns_bind_run

ChatGPT
Resolve rows to CRM records under the column's saved matching and create-on-miss policy on the selected rows of an existing bind column. This operation refuses every other saved column kind, including catalog tools, custom HTTP and workspace Functions. dry_run=true previews without execution. Live writes cells in a durable run; paid runs require approved=true and max_credits. Inspect progress with oxygen_table_runs_wait.

oxygen_columns_formula_run

ChatGPT
Compute deterministic formulas on the selected rows of an existing formula column. This operation refuses every other saved column kind, including catalog tools, custom HTTP and workspace Functions. dry_run=true previews without execution. Live writes cells in a durable run; paid runs require approved=true and max_credits. Inspect progress with oxygen_table_runs_wait.

oxygen_columns_lookup_run

ChatGPT
Read matching values from another workspace Table on the selected rows of an existing lookup column. This operation refuses every other saved column kind, including catalog tools, custom HTTP and workspace Functions. dry_run=true previews without execution. Live writes cells in a durable run; paid runs require approved=true and max_credits. Inspect progress with oxygen_table_runs_wait.

oxygen_columns_research_run

ChatGPT
Research and cite web evidence on the selected rows of an existing research column. This operation refuses every other saved column kind, including catalog tools, custom HTTP and workspace Functions. dry_run=true previews without execution. Live writes cells in a durable run; paid runs require approved=true and max_credits. Inspect progress with oxygen_table_runs_wait.

oxygen_columns_run

ChatGPT
Generate AI cell values on the selected rows of an existing ai column. This operation refuses every other saved column kind, including catalog tools, custom HTTP and workspace Functions. dry_run=true previews without execution. Live writes cells in a durable run; paid runs require approved=true and max_credits. Inspect progress with oxygen_table_runs_wait.

oxygen_companies_hiring_search_run

ChatGPT
Import hiring-company results matching the native filters returned by the corresponding free preview. This is one fixed search operation; its provider binding is selected by the server. Dry run is free. Live requires approved=true and max_credits after inspecting the exact scope and price. Results include the ingestion run; use oxygen_table_ingestions_wait, then oxygen_tables_preview.

oxygen_companies_native_search_run

ChatGPT
Import company-search results matching the native filters returned by the corresponding free preview. This is one fixed search operation; its provider binding is selected by the server. Dry run is free. Live requires approved=true and max_credits after inspecting the exact scope and price. Results include the ingestion run; use oxygen_table_ingestions_wait, then oxygen_tables_preview.

oxygen_companies_search_plan

ChatGPT
The canonical company-search entrypoint. Compiles prompt + typed filters into provider routes, table columns, gates, credit/match estimates, filter coverage, and workspace context. Discover accepted enums with oxygen_companies_search_preview action=filters first. A route marked invalid_input needs corrected filters and a new estimate. Approval must use the returned max_pages and credit estimate; larger row counts need a new quote. A deterministic_guess match count is an unprobed heuristic; use the free preview for a provider-backed total. COST: free (no paid provider calls; with estimate=true it runs at most ONE free zero-credit count probe). FILTERS: pass typed filters (ISO alpha-2 countries, funding stages, employee/revenue/founded ranges, technologies, hiring). extracted_filters.unparsed_constraint_hints reports unparsed constraints; per-route filter_application reports applied/dropped filters. FOLLOW-UP: _plan -> _run (dry_run) -> _run (live, approved=true, max_credits) -> oxygen_table_ingestions_wait -> oxygen_tables_preview.

oxygen_companies_search_preview

ChatGPT
Call action=filters before previewing; use its accepted enums and nested objects. Preview free. company_search: 50 companies; hiring: 50 job postings with exact total; google_maps: 20 businesses, {q:business type and area}, total unavailable unless returned by API. Report the native source, requested filters, diagnostics, preview_limit and how sample rows were chosen. Next use oxygen_companies_native_search_run, oxygen_companies_hiring_search_run or oxygen_companies_maps_search_run for that source with source_filters: dry_run, then approved live + max_credits.

oxygen_companies_search_run

ChatGPT
Source companies matching a natural-language request and typed filters into a Table. OXYGEN selects its internal provider chain; this operation accepts no provider tool IDs, route selectors or execution plans. Dry run is free. Live requires approved=true and max_credits after inspecting the exact scope and price. Results include the ingestion run; use oxygen_table_ingestions_wait, then oxygen_tables_preview.

oxygen_context_resolve

ChatGPT
Resolves workspace context and assets. purpose='onboarding' includes a bounded research brief and inferred GTM hypotheses; user corrections take precedence.

oxygen_find_company

ChatGPT
Enrich one company (domain, name or linkedin_url) via a provider waterfall: firmographics, structured funding, competitors, corporate structure, news, job openings, tech stack, web-presence URLs. Returns found, values, attempts (derived_from = 0-credit read) and retry_safe.

oxygen_find_email

ChatGPT
Find a person's work email via a multi-provider waterfall (BlitzAPI, Icypeas, AI Ark, LeadMagic, BetterContact), advancing provider-by-provider until one returns a result. Provide the strongest identity you have: linkedin_url, or full_name + company_domain. Returns found, result.value, confidence (verified/catch_all/guessed/unverified), source provider, an attempt trace, and retry_safe (true when nothing was billed).

oxygen_find_phone

ChatGPT
Find a person's mobile phone via a multi-provider waterfall, advancing on empty/error. Provide linkedin_url (strongest), email, or full_name + company. Returns outcome=found/no_match/indeterminate: provider failures are indeterminate with found=null, never a false no-match. Also returns result.value, line_type/carrier when verified, an attempt trace, and retry_safe.

oxygen_inbox_list

ChatGPT
Lists Unibox conversations newest-first across email, LinkedIn, and WhatsApp (the default merged stream); channel narrows to one. Primary excludes the negative status tier; All = ordinary conversations. Status, unread, unanswered, dates are cross-channel; search is fuzzy, spans every non-warmup thread + body, ignores segment/unanswered. Campaign/provider/domain/mailbox facets and Others/Sent/Warmup/DMARC are email-only.

oxygen_knowledge_index

ChatGPT
Free wiki catalog: newest 200 pages, metadata, revisions, pins and link degree; counts cover all pages. semantic.budget is Oxygen-funded, never your credits. Read first, open relevant pages, cite slugs. Also knowledge://index.

oxygen_knowledge_page_get

ChatGPT
Read Markdown, metadata, links and backlinks by slug or id. Start with oxygen_knowledge_index; cite slugs/revisions. File learned context with oxygen_knowledge_page_upsert. Free read.

oxygen_knowledge_page_upsert

ChatGPT
Create/update by slug or id; omit both to create by title. Search first to avoid duplicates. Cite [[slug]]. Writes revisions and links. Sensitive canonical edits return knowledge_approval_required with a proposal to approve in OXYGEN.

oxygen_orgs_select

ChatGPT
Switches the active OXYGEN workspace. An org-bound API key cannot: it is refused with org_scoped_credential.

oxygen_people_search_plan

ChatGPT
Canonical people/contact search: compiles prompt + persona filters into provider routes, table columns, gates, credit/match estimates, filter coverage, and workspace context. COST: free (no paid provider calls; runs at most ONE free zero-credit people-count probe — on by default, pass estimate=false to skip it). FILTERS: pass typed filters (titles, seniorities, departments, ISO alpha-2 countries, contactability has-email/has-phone, nested company scope). extracted_filters.unparsed_constraint_hints reports unparsed constraints; per-route filter_application reports applied/dropped filters (only ContactOut honors contactability). SOURCE: source={table, linkedin_url_column} fans Blitz Employee Finder over every company LinkedIn URL in that column — 10 credits per company per page, people linked back to their company row. FOLLOW-UP: _plan -> _run (dry_run) -> _run (live, approved=true, max_credits) -> oxygen_table_ingestions_wait -> oxygen_tables_preview. Upsert-dedupes on linkedin_url.

oxygen_people_search_preview

ChatGPT
List native Find people filters (people. and company., incl. up to 50 company.linkedin_url) or preview up to 50 people free. Then use oxygen_people_search_run with source=people_search and source_filters: dry_run, then approved live with max_credits.

oxygen_people_search_run

ChatGPT
Dry-runs or queues a live table ingestion run for one people-search provider route. This is the people-search executor; pair it with oxygen_people_search_plan. COST: dry_run is free. Live requires approved=true and max_credits. max_pages is computed from target_count and capped by max_credits (see auto_paged). Required provider preflight blocks live until verified server-side. Rows upsert-dedupe on linkedin_url. FILTERS: when planning from a prompt, pass typed filters (and estimate) — identical schema to oxygen_people_search_plan. source="people_search" + source_filters from oxygen_people_search_preview needs no prompt. SOURCE: source={table, linkedin_url_column} fans Blitz Employee Finder over every company LinkedIn URL in that column — 10 credits per company per page, people linked back to their company row. TABLE: omit it, or match output_columns. FOLLOW-UP: this tool mode=dry_run -> mode=live, approved=true -> oxygen_table_ingestions_wait -> oxygen_tables_preview.

oxygen_rows_upsert

ChatGPT
Inserts or updates a batch, deduplicating on the key column. dry_run=true first on messy lists.

oxygen_runs_list

ChatGPT
Lists recent workspace runs (provider calls, AI column runs, workflow steps) for the organization, newest first.

oxygen_search_runs_get

ChatGPT
Gets one durable search/scrape run by id.

oxygen_search_runs_wait

ChatGPT
Polls a durable search/scrape run until terminal status or timeout.

oxygen_signals_search_preview

ChatGPT
linkedin_posts only: list the post-search filters, or preview public LinkedIn posts FREE (up to 25 per keyword) with author, engagement and the optional ai_filter applied. Nothing is created or charged. Then oxygen_signals_search_run with the same filters: dry_run, then live with approved=true, plus max_credits if the dry run quotes ai_filter reasons.

oxygen_signals_search_run

ChatGPT
Returns a dry-run request or queues a live table ingestion run for one signal-search route, creating the table from the plan blueprint when none is passed. COST: dry_run is free; live consumes credits within max_credits and requires approved=true. linkedin_posts is free (approved=true only) unless the dry run quotes credits for ai_filter reasons or an ai_filter block. LIVE TABLE: pass bind_feed=true with every to also bind a pull feed to the same table in the same call, so it keeps refilling on a cadence. That is a STANDING spend grant and is refused (feed_not_incremental) when the chosen provider cannot resume where it left off. FOLLOW-UP: oxygen_signals_search_run (mode=live) -> oxygen_table_ingestions_wait -> oxygen_tables_preview.

oxygen_table_ingestions_get

ChatGPT
Returns a durable table ingestion run with status, item counts, row counts, and the Oxygen web deep-link.

oxygen_table_ingestions_wait

ChatGPT
Polls a durable table ingestion until it reaches a terminal status or the timeout expires.

oxygen_table_runs_wait

ChatGPT
Polls a table action run until it reaches a terminal status (completed, completed_with_errors, failed, canceled) or the timeout expires. Use after starting a run to watch it finish.

oxygen_tables_create

ChatGPT
Creates a table private to the active workspace. Mutates tenant schema. AI prompts read {{column_key}} or inputMapping {{name}}; unknown → invalid_prompt_column + near misses.

oxygen_tables_describe

ChatGPT
Reads columns, types and config; column returns one. A UUID in another accessible org returns table_in_other_org; select the org in details.recovery with oxygen_orgs_select, then retry.

oxygen_tables_list

ChatGPT
Lists this workspace's tables, optionally filtered by project or workspace tag. Newest 200 by default; see capped.

oxygen_tables_preview

ChatGPT
Rows, columns, stats, and a deep-link, 0 credits. Share the returned web_url. UI in MCP Apps hosts; data in terminals. Fill exact to cap, else summary.statsSampled; rowCount exact.

oxygen_tables_query

ChatGPT
Raw rows. Prefer filterTree; use oxygen_tables_preview to inspect.

oxygen_whoami

ChatGPT
Returns the authorized organization and user; for an org API key, user is its issuing person and owns Personal Oxygents created here. Factual onboarding markers: a null block means unknown. No GTM prescription.

Capabilities

WritesInteractive

Example Prompts

Click any prompt to copy it.

Similar Apps