Connectors · Developer Docs

Connect any AI client to BioMate

BioMate exposes a single MCP server with 19 tools. Install once, run from Claude Code, Claude Desktop, ChatGPT, Slack, or Feishu — every surface shares the same tool interface, the same workflow catalog, and the same runs history.

What are connectors?

BioMate connectors let AI assistants call BioMate's scientific-workflow platform on your behalf. When you ask Claude Code to "run RNA-seq on these FASTQs," it calls the run_workflow tool rather than generating code — the run executes on BioMate cloud, and live phase and step updates stream back into the chat.

The connector stack has two transport families:

  • MCP stdio — Claude Code, Claude Desktop, Cursor, and Codex CLI use a local proxy process. The AI client speaks JSON-RPC over stdio to a BioMate-issued binary that relays calls to dev-public.biomate.ai.
  • REST/webhook — ChatGPT, Slack, and Feishu call BioMate's REST API at dev-public.biomate.ai directly over HTTPS. No local installation needed.

All surfaces authenticate with the same OAuth 2.1 + PKCE flow against dev-public.biomate.ai/oauth. Your BioMate account, runs history, and workflow catalog are shared across every surface.

Supported surfaces

Claude Code MCP stdio
Terminal · CLI

Run BioMate workflows from your terminal. Results stream back inline as tool-use progress.

Claude Desktop MCP stdio
macOS · Windows

Integrate BioMate into the Claude Desktop app. Same tool set, same runs history.

Claude Science HTTP+OAuth
Research workbench

Anthropic's scientific AI workbench. Uses Streamable HTTP + OAuth 2.1 + PKCE.

Cursor MCP stdio
IDE · Marketplace

BioMate appears as an MCP server in Cursor IDE alongside your other development tools.

Codex CLI MCP stdio
Terminal · OpenAI

OpenAI's Codex CLI backed by GPT-5.5. Install via npx @biomate/connect codex.

ChatGPT REST
Plugin / GPT Action

Register BioMate as a custom GPT action. OAuth handled by ChatGPT's built-in flow.

Slack REST
Bot · Webhook

Add the BioMate bot to your workspace. Mention @BioMate to start a workflow from any channel.

Feishu / Lark REST
Bot · Webhook

Integrate via Feishu's open-platform bot API. Supports message cards with run status.

Available tools (19)

All surfaces expose the same tool set, sourced from a single canonical manifest (tools_manifest.py). Tools are annotated with read-only and destructive hints so the AI client can present appropriate confirmation prompts.

Streaming agentic tool

ToolDescription
biomate_sessionNatural-language goal in, BioMate orchestrates: selects workflow, fills params, submits to cloud, streams phase + step + QC + finding events back as progress notifications.

Workflow primitives

ToolDescription
search_workflowRanked catalog search across 2,455 workflows and 34 biological domains.
get_workflow_specRequired + optional params, allowed values, default QC profile, cost estimate.
run_workflowStart a run. Use stream: true for inline phase/step events.
watch_runStream phase/step progress from a running job until completion.
get_runSingle call: status + phases + steps + findings + output files.
cancel_runCancel an in-flight run.
list_runsHistory with experiment, workflow, and status filters.

Data and knowledge

ToolDescription
resolve_accessionIdentify GEO, SRA, ENA, DDBJ accessions and return the matching BioMate workflow with pre-filled params.
browse_dataList files in a public repository (EBI, NCBI, Ensembl, UCSC) or your S3 workspace by path prefix.
fetch_public_dataStage a public file from EBI / NCBI / Ensembl / UCSC into the BioMate workspace and return an S3 URI.
upload_fileGet a signed S3 PUT URL for local file uploads (>5 MB).
query_databaseUniProt / PDB / AlphaFold / NCBI / ChEMBL / KEGG lookup by accession or query.
search_literatureIterative depth-first search across PubMed, EuropePMC, Semantic Scholar, and OpenAlex.

Outputs, analysis, reporting

ToolDescription
preview_fileServer-side preview of FASTA / VCF / CSV / MRC / images / PDF.
export_reportRender methods + QC + findings as PDF or Markdown (IND/CRO-ready).
analyze_resultsAI interpretation — free-form questions about a run's outputs.
explain_errorRoot-cause diagnosis when a run fails.
recall_memoryRetrieve relevant prior runs, findings, and procedures.

End-to-end use cases

Each example below shows the full information flow — from a natural-language prompt to a delivered result — across a specific connector surface. Every call is a real API call against dev-public.biomate.ai.

RNA-seq differential expression — Claude Code

A researcher asks Claude Code to run a differential expression analysis on uploaded FASTQ files stored in S3.

