Life-Science Research Router
This is a portable routing skill for Claude Code, Codex, Gemini CLI, and other
agents. It distills the useful pattern from Codex's Life Science Research plugin:
a small router plus many source-specific lookup recipes. Do not treat it as a
single monolithic "biomed answer engine."
Concrete source-specific recipes are nested under sources/ inside this skill.
Each is a directory with an INSTRUCTIONS.md (renamed from SKILL.md so harness
skill-discovery does not surface all 50 as top-level skills — that blows the
skill-description budget in Claude Code and Codex). When a narrow source lookup
matches the request, open only that source's sources/<source-skill>/INSTRUCTIONS.md
and run its local helper script.
Lessons From Codex's Life Science Plugin
Copy the architecture, not the package.
What is worth copying:
- Router first: classify the question into 1-3 evidence lanes before
searching.
- Normalize entities before evidence: gene/protein, variant, disease,
compound, pathway, and dataset identifiers decide which source is valid.
- Thin source recipes: each database wrapper is small, explicit, and biased
toward compact JSON summaries rather than broad dumps.
- Small windows by default: start with 5-10 records, then expand only after
seeing signal.
- Raw payload escape hatch: save large raw responses to a file/path when
needed; do not paste source dumps into the agent context.
- Freshness discipline: re-run important external lookups in long sessions
instead of trusting stale context.
- Output contract: synthesize around the user's question, then separate
database facts, literature claims, inference, caveats, and next checks.
What not to copy:
- 50 source wrappers as a default local dependency.
- Plugin-specific tool names in portable instructions.
- A monolithic answer engine that hides which sources were checked.
- Advisory behavior buried behind an MCP call that agents may forget to make.
Agent-Infra Placement Rule
Use the lowest durable layer that solves the problem:
| Need |
Best Home |
Reason |
| Domain routing and source choice |
Shared skill |
Skills are portable and use progressive disclosure. |
| Repeated structured lookup against one source |
MCP tool or CLI wrapper |
Gives typed inputs, compact outputs, and testable failures. |
| Cross-project advisory knowledge |
agent-infra MCP search or docs |
Low-frequency reference material should stay on demand. |
| Must-not-violate behavior |
Hook / always-loaded rule |
Agents cannot reliably remember to query advisory tools. |
| Cross-session learning by a specialized worker |
Custom subagent |
Skills do not keep persistent memory; subagents can. |
| External distribution bundle |
Plugin |
Distribution mechanism, not capability; skip for local use. |
For this skill, the right shape is: one visible shared router plus nested source
wrappers. Do not expose every source wrapper as a top-level skill unless a
specific agent cannot reliably discover the router and the benefit is measured.
Quick Route (start here)
Before anything else, decide which entry point fits the question shape. This
table compresses the lane + tool tables below into a single decision.
| Question shape |
First move |
| Personal genome / variant in this user's WGS |
genomics just recipes / volume reads / stable results/ artifacts (genomics-consumer MCP retired 2026-06-28) |
| Public variant annotation (ClinVar / gnomAD / AF) |
biomedical MCP variants_lookup, variants_clinvar, population_variant_frequency; or BioMCP |
| Variant regulatory effect prediction |
biomcp get variant <id> predict (AlphaGenome) |
| Gene → disease / panel / dosage |
biomedical MCP curation_*, panels_*, phenotype_*, targets_disease_associations |
| Drug / PGx / mechanism / labels |
biomedical MCP drugs_*, supplements_pharmgkb_lookup, targets_pharmacogenetics; PharmGKB skill |
| Pathway / interaction / GO |
biomedical MCP pathways_*, proteins_interactions; Reactome / STRING skills |
| Structure / domain |
UniProt / AlphaFold / RCSB skills |
| Locus → gene (GWAS, noncoding) |
locus-to-gene-mapper skill; eQTL Catalogue / Open Targets |
| Structural variants / CNV / STR / MEI |
dedicated SV lane below — none of the 50 source skills are SV-aware |
| Clinical trials |
biomedical MCP clinical_*; ClinicalTrials.gov skill |
| Literature search |
research MCP, scite, NCBI Entrez/PMC, bioRxiv skills — and always check retraction status (see Output Contract) |
Do NOT scan the full Source Index until the route above falls through.
Biomedical MCP coverage hint
If the host agent has the biomedical MCP loaded, the following sources are
already wrapped — prefer the MCP tool over opening the source skill:
HPO / OMIM / Orphanet / Monarch (phenotype_*, rare_disease_*),
PanelApp (panels_*), ClinGen gene validity + dosage (curation_*),
KEGG (pathways_kegg_*), CPIC (folded into supplements_pharmgkb_lookup /
targets_pharmacogenetics), DGIdb (via targets_*), LitVar2
(literature_variant_publications), ISBT blood groups (bloodgroups_*),
GTEx eQTL (expression_eqtl), USDA FoodData (nutrition_*).
Open the per-source skill only if (a) the MCP isn't loaded, (b) the MCP
wrapper is too coarse for the question, or (c) you need a query the wrapper
doesn't expose.
Core Rule
Start by deciding the evidence lane, normalize entities, then call the smallest
set of authoritative sources that can answer the question. Synthesize the answer
around the user's question, not around the tools.
For personal health/genomics projects, local curated state wins over fresh web
search:
- repo-owned entity pages, clinical maps, claim stores, and WGS artifacts
- typed MCP / CLI views over those artifacts
- external biomedical databases
- literature and web search
Old AI-chat recall is not evidence unless confirmed by a stronger source.
Routing Lanes
Pick 1-3 lanes. Expanding beyond that is usually a landscape review.
| Lane |
Use When |
First Sources |
| Genetics / variant interpretation (SNV/indel) |
rsID, HGVS, ClinVar, allele frequency, ACMG style questions |
local WGS/claim store if available; ClinVar; gnomAD; Ensembl; BioMCP |
| Structural variation / CNV / STR / MEI |
DEL/DUP/INV/BND, repeat-expansion locus, mobile-element insertion, large CNV |
gnomAD-SV v4 (GraphQL on same gnomad.broadinstitute.org/api, query type structural_variant); dbVar (NCBI Entrez); DGV (UCSC BigBed); STRchive (GitHub JSON, repeat-expansion loci); AnnotSV (web UI / local install); local annotsv skill for project pipeline output |
| Locus-to-gene |
GWAS locus, credible set, noncoding variant mechanism |
GWAS Catalog; Open Targets; GTEx/eQTL Catalogue; locus-to-gene mapper |
| Expression / tissue context |
tissue, cell type, disease expression, protein localization |
GTEx; Human Protein Atlas; Bgee; CELLxGENE; ENCODE |
| Pathway / network biology |
mechanism, pathway membership, protein interaction |
Reactome; STRING; QuickGO; UniProt |
| Structure / protein mechanism |
domain, structure, mutation mechanism, PDB evidence |
UniProt; AlphaFold; RCSB PDB |
| Chemistry / pharmacology |
compound, target, binding, mechanism, PGx |
ChEMBL; BindingDB; PubChem; PharmGKB; Open Targets drug info |
| Clinical / translational |
trials, cancer variant actionability, disease-target evidence |
ClinicalTrials.gov; cBioPortal; CIViC; Open Targets |
| Literature / preprints / datasets |
paper discovery, preprints, PMC, study accessions |
PubMed/Entrez; PMC; bioRxiv/medRxiv; BioStudies/ArrayExpress; PRIDE; MetaboLights |
| Omics / microbiome |
proteomics, metabolomics, microbiome public studies |
PRIDE; ProteomeXchange; MetaboLights; MGnify |
Entity Normalization
Normalize before deep retrieval.
| Entity |
Normalize With |
| Gene/protein |
HGNC symbol, Ensembl ID, NCBI Gene, UniProt accession |
| Variant |
rsID plus GRCh37/GRCh38 coordinate, ref/alt, transcript/HGVS when relevant |
| Disease/phenotype |
EFO, HPO, MONDO/OMIM/Orphanet, ICD only for billing/clinical labels |
| Drug/compound |
RxNorm for clinical drugs, ChEMBL/PubChem/ChEBI for chemistry |
| Pathway/function |
Reactome stable ID, GO term, EC/Rhea where enzymatic |
| Dataset |
accession and repository, not just study title |
If identifiers disagree, stop and resolve the conflict before interpretation.
Tool Preference By Agent Surface
Use whichever surface exists in the current agent. Do not assume all tools are
available everywhere.
| Need |
Preferred Surface |
Fallback |
| Personal corpus / current beliefs |
project MCP claim store, entity pages, ./phenome search |
grep repo docs first, then semantic search |
| Personal genome interpretation |
genomics just sample-* / results/ artifacts (no consumer MCP — producer-only boundary) |
read clinical maps / registry files |
| Variant public annotation |
BioMCP or biomedical MCP variant lookup |
MyVariant.info, ClinVar, gnomAD web/API |
| PGx |
PharmGKB/CPIC via MCP or BioMCP |
PharmGKB, CPIC guideline/API, FDA labels |
| Literature |
research MCP, scite, PubMed/PMC, paperclip where configured |
PubMed + PMC + DOI landing pages |
| Broad web-grounded biomedical search |
Exa, Perplexity, Brave |
ordinary web search with primary-source preference |
| Cross-project agent patterns |
agent-infra MCP search |
read ~/Projects/agent-infra/research/*.md |
When no MCP is exposed, use local CLIs or direct APIs. State the fallback in the
answer if it affects confidence.
Source Index
Open only the sources/<name>/INSTRUCTIONS.md you need. Each source has a local
helper script under sources/<name>/scripts/.
| Source |
Covers |
| alphafold-skill |
AlphaFold structure predictions; UniProt/sequence/annotation lookups |
| bgee-skill |
Bgee expression SPARQL — healthy wild-type tissue |
| bindingdb-skill |
BindingDB ligand-target binding (PDB/UniProt/similarity search) |
| biobankjapan-phewas-skill |
BioBank Japan PheWAS — single variant, GRCh37 resolve |
| biorxiv-skill |
bioRxiv/medRxiv preprint metadata, DOI publication linkage |
| biostudies-arrayexpress-skill |
BioStudies/ArrayExpress study text search + accession |
| cbioportal-skill |
cBioPortal — studies, profiles, mutations, clinical data, samples |
| cellxgene-skill |
CELLxGENE Discover — single-cell collection/dataset metadata |
| chebi-skill |
ChEBI 2.0 — chemical search, compound, ontology, structure |
| chembl-skill |
ChEMBL — activity, molecule, target, mechanism, text-search |
| civic-skill |
CIViC GraphQL — cancer variant interpretation evidence |
| clingen-allele-registry-skill |
ClinGen Allele Registry — canonical allele IDs (CAids) and cross-references for variant normalization |
| clinicaltrials-skill |
ClinicalTrials.gov API v2 — study search, metadata, field stats |
| clinvar-variation-skill |
ClinVar + NCBI Variation — VCV/RCV/SCV/RefSNP lookups |
| dgidb-skill |
DGIdb v5 — drug-gene interactions aggregated across 40+ sources (GraphQL) |
| efo-ontology-skill |
EFO OLS4 — search, term lookup, children/descendants |
| encode-skill |
ENCODE — object lookups, portal search, metadata |
| ensembl-skill |
Ensembl REST — lookup, overlap, xref, variation |
| epigraphdb-skill |
EpiGraphDB — ontology, literature, MR, gene-drug, support paths |
| eqtl-catalogue-skill |
eQTL Catalogue — association retrieval + metadata endpoints |
| eva-skill |
European Variation Archive — species metadata, archived variants |
| finngen-phewas-skill |
FinnGen PheWAS — single variant, GRCh38 resolve |
| genebass-gene-burden-skill |
Genebass gene burden — one Ensembl gene + one burden set |
| gnomad-graphql-skill |
gnomAD GraphQL — frequency, gene constraint, variant context (SNV/indel) |
| gnomad-sv-skill |
gnomAD-SV v4 GraphQL — population frequencies for DEL/DUP/INV/INS/BND/CPX |
| gtex-eqtl-skill |
GTEx v2 single-tissue eQTLs — GRCh38 variant |
| gwas-catalog-skill |
GWAS Catalog REST v2 — studies, associations, SNPs, EFO, loci |
| hmdb-skill |
HMDB — metabolites, proteins, diseases, pathways |
| human-protein-atlas-skill |
Human Protein Atlas — gene JSON, tissue/cell-line pages |
| ipd-skill |
IPD REST — HLA allele + cell-level metadata |
| locus-to-gene-mapper-skill |
GWAS locus→candidate gene chain (EFO→GWAS→OT L2G→eQTL→burden) |
| mavedb-skill |
MaveDB — multiplexed assay variant-effect (MAVE / DMS) score sets |
| metabolights-skill |
MetaboLights — study discovery + metabolomics metadata |
| mgnify-skill |
MGnify — microbiome studies, samples, biome metadata |
| ncbi-blast-skill |
NCBI BLAST Common URL — submit/poll/summarize BLAST jobs |
| ncbi-clinicaltables-skill |
NCBI Clinical Tables — human gene autocomplete search |
| ncbi-datasets-skill |
NCBI Datasets v2 — assembly, genome, taxonomy metadata |
| ncbi-entrez-skill |
NCBI Entrez (E-Utilities) — PubMed/Gene/Protein/PMC/GEO |
| ncbi-pmc-skill |
NCBI PMC Open Access — article/file availability |
| opentargets-skill |
Open Targets GraphQL — target/disease/drug/variant, L2G heatmaps |
| pharmgkb-skill |
PharmGKB — genes, variants, clinical annotations, guidelines |
| pride-skill |
PRIDE Archive — proteomics project discovery + metadata |
| proteomexchange-skill |
ProteomeXchange PROXI — datasets, peptides, PSMs, spectra, USI |
| pubchem-pug-skill |
PubChem PUG REST — compound properties, descriptions, assays |
| quickgo-skill |
QuickGO — GO terms, annotations, ontology traversal |
| rcsb-pdb-skill |
RCSB PDB — core metadata, Search API, FASTA |
| reactome-skill |
Reactome ContentService — pathway/event/participant/search |
| research-router-skill |
Internal router — normalize entities, fan out sub-skills, synthesize |
| rhea-skill |
Rhea — biochemical reaction search, reaction IDs |
| rnacentral-skill |
RNAcentral — RNA entries, single-entry lookup, cross-references |
| strchive-skill |
STRchive — curated disease-associated STR loci, motif, thresholds, gnomAD AF |
| string-skill |
STRING — network, interaction partners, enrichment |
| tpmi-phewas-skill |
TPMI PheWAS — single variant, GRCh38 resolve |
| ukb-topmed-phewas-skill |
UKB-TOPMed PheWAS — single variant, GRCh38 resolve |
| uniprot-skill |
UniProt REST — UniProtKB/UniRef/UniParc, FASTA stream |
Endpoints without a local wrapper yet
These have public APIs / downloads but no sources/<name>/INSTRUCTIONS.md
recipe in this skill yet. Use the endpoint directly until a wrapper lands.
| Need |
Endpoint |
Notes |
| dbVar (NCBI SV archive) |
eutils.ncbi.nlm.nih.gov Entrez against dbvar |
6M+ SVs; FTP bulk at ftp.ncbi.nlm.nih.gov/pub/dbVar/data/. Use ncbi-entrez-skill with db=dbvar. |
| AnnotSV (SV annotation) |
lbgi.fr/AnnotSV/ web UI or local Tcl install |
No REST API. Project pipelines use the local install via the annotsv skill. |
| AlphaMissense bulk scores |
Zenodo 10.5281/zenodo.8360242 |
Precomputed table, ~70M variants; download-only, no API. |
| ProteinGym DMS benchmarks |
marks.hms.harvard.edu/proteingym/ |
Precomputed; download-only. |
| Retraction / correction status of a DOI |
api.crossref.org/v1/works/{DOI} → update-to[] |
CrossRef ingests Retraction Watch since 2025-01; no auth (set mailto). Single GET, no wrapper needed. |
Retrieval Discipline (per-source)
Request-time cautions that matter more than source identity:
- ClinVar: separate star/review status from clinical significance.
- gnomAD: report population AF with build + ref/alt before any pathogenicity claim.
- Open Targets: distinguish genetics evidence from literature/mining scores.
- GWAS Catalog: carry ancestry and study context into the answer.
- GTEx / eQTL Catalogue: report tissue and variant build.
- Human Protein Atlas / Bgee: tissue expression is not causality.
- Reactome / QuickGO: verify species and evidence code where available.
- STRING: network topology = interaction context, not proof of mechanism.
- AlphaFold / RCSB PDB: check confidence; do not overstate low-confidence regions.
- ChEMBL / BindingDB: report assay type, organism, units, relation.
- PharmGKB / CPIC: attach evidence/guideline level.
- ClinicalTrials.gov: trial existence ≠ efficacy evidence.
- cBioPortal / CIViC: carry tumor type and evidence level.
- PubMed / PMC / bioRxiv: preprints are provisional. Always check retraction / correction status for any paper that drives a clinical or mechanistic claim — query
api.crossref.org/v1/works/{DOI} and inspect update-to[] for type: retraction or type: correction. Retrieval can otherwise launder retracted sources into confident answers.
- Guideline currency: when citing CPIC / ACMG / professional-society guidance, name the version and year — older guideline versions are routinely superseded (e.g., ACMG 2015 → 2023, CPIC v1 → v2 per gene). Don't anchor on a guideline number without checking PharmGKB/CPIC for the current revision.
Execution Discipline
- Write the retrieval plan in one short paragraph if the task is broad.
- Prefer direct lookups before expensive multi-step chains.
- Use small result windows first: 5-10 records, then expand only if needed.
- Save or cite raw payload paths when results are large; do not paste dumps.
- Re-run important external lookups in long sessions instead of trusting old context.
- Separate database facts, literature findings, inference, and advice.
- Attach caveats for ancestry, cohort, tissue, assay, model organism, and study design.
- Never turn mechanistic plausibility into treatment advice.
Parallelization
Parallelize only independent lanes. Keep entity normalization, scope decisions,
conflict resolution, and final synthesis with the coordinating agent.
Good parallel splits:
- genetics vs expression vs structure vs pharmacology for one gene
- multiple variants using the same output schema
- literature review vs database annotation
- clinical trials vs molecular mechanism
Bad splits:
- one narrow lookup
- tasks where later queries depend on unresolved identifiers
- broad fan-out before deciding what entity is being studied
Each worker should return:
- what it checked
- key findings
- caveats
- tools/sources used
- whether the result is database fact, literature claim, or inference
Output Contract
Default answer shape:
- direct answer or working conclusion
- evidence by lane
- conflicts or missing evidence
- next useful lookup or validation step
For personal health/genomics answers, add:
- what local artifact was used
- whether external evidence updates or weakens the local state
- whether the conclusion is action-grade, research-only, or null
For any literature-anchored claim, also surface:
- publication year + retraction/correction status (CrossRef
update-to[])
- guideline version where applicable (ACMG / CPIC / professional society)
- whether the cited evidence is on current frontier models when the
claim is about LLM behavior — pre-frontier findings (GPT-3.5/4, Claude 3,
Gemini 1.x) don't transfer unless the result is scale-independent.
When To Stop
Stop early when:
- identifier normalization fails
- local curated docs already contain a newer reviewed answer
- external evidence is only associative and the user's question asks for causality
- the remaining sources are lower tier than what has already been checked
- the likely next step is a repo-owned contract update, not more searching
1---2name: life-science-research3description: Use when: biomedical source lookup (ClinVar, gnomAD, Ensembl, PubMed, OpenTargets…). Route APIs before synthesis. NOT general memos (/research) unless life-science topic.4---56# Life-Science Research Router78This is a portable routing skill for Claude Code, Codex, Gemini CLI, and other9agents. It distills the useful pattern from Codex's Life Science Research plugin:10a small router plus many source-specific lookup recipes. Do not treat it as a11single monolithic "biomed answer engine."1213Concrete source-specific recipes are nested under `sources/` inside this skill.14Each is a directory with an `INSTRUCTIONS.md` (renamed from SKILL.md so harness15skill-discovery does not surface all 50 as top-level skills — that blows the16skill-description budget in Claude Code and Codex). When a narrow source lookup17matches the request, open only that source's `sources/<source-skill>/INSTRUCTIONS.md`18and run its local helper script.1920## Lessons From Codex's Life Science Plugin2122Copy the architecture, not the package.2324What is worth copying:2526- **Router first:** classify the question into 1-3 evidence lanes before27 searching.28- **Normalize entities before evidence:** gene/protein, variant, disease,29 compound, pathway, and dataset identifiers decide which source is valid.30- **Thin source recipes:** each database wrapper is small, explicit, and biased31 toward compact JSON summaries rather than broad dumps.32- **Small windows by default:** start with 5-10 records, then expand only after33 seeing signal.34- **Raw payload escape hatch:** save large raw responses to a file/path when35 needed; do not paste source dumps into the agent context.36- **Freshness discipline:** re-run important external lookups in long sessions37 instead of trusting stale context.38- **Output contract:** synthesize around the user's question, then separate39 database facts, literature claims, inference, caveats, and next checks.4041What not to copy:4243- 50 source wrappers as a default local dependency.44- Plugin-specific tool names in portable instructions.45- A monolithic answer engine that hides which sources were checked.46- Advisory behavior buried behind an MCP call that agents may forget to make.4748## Agent-Infra Placement Rule4950Use the lowest durable layer that solves the problem:5152| Need | Best Home | Reason |53|---|---|---|54| Domain routing and source choice | Shared skill | Skills are portable and use progressive disclosure. |55| Repeated structured lookup against one source | MCP tool or CLI wrapper | Gives typed inputs, compact outputs, and testable failures. |56| Cross-project advisory knowledge | agent-infra MCP search or docs | Low-frequency reference material should stay on demand. |57| Must-not-violate behavior | Hook / always-loaded rule | Agents cannot reliably remember to query advisory tools. |58| Cross-session learning by a specialized worker | Custom subagent | Skills do not keep persistent memory; subagents can. |59| External distribution bundle | Plugin | Distribution mechanism, not capability; skip for local use. |6061For this skill, the right shape is: one visible shared router plus nested source62wrappers. Do not expose every source wrapper as a top-level skill unless a63specific agent cannot reliably discover the router and the benefit is measured.6465## Quick Route (start here)6667Before anything else, decide which entry point fits the question shape. This68table compresses the lane + tool tables below into a single decision.6970| Question shape | First move |71|---|---|72| Personal genome / variant in this user's WGS | genomics `just` recipes / volume reads / stable `results/` artifacts (genomics-consumer MCP retired 2026-06-28) |73| Public variant annotation (ClinVar / gnomAD / AF) | `biomedical` MCP `variants_lookup`, `variants_clinvar`, `population_variant_frequency`; or BioMCP |74| Variant regulatory effect prediction | `biomcp get variant <id> predict` (AlphaGenome) |75| Gene → disease / panel / dosage | `biomedical` MCP `curation_*`, `panels_*`, `phenotype_*`, `targets_disease_associations` |76| Drug / PGx / mechanism / labels | `biomedical` MCP `drugs_*`, `supplements_pharmgkb_lookup`, `targets_pharmacogenetics`; PharmGKB skill |77| Pathway / interaction / GO | `biomedical` MCP `pathways_*`, `proteins_interactions`; Reactome / STRING skills |78| Structure / domain | UniProt / AlphaFold / RCSB skills |79| Locus → gene (GWAS, noncoding) | `locus-to-gene-mapper` skill; eQTL Catalogue / Open Targets |80| Structural variants / CNV / STR / MEI | dedicated SV lane below — none of the 50 source skills are SV-aware |81| Clinical trials | `biomedical` MCP `clinical_*`; ClinicalTrials.gov skill |82| Literature search | `research` MCP, scite, NCBI Entrez/PMC, bioRxiv skills — and **always check retraction status (see Output Contract)** |8384Do NOT scan the full Source Index until the route above falls through.8586## Biomedical MCP coverage hint8788If the host agent has the `biomedical` MCP loaded, the following sources are89already wrapped — prefer the MCP tool over opening the source skill:90HPO / OMIM / Orphanet / Monarch (`phenotype_*`, `rare_disease_*`),91PanelApp (`panels_*`), ClinGen gene validity + dosage (`curation_*`),92KEGG (`pathways_kegg_*`), CPIC (folded into `supplements_pharmgkb_lookup` /93`targets_pharmacogenetics`), DGIdb (via `targets_*`), LitVar294(`literature_variant_publications`), ISBT blood groups (`bloodgroups_*`),95GTEx eQTL (`expression_eqtl`), USDA FoodData (`nutrition_*`).96Open the per-source skill only if (a) the MCP isn't loaded, (b) the MCP97wrapper is too coarse for the question, or (c) you need a query the wrapper98doesn't expose.99100## Core Rule101102Start by deciding the evidence lane, normalize entities, then call the smallest103set of authoritative sources that can answer the question. Synthesize the answer104around the user's question, not around the tools.105106For personal health/genomics projects, local curated state wins over fresh web107search:1081091. repo-owned entity pages, clinical maps, claim stores, and WGS artifacts1102. typed MCP / CLI views over those artifacts1113. external biomedical databases1124. literature and web search113114Old AI-chat recall is not evidence unless confirmed by a stronger source.115116## Routing Lanes117118Pick 1-3 lanes. Expanding beyond that is usually a landscape review.119120| Lane | Use When | First Sources |121|---|---|---|122| Genetics / variant interpretation (SNV/indel) | rsID, HGVS, ClinVar, allele frequency, ACMG style questions | local WGS/claim store if available; ClinVar; gnomAD; Ensembl; BioMCP |123| Structural variation / CNV / STR / MEI | DEL/DUP/INV/BND, repeat-expansion locus, mobile-element insertion, large CNV | gnomAD-SV v4 (GraphQL on same `gnomad.broadinstitute.org/api`, query type `structural_variant`); dbVar (NCBI Entrez); DGV (UCSC BigBed); STRchive (GitHub JSON, repeat-expansion loci); AnnotSV (web UI / local install); local `annotsv` skill for project pipeline output |124| Locus-to-gene | GWAS locus, credible set, noncoding variant mechanism | GWAS Catalog; Open Targets; GTEx/eQTL Catalogue; locus-to-gene mapper |125| Expression / tissue context | tissue, cell type, disease expression, protein localization | GTEx; Human Protein Atlas; Bgee; CELLxGENE; ENCODE |126| Pathway / network biology | mechanism, pathway membership, protein interaction | Reactome; STRING; QuickGO; UniProt |127| Structure / protein mechanism | domain, structure, mutation mechanism, PDB evidence | UniProt; AlphaFold; RCSB PDB |128| Chemistry / pharmacology | compound, target, binding, mechanism, PGx | ChEMBL; BindingDB; PubChem; PharmGKB; Open Targets drug info |129| Clinical / translational | trials, cancer variant actionability, disease-target evidence | ClinicalTrials.gov; cBioPortal; CIViC; Open Targets |130| Literature / preprints / datasets | paper discovery, preprints, PMC, study accessions | PubMed/Entrez; PMC; bioRxiv/medRxiv; BioStudies/ArrayExpress; PRIDE; MetaboLights |131| Omics / microbiome | proteomics, metabolomics, microbiome public studies | PRIDE; ProteomeXchange; MetaboLights; MGnify |132133## Entity Normalization134135Normalize before deep retrieval.136137| Entity | Normalize With |138|---|---|139| Gene/protein | HGNC symbol, Ensembl ID, NCBI Gene, UniProt accession |140| Variant | rsID plus GRCh37/GRCh38 coordinate, ref/alt, transcript/HGVS when relevant |141| Disease/phenotype | EFO, HPO, MONDO/OMIM/Orphanet, ICD only for billing/clinical labels |142| Drug/compound | RxNorm for clinical drugs, ChEMBL/PubChem/ChEBI for chemistry |143| Pathway/function | Reactome stable ID, GO term, EC/Rhea where enzymatic |144| Dataset | accession and repository, not just study title |145146If identifiers disagree, stop and resolve the conflict before interpretation.147148## Tool Preference By Agent Surface149150Use whichever surface exists in the current agent. Do not assume all tools are151available everywhere.152153| Need | Preferred Surface | Fallback |154|---|---|---|155| Personal corpus / current beliefs | project MCP claim store, entity pages, `./phenome search` | grep repo docs first, then semantic search |156| Personal genome interpretation | genomics `just sample-*` / `results/` artifacts (no consumer MCP — producer-only boundary) | read clinical maps / registry files |157| Variant public annotation | BioMCP or biomedical MCP variant lookup | MyVariant.info, ClinVar, gnomAD web/API |158| PGx | PharmGKB/CPIC via MCP or BioMCP | PharmGKB, CPIC guideline/API, FDA labels |159| Literature | research MCP, scite, PubMed/PMC, paperclip where configured | PubMed + PMC + DOI landing pages |160| Broad web-grounded biomedical search | Exa, Perplexity, Brave | ordinary web search with primary-source preference |161| Cross-project agent patterns | agent-infra MCP `search` | read `~/Projects/agent-infra/research/*.md` |162163When no MCP is exposed, use local CLIs or direct APIs. State the fallback in the164answer if it affects confidence.165166## Source Index167168Open only the `sources/<name>/INSTRUCTIONS.md` you need. Each source has a local169helper script under `sources/<name>/scripts/`.170171| Source | Covers |172|---|---|173| alphafold-skill | AlphaFold structure predictions; UniProt/sequence/annotation lookups |174| bgee-skill | Bgee expression SPARQL — healthy wild-type tissue |175| bindingdb-skill | BindingDB ligand-target binding (PDB/UniProt/similarity search) |176| biobankjapan-phewas-skill | BioBank Japan PheWAS — single variant, GRCh37 resolve |177| biorxiv-skill | bioRxiv/medRxiv preprint metadata, DOI publication linkage |178| biostudies-arrayexpress-skill | BioStudies/ArrayExpress study text search + accession |179| cbioportal-skill | cBioPortal — studies, profiles, mutations, clinical data, samples |180| cellxgene-skill | CELLxGENE Discover — single-cell collection/dataset metadata |181| chebi-skill | ChEBI 2.0 — chemical search, compound, ontology, structure |182| chembl-skill | ChEMBL — activity, molecule, target, mechanism, text-search |183| civic-skill | CIViC GraphQL — cancer variant interpretation evidence |184| clingen-allele-registry-skill | ClinGen Allele Registry — canonical allele IDs (CAids) and cross-references for variant normalization |185| clinicaltrials-skill | ClinicalTrials.gov API v2 — study search, metadata, field stats |186| clinvar-variation-skill | ClinVar + NCBI Variation — VCV/RCV/SCV/RefSNP lookups |187| dgidb-skill | DGIdb v5 — drug-gene interactions aggregated across 40+ sources (GraphQL) |188| efo-ontology-skill | EFO OLS4 — search, term lookup, children/descendants |189| encode-skill | ENCODE — object lookups, portal search, metadata |190| ensembl-skill | Ensembl REST — lookup, overlap, xref, variation |191| epigraphdb-skill | EpiGraphDB — ontology, literature, MR, gene-drug, support paths |192| eqtl-catalogue-skill | eQTL Catalogue — association retrieval + metadata endpoints |193| eva-skill | European Variation Archive — species metadata, archived variants |194| finngen-phewas-skill | FinnGen PheWAS — single variant, GRCh38 resolve |195| genebass-gene-burden-skill | Genebass gene burden — one Ensembl gene + one burden set |196| gnomad-graphql-skill | gnomAD GraphQL — frequency, gene constraint, variant context (SNV/indel) |197| gnomad-sv-skill | gnomAD-SV v4 GraphQL — population frequencies for DEL/DUP/INV/INS/BND/CPX |198| gtex-eqtl-skill | GTEx v2 single-tissue eQTLs — GRCh38 variant |199| gwas-catalog-skill | GWAS Catalog REST v2 — studies, associations, SNPs, EFO, loci |200| hmdb-skill | HMDB — metabolites, proteins, diseases, pathways |201| human-protein-atlas-skill | Human Protein Atlas — gene JSON, tissue/cell-line pages |202| ipd-skill | IPD REST — HLA allele + cell-level metadata |203| locus-to-gene-mapper-skill | GWAS locus→candidate gene chain (EFO→GWAS→OT L2G→eQTL→burden) |204| mavedb-skill | MaveDB — multiplexed assay variant-effect (MAVE / DMS) score sets |205| metabolights-skill | MetaboLights — study discovery + metabolomics metadata |206| mgnify-skill | MGnify — microbiome studies, samples, biome metadata |207| ncbi-blast-skill | NCBI BLAST Common URL — submit/poll/summarize BLAST jobs |208| ncbi-clinicaltables-skill | NCBI Clinical Tables — human gene autocomplete search |209| ncbi-datasets-skill | NCBI Datasets v2 — assembly, genome, taxonomy metadata |210| ncbi-entrez-skill | NCBI Entrez (E-Utilities) — PubMed/Gene/Protein/PMC/GEO |211| ncbi-pmc-skill | NCBI PMC Open Access — article/file availability |212| opentargets-skill | Open Targets GraphQL — target/disease/drug/variant, L2G heatmaps |213| pharmgkb-skill | PharmGKB — genes, variants, clinical annotations, guidelines |214| pride-skill | PRIDE Archive — proteomics project discovery + metadata |215| proteomexchange-skill | ProteomeXchange PROXI — datasets, peptides, PSMs, spectra, USI |216| pubchem-pug-skill | PubChem PUG REST — compound properties, descriptions, assays |217| quickgo-skill | QuickGO — GO terms, annotations, ontology traversal |218| rcsb-pdb-skill | RCSB PDB — core metadata, Search API, FASTA |219| reactome-skill | Reactome ContentService — pathway/event/participant/search |220| research-router-skill | Internal router — normalize entities, fan out sub-skills, synthesize |221| rhea-skill | Rhea — biochemical reaction search, reaction IDs |222| rnacentral-skill | RNAcentral — RNA entries, single-entry lookup, cross-references |223| strchive-skill | STRchive — curated disease-associated STR loci, motif, thresholds, gnomAD AF |224| string-skill | STRING — network, interaction partners, enrichment |225| tpmi-phewas-skill | TPMI PheWAS — single variant, GRCh38 resolve |226| ukb-topmed-phewas-skill | UKB-TOPMed PheWAS — single variant, GRCh38 resolve |227| uniprot-skill | UniProt REST — UniProtKB/UniRef/UniParc, FASTA stream |228229### Endpoints without a local wrapper yet230231These have public APIs / downloads but no `sources/<name>/INSTRUCTIONS.md`232recipe in this skill yet. Use the endpoint directly until a wrapper lands.233234| Need | Endpoint | Notes |235|---|---|---|236| dbVar (NCBI SV archive) | `eutils.ncbi.nlm.nih.gov` Entrez against `dbvar` | 6M+ SVs; FTP bulk at `ftp.ncbi.nlm.nih.gov/pub/dbVar/data/`. Use `ncbi-entrez-skill` with `db=dbvar`. |237| AnnotSV (SV annotation) | `lbgi.fr/AnnotSV/` web UI or local Tcl install | No REST API. Project pipelines use the local install via the `annotsv` skill. |238| AlphaMissense bulk scores | Zenodo `10.5281/zenodo.8360242` | Precomputed table, ~70M variants; download-only, no API. |239| ProteinGym DMS benchmarks | `marks.hms.harvard.edu/proteingym/` | Precomputed; download-only. |240| Retraction / correction status of a DOI | `api.crossref.org/v1/works/{DOI}` → `update-to[]` | CrossRef ingests Retraction Watch since 2025-01; no auth (set `mailto`). Single GET, no wrapper needed. |241242### Retrieval Discipline (per-source)243244Request-time cautions that matter more than source identity:245246- **ClinVar:** separate star/review status from clinical significance.247- **gnomAD:** report population AF with build + ref/alt *before* any pathogenicity claim.248- **Open Targets:** distinguish genetics evidence from literature/mining scores.249- **GWAS Catalog:** carry ancestry and study context into the answer.250- **GTEx / eQTL Catalogue:** report tissue and variant build.251- **Human Protein Atlas / Bgee:** tissue expression is not causality.252- **Reactome / QuickGO:** verify species and evidence code where available.253- **STRING:** network topology = interaction context, not proof of mechanism.254- **AlphaFold / RCSB PDB:** check confidence; do not overstate low-confidence regions.255- **ChEMBL / BindingDB:** report assay type, organism, units, relation.256- **PharmGKB / CPIC:** attach evidence/guideline level.257- **ClinicalTrials.gov:** trial existence ≠ efficacy evidence.258- **cBioPortal / CIViC:** carry tumor type and evidence level.259- **PubMed / PMC / bioRxiv:** preprints are provisional. **Always check retraction / correction status** for any paper that drives a clinical or mechanistic claim — query `api.crossref.org/v1/works/{DOI}` and inspect `update-to[]` for `type: retraction` or `type: correction`. Retrieval can otherwise launder retracted sources into confident answers.260- **Guideline currency:** when citing CPIC / ACMG / professional-society guidance, name the version and year — older guideline versions are routinely superseded (e.g., ACMG 2015 → 2023, CPIC v1 → v2 per gene). Don't anchor on a guideline number without checking PharmGKB/CPIC for the current revision.261262## Execution Discipline2632641. Write the retrieval plan in one short paragraph if the task is broad.2652. Prefer direct lookups before expensive multi-step chains.2663. Use small result windows first: 5-10 records, then expand only if needed.2674. Save or cite raw payload paths when results are large; do not paste dumps.2685. Re-run important external lookups in long sessions instead of trusting old context.2696. Separate database facts, literature findings, inference, and advice.2707. Attach caveats for ancestry, cohort, tissue, assay, model organism, and study design.2718. Never turn mechanistic plausibility into treatment advice.272273## Parallelization274275Parallelize only independent lanes. Keep entity normalization, scope decisions,276conflict resolution, and final synthesis with the coordinating agent.277278Good parallel splits:279280- genetics vs expression vs structure vs pharmacology for one gene281- multiple variants using the same output schema282- literature review vs database annotation283- clinical trials vs molecular mechanism284285Bad splits:286287- one narrow lookup288- tasks where later queries depend on unresolved identifiers289- broad fan-out before deciding what entity is being studied290291Each worker should return:292293- what it checked294- key findings295- caveats296- tools/sources used297- whether the result is database fact, literature claim, or inference298299## Output Contract300301Default answer shape:3023031. direct answer or working conclusion3042. evidence by lane3053. conflicts or missing evidence3064. next useful lookup or validation step307308For personal health/genomics answers, add:309310- what local artifact was used311- whether external evidence updates or weakens the local state312- whether the conclusion is action-grade, research-only, or null313314For any literature-anchored claim, also surface:315316- publication year + retraction/correction status (CrossRef `update-to[]`)317- guideline version where applicable (ACMG / CPIC / professional society)318- whether the cited evidence is on **current frontier models** when the319 claim is about LLM behavior — pre-frontier findings (GPT-3.5/4, Claude 3,320 Gemini 1.x) don't transfer unless the result is scale-independent.321322## When To Stop323324Stop early when:325326- identifier normalization fails327- local curated docs already contain a newer reviewed answer328- external evidence is only associative and the user's question asks for causality329- the remaining sources are lower tier than what has already been checked330- the likely next step is a repo-owned contract update, not more searching