Cross-reference compound IDs across 20+ databases (ChEMBL, DrugBank, PubChem, ChEBI, PDB, SureChEMBL, HMDB, DrugCentral, BindingDB) via UniChem REST API. Resolve InChIKeys to source IDs, translate between source-specific IDs, find structurally related compounds by connectivity. POST with a JSON body for all cross-reference queries; only /sources is GET. No auth required.
SkillScore100Maintained
Automatic
◆Research pack
Last verified 8/24/2026
What it changes
Passed 25 of 25 test cases with the skill, and 6 of 25 without it.
Without skill24%
With skill100%
Checks it passed that the model alone missed
Checks sources array for source ID 18.
Retrieves compound identifier for source ID 31.
Checks for source ID 15 in the returned sources array.
and 23 more in the full report
19 fixed6 passed either way0 still failing0 broke
Pass-rate lift
+76 pp
Tokens
+303%
Agent turns
0%
Response time
-39%
Model gemini-3.6-flashMeasured 8/24/2026v125 of 25 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 19 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 19
Prompt
I need to retrieve the complete catalogue of available database sources from EBI's UniChem web service. Write a Python function that queries the catalogue endpoint and extracts each database's numeric ID and long name into a pandas DataFrame.
What was checked, without and with the skill
Checked
Without skill
With skill
Sends an HTTP GET request to https://www.ebi.ac.uk/unichem/api/v1/sources.
Missed
Passed
Accesses the 'sourceID' field on source entries returned by the sources catalogue.
Missed
Passed
case-08 · gemini-3.6-flash · 8/24/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md752 linessingle file
UniChem Database
Overview
UniChem is a chemical structure cross-referencing service from EMBL-EBI that links compound records across 20+ public chemistry databases using InChI-based identifiers.
It maps a single chemical entity to its corresponding IDs in ChEMBL, DrugBank, PubChem, ChEBI, PDB (RCSB and PDBe), SureChEMBL, HMDB, DrugCentral, BindingDB, and others.
Access is via a free REST API at https://www.ebi.ac.uk/unichem/api/v1/ - no API key required.
Important: every cross-reference query is sent as POST with a JSON body; only the catalogue endpoint GET /sources is implemented as a GET.
When to Use
Translating a ChEMBL compound ID to a PubChem CID, DrugBank accession, or ChEBI ID for cross-database analysis
Resolving an InChIKey to all database sources where a compound appears
Finding all structurally related compounds (same connectivity, different stereochemistry/salts) across databases using connectivity search
Validating compound identity across sources before merging datasets from multiple databases
Building a compound cross-reference table for a drug discovery project (linking bioactivity data in ChEMBL to structural data in PDB)
Checking if a synthesized compound or a vendor compound exists in any public database by InChIKey
For full bioactivity profiles (IC50, Ki) use chembl-database-bioactivity; UniChem provides only ID cross-references, not experimental data
For compound property prediction or substructure searching use pubchem-compound-search; UniChem is for identifier translation only
Prerequisites
Python packages: requests, pandas, matplotlib
Data requirements: compound InChIKeys (standard 27-character XXXXXXXXXXXXXX-XXXXXXXXXX-X), source-specific IDs (e.g. CHEMBL25), or PubChem CIDs as starting points
Environment: internet connection; no API key required
Rate limits: ~10 requests/second; add time.sleep(0.1) between requests in batch loops; no daily quota
pip install requests pandas matplotlib
Quick Start
The UniChem /compounds endpoint is POST-only - GET returns 405 Method Not Allowed. Submit a JSON body {type: inchikey, compound: KEY} and read per-database hits from compounds[0][sources]. Each source record carries an id (numeric database ID) and a compoundId (the ID in that database).