# User types in Claude Code terminal:
Run RNA-seq differential expression on
s3://biomate-demo/treated_R1.fq.gz vs s3://biomate-demo/control_R1.fq.gz.
Use GRCh38, DESeq2. Return a volcano plot and the top 50 DEGs.

Information flow:

  1. Search — Claude Code calls search_workflow("RNA-seq differential expression DESeq2") → BioMate returns ranked matches; top hit is nf-core/rnaseq with DESeq2 post-processing.
  2. Spec — Claude calls get_workflow_spec("nf-core/rnaseq") → receives required params (input, genome, contrasts), optional params, default QC thresholds, and cost estimate (~$0.40 on AWS Batch).
  3. Run — Claude calls run_workflow({ workflow: "nf-core/rnaseq", params: { input: "s3://biomate-demo/…", genome: "GRCh38", contrasts: "treated_vs_control" }, stream: true }) → BioMate queues the job on AWS Batch and returns a run_id.
  4. Streamwatch_run(run_id) emits notifications/progress events: FASTQC → STAR alignment → featureCounts → DESeq2 → MultiQC. Claude renders each phase inline as it completes.
  5. Resultsget_run(run_id) returns output file list (volcano.png, degs.csv, multiqc_report.html). Claude calls preview_file("s3://…/volcano.png") and displays the plot inline.
  6. Reportexport_report(run_id, format="pdf") → signed S3 URL to a methods PDF with QC metrics and DEG table, ready for the lab notebook.
Total wall time: ~12 min for a 2×2 comparison on a 6 GB FASTQ pair. Claude shows live phase cards throughout — no waiting at a dashboard.

ADMET screening with auto-loop QC — Claude Code

A medicinal chemist screens a compound library and lets BioMate's auto-loop correct hERG-failing structures.

# User types:
Screen these SMILES for hERG, CYP3A4, and oral bioavailability.
Retry any hERG-failing compounds with reduced lipophilicity.

CC1=CC=C(C=C1)S(=O)(=O)N   aspirin-like
CN1C=NC2=C1C(=O)N(C(=O)N2C)C   caffeine

Information flow:

  1. Searchsearch_workflow("ADMET hERG CYP3A4 oral bioavailability") → returns admet_prediction_suite.
  2. Runrun_workflow({ workflow: "admet_prediction_suite", params: { smiles_list: ["CC1=CC=C…", "CN1C=NC2…"], endpoints: ["hERG","CYP3A4","Foral"] } }).
  3. QC gate fires — Compound 2 exceeds hERG IC₅₀ threshold (0.41 µM vs 1.0 µM limit). BioMate auto-loop triggers: explain_error(run_id, gate="hERG") returns root-cause + suggested param change (reduce cLogP by 1.2).
  4. Auto-retry — BioMate resubmits with modified SMILES (desethyl analog). Claude shows a diff card: originalrevised.
  5. Resultsget_run(run_id) → all endpoints pass. export_report(run_id, format="pdf") → CRO-ready ADMET dossier.

GEO accession → scRNA-seq — Slack

A bioinformatics team member pastes a GEO accession in Slack and BioMate runs the full pipeline automatically.

@BioMate Analyze GSE142256 — MG patient PBMCs, 10x Chromium.
Cluster by cell type and find differentially expressed genes in T cells.

Information flow:

  1. Slack event — Slack posts the app_mention event to the BioMate bot endpoint at dev-public.biomate.ai/integrations/slack/command. The bot verifies the Slack signing secret and responds 200 OK immediately (async processing).
  2. Accession resolve — Bot calls resolve_accession("GSE142256") → BioMate identifies this as a 10x scRNA-seq dataset, returns pre-filled workflow params: nf-core/scrnaseq + input: "s3://biomate-staging/geo/GSE142256/", genome: GRCh38.
  3. Data stagefetch_public_data("GSE142256") pulls raw FASTQ files from GEO/SRA into the BioMate S3 workspace. Bot posts "Staging data…" card update in the Slack thread.
  4. Runrun_workflow({ workflow: "nf-core/scrnaseq", … }) → queued on AWS Batch. Bot posts "Run started" card with run ID and estimated completion time.
  5. Completion — On completion, bot calls get_run(run_id) and analyze_results(run_id, question="Top markers per cluster, DEGs in T cells"). Bot posts a summary card with cluster UMAP, top markers table, and an Open in BioMate button deep-linking into the run panel.

Literature + database query — ChatGPT

A scientist uses the BioMate Custom GPT to look up a gene target, search the literature, then run a pathway analysis — all in one conversation.

