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.aidirectly 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
Run BioMate workflows from your terminal. Results stream back inline as tool-use progress.
Integrate BioMate into the Claude Desktop app. Same tool set, same runs history.
Anthropic's scientific AI workbench. Uses Streamable HTTP + OAuth 2.1 + PKCE.
BioMate appears as an MCP server in Cursor IDE alongside your other development tools.
OpenAI's Codex CLI backed by GPT-5.5. Install via npx @biomate/connect codex.
Register BioMate as a custom GPT action. OAuth handled by ChatGPT's built-in flow.
Add the BioMate bot to your workspace. Mention @BioMate to start a workflow from any channel.
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
| Tool | Description |
|---|---|
biomate_session | Natural-language goal in, BioMate orchestrates: selects workflow, fills params, submits to cloud, streams phase + step + QC + finding events back as progress notifications. |
Workflow primitives
| Tool | Description |
|---|---|
search_workflow | Ranked catalog search across 2,455 workflows and 34 biological domains. |
get_workflow_spec | Required + optional params, allowed values, default QC profile, cost estimate. |
run_workflow | Start a run. Use stream: true for inline phase/step events. |
watch_run | Stream phase/step progress from a running job until completion. |
get_run | Single call: status + phases + steps + findings + output files. |
cancel_run | Cancel an in-flight run. |
list_runs | History with experiment, workflow, and status filters. |
Data and knowledge
| Tool | Description |
|---|---|
resolve_accession | Identify GEO, SRA, ENA, DDBJ accessions and return the matching BioMate workflow with pre-filled params. |
browse_data | List files in a public repository (EBI, NCBI, Ensembl, UCSC) or your S3 workspace by path prefix. |
fetch_public_data | Stage a public file from EBI / NCBI / Ensembl / UCSC into the BioMate workspace and return an S3 URI. |
upload_file | Get a signed S3 PUT URL for local file uploads (>5 MB). |
query_database | UniProt / PDB / AlphaFold / NCBI / ChEMBL / KEGG lookup by accession or query. |
search_literature | Iterative depth-first search across PubMed, EuropePMC, Semantic Scholar, and OpenAlex. |
Outputs, analysis, reporting
| Tool | Description |
|---|---|
preview_file | Server-side preview of FASTA / VCF / CSV / MRC / images / PDF. |
export_report | Render methods + QC + findings as PDF or Markdown (IND/CRO-ready). |
analyze_results | AI interpretation — free-form questions about a run's outputs. |
explain_error | Root-cause diagnosis when a run fails. |
recall_memory | Retrieve 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:
- Search — Claude Code calls
search_workflow("RNA-seq differential expression DESeq2")→ BioMate returns ranked matches; top hit isnf-core/rnaseqwith DESeq2 post-processing. - 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). - 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 arun_id. - Stream —
watch_run(run_id)emitsnotifications/progressevents: FASTQC → STAR alignment → featureCounts → DESeq2 → MultiQC. Claude renders each phase inline as it completes. - Results —
get_run(run_id)returns output file list (volcano.png, degs.csv, multiqc_report.html). Claude callspreview_file("s3://…/volcano.png")and displays the plot inline. - Report —
export_report(run_id, format="pdf")→ signed S3 URL to a methods PDF with QC metrics and DEG table, ready for the lab notebook.
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:
- Search —
search_workflow("ADMET hERG CYP3A4 oral bioavailability")→ returnsadmet_prediction_suite. - Run —
run_workflow({ workflow: "admet_prediction_suite", params: { smiles_list: ["CC1=CC=C…", "CN1C=NC2…"], endpoints: ["hERG","CYP3A4","Foral"] } }). - 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). - Auto-retry — BioMate resubmits with modified SMILES (desethyl analog). Claude shows a diff card: original → revised.
- Results —
get_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:
- Slack event — Slack posts the
app_mentionevent to the BioMate bot endpoint atdev-public.biomate.ai/integrations/slack/command. The bot verifies the Slack signing secret and responds200 OKimmediately (async processing). - 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. - Data stage —
fetch_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. - Run —
run_workflow({ workflow: "nf-core/scrnaseq", … })→ queued on AWS Batch. Bot posts "Run started" card with run ID and estimated completion time. - Completion — On completion, bot calls
get_run(run_id)andanalyze_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:
- Database lookup — ChatGPT calls
query_database({ db: "UniProt", query: "CD40LG human" })→ returns UniProt entry P29965: gene aliases, function, 12 disease associations, 3 known inhibitors. - Literature search —
search_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. - Data fetch —
fetch_public_data("GTEx v10 CD40LG expression")→ stages the GTEx expression matrix into BioMate workspace. - Workflow search —
search_workflow("pathway enrichment clusterProfiler")→ returnsclusterProfiler_enrichGOworkflow. - Run —
run_workflow({ workflow: "clusterProfiler_enrichGO", params: { gene_list: top50, organism: "human", ont: "BP" } })→ AWS Batch job. - Report —
export_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:
- ADMET run —
run_workflow("admet_prediction_suite", { smiles: "CC(C)Cc1ccc…" })→ returns Foral 68%, hERG IC₅₀ 8.4 µM (pass), CYP3A4 substrate (yes). Results stored asadmet_run_id. - PBPK run —
run_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 aspbpk_run_id. - Memory —
recall_memory({ context: "PBPK similar compounds" })→ retrieves prior runs for structurally similar compounds to cite precedent in the narrative. - Narrative generation —
run_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. - Export —
export_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.
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.
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.
Go to ChatGPT → Explore GPTs → Create.
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.
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.
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.
Visit biomate.ai/integrations/slack and click Add to Slack. You'll be redirected through Slack's OAuth to authorize the bot.
After adding the bot, run /biomate connect in any channel. The bot sends a one-time link to authenticate with your BioMate account.
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
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.
Search for BioMate in the Feishu app directory, or visit biomate.ai/integrations/feishu.
Click Add to organization and complete the Feishu OAuth flow. The bot is added to your organization's workspace.
Send a direct message to the bot: /connect. It will send a one-time authentication link.
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
| Scope | Grants |
|---|---|
workflows:read | Search catalog, get specs, list runs. |
workflows:write | Start and cancel runs. |
files:read | Preview and download output files. |
files:write | Upload input files. |
account:read | Account 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.