database-lookup

SkillDatabases & data

Organism/species matters. Most biology databases cover multiple organisms. If the user's query is about a specific organism, pass it explicitly — don't assume human. Common patterns: Ensembl uses {species} in the URL path (e.g.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the database-lookup skill

About this capability

Zorai is a persistent, multi-agent, auditable, learning execution platform where the daemon owns work, memory, approvals, tools, and long-running goals.

What this skill tells your AI

The instructions your AI receives, as published by mkurman/zorai in skills/scientific-skills/database-lookup/SKILL.md and read by ahel’s review.


name: database-lookup description: Search 78 public scientific, biomedical, materials science, and economic databases via their REST APIs and return structured JSON results. Covers physics/astronomy (NASA, NIST, SDSS, SIMBAD, Exoplanet Archive), earth/environment (USGS, NOAA, EPA, OpenWeatherMap), chemistry/drugs (PubChem, ChEMBL, DrugBank, FDA, KEGG, DailyMed, ZINC, BindingDB), materials science (Materials Project, COD), biology/genomics (Reactome, BRENDA, UniProt, STRING, Ensembl, NCBI Gene, GEO, GTEx, PDB, AlphaFold, InterPro, ChEBI, BioGRID, Gene Ontology, QuickGO, NCBI Protein/Taxonomy, dbSNP, SRA, ENA, gnomAD, UCSC Genome, ENCODE, JASPAR, MouseMine, PRIDE, LINCS L1000, Human Protein Atlas, Human Cell Atlas, RummaGEO, Metabolomics Workbench, EMDB, Addgene), disease/clinical (COSMIC, Open Targets, ClinPGx, ClinicalTrials.gov, OMIM, ClinVar, GDC/TCGA, cBioPortal, DisGeNET, GWAS Catalog, Monarch, HPO), regulatory (FDA, USPTO, SEC EDGAR), economics/finance (FRED, BEA, BLS, Federal Reserve, World Bank, ECB, US Treasury, Alpha Vantage, Data Commons), and demographics (US Census, Eurostat, WHO). Use this skill whenever the user wants to look up compounds, drugs, proteins, genes, pathways, enzymes, gene expression, variants, clinical trials, patents, SEC filings, economic indicators, crystal structures, astronomical objects, earthquakes, weather, or any data from a public database API. Also trigger when the user mentions any database by name or asks about molecular properties, drug-target interactions, binding affinities, protein interactions, pathway membership, pharmacogenomics, economic time series, materials properties, commercially available compounds, virtual screening, compound purchasability, chemical libraries, building blocks, cancer genomics, somatic mutations, tumor mutation profiles, nucleotide sequences, genome assemblies, sequencing reads, ENA accessions, INSDC data, or wants to cross-reference entities across sources. tags: [scientific-skills, database-lookup, api, cheminformatics, clinical, finance, react, database, bioinformatics, search, compliance] metadata: skill-author: K-Dense Inc. ---|---| | Near-Earth objects, asteroids | NASA (NeoWs) | — | | Mars rover images | NASA (Mars Rover Photos) | — | | Exoplanets, orbital parameters | NASA Exoplanet Archive | — | | Astronomical objects by name/coordinates | SIMBAD | SDSS | | Galaxy/star spectra, photometry | SDSS | SIMBAD | | Physical constants | NIST | — | | Atomic spectra, spectral lines | NIST (ASD) | — |

Earth & Environmental Sciences

User is asking about...Primary database(s)Also consider
Earthquakes, seismic eventsUSGS Earthquakes
Water data, streamflow, groundwaterUSGS Water Services
Weather (current, forecast, historical)OpenWeatherMapNOAA
Climate data, historical weather stationsNOAA (CDO)
Air quality, toxic releasesEPA (Envirofacts)

Chemistry & Drugs

User is asking about...Primary database(s)Also consider
Chemical compounds, moleculesPubChemChEMBL
Molecular properties (weight, formula, SMILES)PubChem
Drug synonyms, CAS numbersPubChem (synonyms)DrugBank
Bioactivity data, IC50, binding assaysChEMBLBindingDB, PubChem
Drug binding affinities (Ki, IC50, Kd)ChEMBL, BindingDBPubChem
Drug-target interactionsChEMBL, DrugBankBindingDB, Open Targets
Ligands for a protein target (by UniProt)BindingDBChEMBL
Target identification from compound structureBindingDB (SMILES similarity)ChEMBL
Drug labels, adverse events, recallsFDA (OpenFDA)DailyMed
Drug labels (structured product labels)DailyMedFDA (OpenFDA)
Drug pharmacology, indicationsDrugBankFDA
Chemical cross-referencingPubChem (xrefs)ChEMBL
Commercially available compounds for screeningZINCPubChem
Similarity/substructure search (purchasable)ZINCPubChem, ChEMBL
Drug-like compound libraries, building blocksZINC
FDA-approved drug structuresZINC (fda subset)PubChem, FDA
Compound purchasability, vendor catalogsZINC

Materials Science & Crystallography

User is asking about...Primary database(s)Also consider
Materials by formula or elementsMaterials ProjectCOD
Band gap, electronic structureMaterials Project
Crystal structures, CIF filesCODMaterials Project
Elastic/mechanical propertiesMaterials Project
Formation energy, thermodynamicsMaterials Project
Cell parameters, space groupsCODMaterials Project

Biology & Genomics

User is asking about...Primary database(s)Also consider
Biological pathwaysReactome, KEGG
What pathways a gene/protein is inReactome (mapping), KEGG
Enzyme kinetics, catalytic activityBRENDAKEGG
Metabolomics studies, metabolite profilesMetabolomics WorkbenchPubChem
m/z or exact mass lookupMetabolomics Workbench (moverz/exactmass)PubChem
Protein sequence, function, annotationUniProtEnsembl
Protein-protein interactionsSTRINGBioGRID
Gene information, genomic locationNCBI GeneEnsembl
Genome sequences, variants, transcriptsEnsemblNCBI Gene
Gene expression datasetsGEO (NCBI E-utilities)
Gene expression across tissuesGTExHuman Protein Atlas
Gene expression signatures (CMap/L1000)LINCS L1000GEO
Gene set enrichment vs GEORummaGEOGEO
Protein sequences (NCBI)NCBI ProteinUniProt
Taxonomic classificationNCBI Taxonomy
SNP/variant data (dbSNP)dbSNPClinVar, gnomAD
Population variant frequenciesgnomADdbSNP
Sequencing run metadataSRAENA, GEO
Nucleotide sequences (European archive)ENASRA, NCBI Gene
Genome assemblies, raw reads (European)ENASRA, Ensembl
Cross-references from sequence accessionsENA (xref)NCBI Gene, UniProt
Genome annotations, tracksUCSC Genome BrowserEnsembl
3D protein structures (experimental)PDB (RCSB)EMDB
3D protein structures (predicted)AlphaFold DBPDB
EM maps, cryo-EM structuresEMDBPDB
Protein families, domainsInterProUniProt
Chemical entities (biological)ChEBIPubChem
Protein/genetic interactionsBioGRIDSTRING
Gene function annotations (GO terms)QuickGOGene Ontology
Regulatory elements, ChIP-seq, ATAC-seqENCODE
TF binding profiles/motifsJASPARENCODE
Protein expression across tissuesHuman Protein AtlasUniProt
Single-cell atlas projectsHuman Cell Atlas
Proteomics datasetsPRIDE
Mouse gene dataMouseMineNCBI Gene
Plasmid repositoryAddgene

Organism/species matters. Most biology databases cover multiple organisms. If the user's query is about a specific organism, pass it explicitly — don't assume human. Common patterns: Ensembl uses {species} in the URL path (e.g. homo_sapiens), STRING/BioGRID/QuickGO use NCBI taxon IDs (species=9606 for human, 10090 for mouse), UniProt uses organism_id:9606 in search queries, KEGG uses organism codes (hsa, mmu). GTEx and Human Protein Atlas are human-only. Check the reference file for each database's specific parameter.

Disease & Clinical

User is asking about...Primary database(s)Also consider
Somatic mutations in cancerCOSMICOpen Targets, cBioPortal
Cancer genomics (TCGA)GDC (TCGA)COSMIC, cBioPortal
Cancer study mutations, CNA, expressioncBioPortalGDC (TCGA), COSMIC
Tumor clinical data (survival, staging)cBioPortalGDC (TCGA)
Drug-target-disease associationsOpen TargetsChEMBL
Gene-disease associationsDisGeNETOpen Targets, Monarch
Mendelian disease-gene relationshipsOMIMNCBI Gene
Variant clinical significanceClinVar (NCBI)OMIM
GWAS SNP-trait associationsGWAS Catalog
Disease-phenotype-gene linksMonarch InitiativeHPO
Phenotype ontology, HPO termsHPOMonarch
Pharmacogenomics, drug-gene interactionsClinPGx (PharmGKB)DrugBank
Clinical trials for a drug/diseaseClinicalTrials.govFDA
Disease-related expression dataGEOOpen Targets

Patents & Regulatory

User is asking about...Primary database(s)Also consider
Patents by keyword or technologyUSPTO (PatentsView)
Patents by inventor or assigneeUSPTO (PatentsView)
Patent prosecution statusUSPTO (PEDS)
Trademark lookupUSPTO (TSDR)
SEC company filings, 10-K, 10-QSEC EDGAR

Economics & Finance

User is asking about...Primary database(s)Also consider
US economic time series (GDP, CPI, rates)FREDBEA
Employment, wages, labor statisticsBLSFRED
GDP, national accountsBEAFRED, World Bank
International development indicatorsWorld BankFRED
Interest rates, money supplyFederal ReserveFRED
Euro exchange rates, ECB monetary statsECB
US debt, yield curves, fiscal dataUS TreasuryFRED
Stock prices, forex, cryptoAlpha Vantage
Statistical data across many topicsData Commons

Social Sciences & Demographics

User is asking about...Primary database(s)Also consider
US population, housing, income dataUS CensusData Commons
EU statistics (economy, trade, health)EurostatWorld Bank
Global health indicators (mortality, disease)WHO GHOWorld Bank

Cross-domain queries

User is asking about...Primary database(s)Also consider
Everything about a compoundPubChem + ChEMBL + DrugBankBindingDB, ZINC, Reactome, FDA
Everything about a geneNCBI Gene + UniProt + EnsemblReactome, STRING, COSMIC, cBioPortal, ENA
Everything about a variantdbSNP + ClinVar + gnomADGWAS Catalog, COSMIC, cBioPortal
Drug target pathwaysChEMBL + ReactomeOpen Targets, GEO
Prior art for a chemical inventionUSPTO + PubChemChEMBL
Everything about a materialMaterials Project + COD
US economic overviewFRED + BLS + BEAFederal Reserve

When the user's query spans multiple domains (e.g. "what do we know about aspirin" or "find everything about BRCA1"), query all relevant databases in parallel.

Common Identifier Formats

Different databases use different identifier systems. If a query fails, the identifier format may be wrong. Here's a quick reference:

IdentifierFormatExampleUsed by
UniProt accessionP##### or Q#####P04637 (TP53)UniProt, STRING, AlphaFold, Reactome mapping
Ensembl gene IDENSG###########ENSG00000141510Ensembl, Open Targets, GTEx
NCBI Gene IDInteger7157 (TP53)NCBI Gene, GEO, DisGeNET, HPO
HGNC IDHGNC:#####HGNC:11998Monarch
PubChem CIDInteger2244 (aspirin)PubChem
ZINC IDZINC + 15 digitsZINC000000000053 (aspirin)ZINC
ENA ProjectPRJEB + digitsPRJEB40665ENA
ENA RunERR + digitsERR1234567ENA
ENA ExperimentERX + digitsERX1234567ENA
ENA SampleERS + digitsERS1234567ENA
ChEMBL IDCHEMBL####CHEMBL25 (aspirin)ChEMBL
Reactome stable IDR-HSA-######R-HSA-109581Reactome
HP termHP:#######HP:0001250 (seizure)HPO (URL-encode colon as %3A)
MONDO diseaseMONDO:#######MONDO:0007947Monarch
GO termGO:#######GO:0008150QuickGO, Gene Ontology
dbSNP rsIDrs########rs334dbSNP, GWAS Catalog, gnomAD
GENCODE IDENSG###.## (versioned)ENSG00000139618.17GTEx (requires version suffix)

Identifier Resolution

When a database doesn't recognize an identifier, convert it using these workflows:

Genes: Symbol (e.g. "TP53") → look up in NCBI Gene (esearch by symbol) → get NCBI Gene ID → convert to Ensembl ID via Ensembl /xrefs/symbol/homo_sapiens/{symbol}, or to UniProt accession via UniProt search (gene_exact:{symbol} AND organism_id:9606).

Compounds: Name → PubChem /compound/name/{name}/cids/JSON → get CID → convert to ChEMBL ID via UniChem or ChEMBL molecule search. If name lookup fails, try SMILES, InChIKey, or CAS number.

Variants: rsID (e.g. "rs334") works directly in dbSNP, ClinVar, GWAS Catalog, gnomAD. For genomic coordinates, use Ensembl VEP to get consequence annotations and linked rsIDs.

Diseases: Name → Open Targets or Monarch search → get EFO or MONDO ID → use in downstream queries.

POST-Only APIs

These databases require HTTP POST and will not work with WebFetch (GET-only). Use curl via your platform's shell tool instead:

DatabaseWhy POST neededExample
Open TargetsGraphQL endpointcurl -X POST -H "Content-Type: application/json" -d '{"query":"..."}' https://api.platform.opentargets.org/api/v4/graphql
gnomADGraphQL endpointcurl -X POST -H "Content-Type: application/json" -d '{"query":"..."}' https://gnomad.broadinstitute.org/api
RummaGEOPOST-only enrichmentcurl -X POST -H "Content-Type: application/json" -d '{"genes":["..."]}' https://rummageo.com/api/enrich
GDC/TCGAComplex filter queriescurl -X POST -H "Content-Type: application/json" -d '{"filters":...}' https://api.gdc.cancer.gov/ssms
SEC EDGARRequires User-Agent headercurl -H "User-Agent: YourApp you@email.com" https://efts.sec.gov/LATEST/search-index?q=...

API Keys and Access Restrictions

Some databases require API keys or have access restrictions. When an API key is needed:

  1. Check the current environment first — the key may already be exported as a shell environment variable (e.g. $FRED_API_KEY). Read it directly from the environment.
  2. Fall back to .env — if the variable isn't in the environment, check the .env file in the current working directory.
  3. If neither has it — proceed without the key (most APIs still work at lower rate limits) and tell the user which key is missing and how to get one.

Databases requiring API keys (free registration)

DatabaseEnv VariableRegistration URL
FREDFRED_API_KEYhttps://fred.stlouisfed.org/docs/api/api_key.html
BEABEA_API_KEYhttps://apps.bea.gov/API/signup/
BLSBLS_API_KEYhttps://data.bls.gov/registrationEngine/
NCBI (GEO, Gene)NCBI_API_KEYhttps://www.ncbi.nlm.nih.gov/account/settings/
OpenFDAOPENFDA_API_KEYhttps://open.fda.gov/apis/authentication/
USPTO (PatentsView)PATENTSVIEW_API_KEYhttps://patentsview.org/apis/keyrequest
Data CommonsDATACOMMONS_API_KEYGoogle Cloud Console
Materials ProjectMP_API_KEYhttps://materialsproject.org (free account)
NASANASA_API_KEYhttps://api.nasa.gov (free, DEMO_KEY available)
NOAA (CDO)NOAA_API_KEYhttps://www.ncdc.noaa.gov/cdo-web/token
OpenWeatherMapOPENWEATHERMAP_API_KEYhttps://openweathermap.org/appid
OMIMOMIM_API_KEYhttps://omim.org/api (free academic)
BioGRIDBIOGRID_API_KEYhttps://webservice.thebiogrid.org (free)
Alpha VantageALPHAVANTAGE_API_KEYhttps://www.alphavantage.co/support/#api-key
US CensusCENSUS_API_KEYhttps://api.census.gov/data/key_signup.html
DisGeNETDISGENET_API_KEYhttps://www.disgenet.org (free academic)
AddgeneADDGENE_API_KEYhttps://www.addgene.org (free account)
LINCS L1000 (CLUE)CLUE_API_KEYhttps://clue.io (free academic)

These are all free to obtain. The APIs work without keys but have lower rate limits. Always try with a key first — if the env variable isn't set, proceed without the key and note in your response that rate limits may be lower.

Databases with paid or restricted access

DatabaseRestrictionFree alternative
DrugBankPaid API license requiredUse ChEMBL + PubChem + OpenFDA instead
COSMICFree academic registration required (JWT auth)Use Open Targets for cancer mutation data
BRENDAFree registration required (SOAP, not REST)Use KEGG for enzyme/pathway data

When a database requires paid access or registration the user hasn't set up:

  1. Fall back to a free alternative that can answer the same question
  2. Tell the user which database you couldn't access, why, and what you used instead
  3. If the user specifically requests a restricted database, explain the access requirements so they can set it up

Loading API keys

Step 1 — Check the current environment. The key may already be exported as a shell variable. For example, in Claude Code you can check with Bash: echo $FRED_API_KEY. If the variable is set and non-empty, use it.

Step 2 — Check .env file. If the environment variable isn't set, read .env from the current working directory. Format:

FRED_API_KEY=your_key_here
BEA_API_KEY=your_key_here

Step 3 — Proceed without. If neither source has the key, proceed without it (most APIs still work at lower rate limits) and mention this to the user.

Making API Calls

Use your environment's HTTP fetch tool to call REST endpoints. The tool name varies by platform:

PlatformHTTP Fetch ToolFallback
Claude CodeWebFetchcurl via Bash
Gemini CLIweb_fetchcurl via shell
Windsurfread_url_contentcurl via terminal
CursorNo dedicated fetch toolcurl via run_terminal_cmd
Codex CLINo dedicated fetch toolcurl via shell
ClineNo dedicated fetch toolcurl via execute_command

If you don't recognize your platform or the fetch tool fails, fall back to curl via whatever shell/terminal tool is available. Example:

curl -s -H "Accept: application/json" "https://api.example.com/endpoint"

Request guidelines

  • Set Accept: application/json header where supported
  • URL-encode special characters in query parameters — SMILES strings (/, #, =, @), compound names with parentheses, and ontology terms with colons (HP:0001250HP%3A0001250) are common sources of failures. With curl, use --data-urlencode for safety.
  • Parallel OK: When querying different databases (e.g., PubChem + ChEMBL + Reactome), run them in parallel — most APIs have generous rate limits.
  • Serialize requests to rate-limited APIs: NCBI APIs (Gene, GEO, Protein, Taxonomy, dbSNP, SRA) at 3 req/sec without key, 10 with key. Also watch: Ensembl (15 req/sec), BLS v1 (25 req/day without key), SEC EDGAR (10 req/sec), NOAA (5 req/sec with token).
  • If you get a rate-limit error (HTTP 429 or 503), wait briefly and retry once

Error recovery

If an API returns an error or empty results:

  1. Check the identifier format — use the Common Identifier Formats table above. A gene symbol may need to be converted to NCBI Gene ID or Ensembl ID first.
  2. Try alternative identifiers — if a compound name fails in PubChem, try SMILES, InChIKey, or CID. If a gene symbol fails, try the NCBI Gene ID.
  3. Try a different database — if one database is down or returns nothing, check the "Also consider" column in the selection guide for alternatives.
  4. Report the failure — tell the user which database failed, the error, and what you tried instead.

Pagination

Many APIs return paginated results — if you only read the first page, you may miss data. Common patterns:

  • Offset/Limit: offset=0&limit=100 → increment offset by limit for the next page (ChEMBL, FRED, NOAA, USGS, NCBI E-utilities, ENA, GDC, FDA)
  • Cursor-based: Response includes a nextPageToken or cursor value — pass it in the next request (ClinicalTrials.gov, UniProt)
  • Page number: page=1&per_page=50 → increment page (World Bank, cBioPortal, ZINC)

Check the reference file for each database's specific pagination parameters. If a response includes total, totalCount, or next and the number of returned results is less than the total, there are more pages.

For targeted lookups (single gene, single compound), the first page is usually sufficient. Paginate when the user needs comprehensive results (e.g., "all clinical trials for X" or "all known variants in gene Y").

Output Format

Structure your response like this:

## Databases Queried
- **PubChem** — /compound/name/aspirin/property/...
- **Reactome** — /search/query?query=aspirin

## Results

### PubChem
[raw JSON response]

### Reactome
[raw JSON response]

If results are very large, present the most relevant portion and note that additional data is available. But default to showing the full raw JSON — the user asked for it.

Adding New Databases

This skill is designed to grow. Each database is a self-contained reference file in references/. To add a new database:

  1. Create references/<database-name>.md following the same format as existing files
  2. Add an entry to the database selection guide above
  3. The reference file should include: base URL, key endpoints, query parameter formats, example calls, rate limits, and response structure

Available Databases

Read the relevant reference file before making any API call.

Physics & Astronomy

DatabaseReference FileWhat it covers
NASAreferences/nasa.mdNEO asteroids, Mars rover, APOD
NASA Exoplanet Archivereferences/nasa-exoplanet-archive.mdExoplanets, orbital parameters
NISTreferences/nist.mdPhysical constants, atomic spectra
SDSSreferences/sdss.mdGalaxy/star spectra, photometry
SIMBADreferences/simbad.mdAstronomical object catalog

Earth & Environmental Sciences

DatabaseReference FileWhat it covers
USGSreferences/usgs.mdEarthquakes, water data
NOAAreferences/noaa.mdClimate, weather station data
EPAreferences/epa.mdAir quality, toxic releases
OpenWeatherMapreferences/openweathermap.mdWeather current/forecast

Chemistry & Drugs

DatabaseReference FileWhat it covers
PubChemreferences/pubchem.mdCompounds, properties, synonyms
ChEMBLreferences/chembl.mdBioactivity, drug discovery
DrugBankreferences/drugbank.mdDrug data, interactions (paid)
FDA (OpenFDA)references/fda.mdDrug labels, adverse events, recalls
DailyMedreferences/dailymed.mdDrug labels (NIH/NLM)
KEGGreferences/kegg.mdPathways, genes, compounds
ChEBIreferences/chebi.mdChemical entities of biological interest
ZINCreferences/zinc.mdCommercially available compounds, virtual screening
BindingDBreferences/bindingdb.mdExperimentally measured binding affinities

Materials Science

DatabaseReference FileWhat it covers
Materials Projectreferences/materials-project.mdBand gaps, elastic properties, crystal structures
CODreferences/cod.mdCrystal structures, CIF files

Shortened here. Read the whole file on GitHub.

Signals

GitHub stars
324
Forks
26
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
database-lookup-mkurman
Source
github.com/mkurman/zorai