Tell me everything about CD40LG as an autoimmune drug target.
Then run a pathway enrichment on the top 50 CD40L-correlated genes from GTEx.

Information flow:

  1. Database lookup — ChatGPT calls query_database({ db: "UniProt", query: "CD40LG human" }) → returns UniProt entry P29965: gene aliases, function, 12 disease associations, 3 known inhibitors.
  2. Literature searchsearch_literature({ query: "CD40LG autoimmune disease target 2020-2025", sources: ["PubMed","Semantic Scholar"] }) → returns 8 high-relevance papers with abstracts; ChatGPT summarizes mechanism and clinical evidence.
  3. Data fetchfetch_public_data("GTEx v10 CD40LG expression") → stages the GTEx expression matrix into BioMate workspace.
  4. Workflow searchsearch_workflow("pathway enrichment clusterProfiler") → returns clusterProfiler_enrichGO workflow.
  5. Runrun_workflow({ workflow: "clusterProfiler_enrichGO", params: { gene_list: top50, organism: "human", ont: "BP" } }) → AWS Batch job.
  6. Reportexport_report(run_id, format="markdown") → ChatGPT embeds the top GO terms directly into its reply with a download link to the full PDF.

PBPK modeling for IND submission — Claude Desktop

A pharmacokineticist builds a full IND evidence package: ADMET → PBPK → regulatory narrative, all from Claude Desktop.

# User in Claude Desktop:
Run ADMET on our lead compound (SMILES: CC(C)Cc1ccc(cc1)C(C)C(=O)O),
then PBPK in a 70 kg adult at 100 mg oral dose,
then generate a CTD §2.6.1 PK narrative for IND filing.

Information flow:

  1. ADMET runrun_workflow("admet_prediction_suite", { smiles: "CC(C)Cc1ccc…" }) → returns Foral 68%, hERG IC₅₀ 8.4 µM (pass), CYP3A4 substrate (yes). Results stored as admet_run_id.
  2. PBPK runrun_workflow("pbpk_11compartment", { smiles: "…", dose_mg: 100, route: "oral", bw_kg: 70, fu: 0.23 }) → 11-compartment ODE model; Cmax 3.2 µg/mL at 1.4 h, AUC₀–₂₄ 18.4 µg·h/mL. Results as pbpk_run_id.
  3. Memoryrecall_memory({ context: "PBPK similar compounds" }) → retrieves prior runs for structurally similar compounds to cite precedent in the narrative.
  4. Narrative generationrun_workflow("ctd_261_narrative_generator", { admet_run: admet_run_id, pbpk_run: pbpk_run_id }) → LLM drafts the §2.6.1 PK summary using actual computed values, formats citations, writes Methods and Results subsections.
  5. Exportexport_report(narrative_run_id, format="pdf") → IND-ready DOCX/PDF with SHA-256 audit manifest (claims_index.json) for traceability. Signed S3 URL returned; Claude Desktop renders a download link inline.
Full chain wall time: ~8 min. All three sub-workflows run on AWS Batch; the narrative generation is the final LLM step. The SHA-256 manifest links every numerical claim back to the source run ID and output file.

Claude Code

The Claude Code connector runs as a local MCP server (stdio transport). It installs in 30 seconds and writes its config into ~/.mcp.json.

Install via CLI

npx @biomate/connect claude-code

The installer opens your browser, completes the OAuth 2.1 + PKCE flow against dev-public.biomate.ai, and writes the server entry into your Claude Code config. Restart Claude Code to activate.

Try it

# ADMET screening
Screen aspirin and caffeine for hERG inhibition and CYP3A4 metabolism.

# RNA-seq differential expression
Run RNA-seq differential expression on s3://biomate-demo/treated_R1.fq.gz
and s3://biomate-demo/control_R1.fq.gz. Compare treated vs control, GRCh38.

# Cryo-EM refinement
Refine s3://biomate-demo/particles.cs with CryoSPARC homogeneous refinement.
Apply C2 symmetry.
Live streaming Results are not delivered as a final answer — phase and step events stream back as notifications/progress and Claude renders the live timeline inline, just like the BioMate web UI.

Claude Desktop

Claude Desktop supports MCP stdio servers via the claude_desktop_config.json file.

Install via CLI

npx @biomate/connect claude-desktop

The installer handles OAuth and writes the server entry into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows). Restart Claude Desktop to activate.

Manual config

If you prefer to configure manually, add this entry under mcpServers in claude_desktop_config.json:

{
  "mcpServers": {
    "biomate": {
      "command": "npx",
      "args": ["-y", "@biomate/mcp-server"],
      "env": {
        "BIOMATE_API_KEY": "<your-api-key>"
      }
    }
  }
}

