Query Metabolomics Workbench REST API (4,200+ NIH studies) for metabolite ID, study discovery, RefMet standardization, m/z precursor searches, and gene/protein annotations. Quirks: compound input_item rejects `name` (use pubchem_cid/kegg_id/inchi_key/etc.); free-text → compound is a two-step refmet/match→refmet/name flow; moverz endpoint returns TSV text, not JSON. Use hmdb-database for local XML; pubchem-compound-search for general compound lookup.
SkillScore100Maintained
Automatic
◆Research pack
Last verified 8/23/2026
What it changes
Passed 22 of 22 test cases with the skill, and 10 of 22 without it.
Queries the endpoint path compound/kegg_id/C00031/all/json
Formats the URL request path as moverz/LIPIDS/760.585/M+H/0.01/txt
and 11 more in the full report
12 fixed10 passed either way0 still failing0 broke
Pass-rate lift
+55 pp
Tokens
+289%
Agent turns
0%
Response time
-30%
Model gemini-3.6-flashMeasured 8/23/2026v122 of 22 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 12 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 12
Prompt
I am querying `https://www.metabolomicsworkbench.org/rest/study/study_id/ST000001/summary` and want JSON data returned. Should I append `/json` to the end of this URL path?
What was checked, without and with the skill
Checked
Without skill
With skill
Explains that appending /json to study/.../summary causes TSV output rather than JSON
Missed
Passed
case-05 · gemini-3.6-flash · 8/23/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md467 linessingle file
Metabolomics Workbench Database — REST API Access
Overview
The Metabolomics Workbench (MW) REST API at https://www.metabolomicsworkbench.org/rest/ exposes 4,200+ metabolomics studies hosted at UCSD under NIH Common Fund sponsorship. URL pattern is /{context}/{input_item}/{input_value}/{output_item}/{format}. Contexts include compound, refmet, moverz, study, analysis, metabolite, gene, protein. Notable quirks discovered live:
compound/name/{x} is rejected — name is not an allowed input_item. Use pubchem_cid, kegg_id, inchi_key, hmdb_id, regno, lm_id, formula, smiles, or abbrev. For free-text input, go through refmet/match/{x} first.
refmet/name/{x}/all requires the exact RefMet name (e.g. Glucose, not D-glucose); use refmet/match/{x} for fuzzy normalisation first.
moverz/{REFMET|LIPIDS|MB}/{mz}/{ion}/{tol}/txt returns TSV text (no JSON variant).
The metstat/filter/... endpoint shown in older examples returns [] — replace with study/{context}/{value}/summary (or /metabolites) + client-side filtering.
No authentication required.
When to Use
Searching metabolite records by PubChem CID, KEGG ID, InChIKey, HMDB ID, formula, or SMILES
Discovering studies by species, disease, last_name, institute, analysis_type, or polarity
Standardising metabolite names to RefMet nomenclature for cross-study integration
Identifying unknown compounds from MS m/z values with adduct-aware matching (moverz)
Retrieving experimental metabolite tables (analyses, abundances) from published studies
Querying gene/protein annotations linked to metabolomics pathways
Downloading raw mwTab files for local analysis
For local 220K-metabolite XML parsing with NMR/MS spectra use hmdb-database instead
For live 110M-compound property lookups use pubchem-compound-search instead
Prerequisites
Python packages: requests, pandas
No API key required: publicly accessible
Rate limits: MW does not enforce strict limits; add time.sleep(0.3) between bulk requests
Base URL: https://www.metabolomicsworkbench.org/rest