ChatGPT

BioMate integrates with ChatGPT as a custom GPT action. The /tools/* adapter routes run on dev-public.biomate.ai — no local installation needed.

1
Open the GPT editor

Go to ChatGPT → Explore GPTs → Create.

2
Add an action

Click Add actions → Import from URL and paste: https://dev-public.biomate.ai/connectors/chatgpt/openapi.json. This schema is served directly from the BioMate API and always reflects the current server URL. Alternatively, use the canonical GitHub source: https://raw.githubusercontent.com/bioMate-AI/biomate-connector/main/connectors/chatgpt/openapi.json.

3
Authenticate

Two options:
Option A — API key (simple): Set auth type to API key, paste your BioMate personal API key (bm_live_xxx) from account/api-keys. ChatGPT sends it as Authorization: Bearer bm_live_xxx.
Option B — OAuth: Set auth type to OAuth. Authorization URL: https://dev-public.biomate.ai/oauth/authorize. Token URL: https://dev-public.biomate.ai/oauth/token.

4
Save and test

Save the GPT and ask: "What RNA-seq workflows are available in BioMate?" or "Search for ADMET screening workflows."

Slack

The BioMate Slack integration adds a bot to your workspace. Mention @BioMate in any channel to start a workflow, check run status, or query the database.

1
Add to Slack

Visit biomate.ai/integrations/slack and click Add to Slack. You'll be redirected through Slack's OAuth to authorize the bot.

2
Connect your BioMate account

After adding the bot, run /biomate connect in any channel. The bot sends a one-time link to authenticate with your BioMate account.

3
Start using it

Mention the bot with a natural-language task. Run status updates appear in the same thread as interactive cards.

Example interactions

@BioMate Run GATK variant calling on s3://my-bucket/sample.bam, hg38

@BioMate What's the status of my last run?

@BioMate Look up UniProt P04637 and summarize cancer mutations
The Slack bot posts run progress as message updates in the originating thread. For long-running workflows (30+ minutes), it posts a final summary when the run completes.

Feishu / Lark

The BioMate Feishu integration connects as a Feishu open-platform bot. It supports interactive message cards that display run status and findings inline.

1
Add the bot

Search for BioMate in the Feishu app directory, or visit biomate.ai/integrations/feishu.

2
Authorize

Click Add to organization and complete the Feishu OAuth flow. The bot is added to your organization's workspace.

3
Connect BioMate account

Send a direct message to the bot: /connect. It will send a one-time authentication link.

4
Start using it

Mention @BioMate in a group or send it a DM. Progress cards update in-thread as phases complete.


Authentication

All surfaces use OAuth 2.1 + PKCE. No shared secrets or passwords are stored by the connector — only short-lived access tokens (30 min) and hashed refresh tokens.

Scopes

ScopeGrants
workflows:readSearch catalog, get specs, list runs.
workflows:writeStart and cancel runs.
files:readPreview and download output files.
files:writeUpload input files.
account:readAccount info and quota.

Revoke any surface's access at any time at biomate.ai/account/connectors. Revoking one surface does not affect others.

API keys

For server-to-server use (no browser), generate a long-lived API key at biomate.ai/account/api-keys. Pass it as Authorization: Bearer <key> or set it in the BIOMATE_API_KEY environment variable.

Manual configuration

If npx @biomate/connect is unavailable, set the server entry by hand. For Claude Code, add this to ~/.mcp.json:

{
  "mcpServers": {
    "biomate": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@biomate/mcp-server"],
      "env": {
        "BIOMATE_API_KEY": "bm_sk_..."
      }
    }
  }
}

The BIOMATE_API_KEY value can be found at biomate.ai/account/api-keys.

FAQ

Does the connector send my data to Anthropic?

No. The connector calls BioMate's API directly. Anthropic (Claude Code / Claude Desktop) only sees the tool names, their inputs, and their outputs — the same data visible in your chat session. See the privacy policy for full details.

Can I use the connector with a self-hosted BioMate instance?

Yes. Set BIOMATE_API_URL=https://your-instance.example.com in the environment before running npx @biomate/connect.

Is the connector open source?

Yes. The server code and all surface adapters are at github.com/bioMate-AI/biomate-connector under the MIT license.

What happens if a run exceeds my quota?

The run_workflow tool returns an error with the quota details. The AI client surfaces this as a readable message. Upgrade your plan at biomate.ai/billing.

Can multiple team members share the same BioMate connector?

Each team member authenticates with their own BioMate account. Runs, files, and project membership are governed by BioMate's project-level access controls — not the connector.