alterlab-metabolomics-wb — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited alterlab-metabolomics-wb (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The Metabolomics Workbench is a comprehensive NIH Common Fund-sponsored platform hosted at UCSD that serves as the primary repository for metabolomics research data. It provides programmatic access to several thousand processed studies (4,300+ publicly available via the REST API as of 2026-06), standardized metabolite nomenclature through RefMet, and powerful search capabilities across multiple analytical platforms (GC-MS, LC-MS, NMR).
Read these before parsing responses — several behaviors contradict the naive "/json always returns JSON" assumption:
moverz context and the study summary/search outputs return tab-delimited text even when you ask for `/json`. The scripts/query_metabolomics_wb.py helper wraps such bodies as {"raw": "<tsv>"} rather than failing. Parse the TSV; do not assume keyed JSON objects..php handler. urllib/requests follow redirects automatically; raw curl does not unless you pass -L (otherwise you get an empty body).study/study_id/ST/available/json returns an empty body; use study/study_id/ST/available/txt (columns: project_id, study_id, analysis_id).formula, exactmass, classes, refmet_id) — not name.refmet/match output (e.g. match/citrate gives Citric acid, but the study index is keyed on Tyrosine-style entries). Verify the name resolves to studies; an empty result usually means a name-index mismatch, not "no studies."scripts/query_metabolomics_wb.py — query the Metabolomics Workbench REST API (stdlib only, JSON to stdout):
python scripts/query_metabolomics_wb.py refmet citrate # standardize a name (RefMet)
python scripts/query_metabolomics_wb.py study ST000001 # study summary
python scripts/query_metabolomics_wb.py moverz 635.52 --adduct M+H # m/z searchThis skill should be used when querying metabolite structures, accessing study data, standardizing nomenclature, performing mass spectrometry searches, or retrieving gene/protein-metabolite associations through the Metabolomics Workbench REST API.
Access comprehensive metabolite information including structures, identifiers, and cross-references to external databases.
Key operations:
Example queries:
import requests
# Get compound information by PubChem CID
response = requests.get('https://www.metabolomicsworkbench.org/rest/compound/pubchem_cid/5281365/all/json')
# Download molecular structure as PNG
response = requests.get('https://www.metabolomicsworkbench.org/rest/compound/regno/11/png')
# Get compound name by registry number
response = requests.get('https://www.metabolomicsworkbench.org/rest/compound/regno/11/name/json')Query metabolomics studies by various criteria and retrieve complete experimental datasets.
Key operations:
Example queries:
# List all available public studies (use /txt — the /json variant returns empty)
response = requests.get('https://www.metabolomicsworkbench.org/rest/study/study_id/ST/available/txt')
# Get study summary
response = requests.get('https://www.metabolomicsworkbench.org/rest/study/study_id/ST000001/summary/json')
# Retrieve experimental data
response = requests.get('https://www.metabolomicsworkbench.org/rest/study/study_id/ST000001/data/json')
# Find studies containing a specific metabolite
response = requests.get('https://www.metabolomicsworkbench.org/rest/study/refmet_name/Tyrosine/summary/json')Use the RefMet database to standardize metabolite names and access systematic classification across four structural resolution levels.
Key operations:
Example queries:
# Standardize a metabolite name
response = requests.get('https://www.metabolomicsworkbench.org/rest/refmet/match/citrate/name/json')
# Query by molecular formula
response = requests.get('https://www.metabolomicsworkbench.org/rest/refmet/formula/C12H24O2/all/json')
# Get all metabolites in a specific class
response = requests.get('https://www.metabolomicsworkbench.org/rest/refmet/main_class/Fatty%20Acids/all/json')
# Retrieve complete RefMet database
response = requests.get('https://www.metabolomicsworkbench.org/rest/refmet/all/json')Search for compounds by mass-to-charge ratio (m/z) with specified ion adducts and tolerance levels.
Key operations:
Example queries:
# Search by m/z value with M+H adduct
response = requests.get('https://www.metabolomicsworkbench.org/rest/moverz/MB/635.52/M+H/0.5/json')
# Calculate exact mass for a metabolite with specific adduct
response = requests.get('https://www.metabolomicsworkbench.org/rest/moverz/exactmass/PC(34:1)/M+H/json')
# Search across RefMet database
response = requests.get('https://www.metabolomicsworkbench.org/rest/moverz/REFMET/200.15/M-H/0.3/json')Use the MetStat context to find studies matching specific experimental conditions.
Key operations:
Example queries:
# Find human blood studies on diabetes using LC-MS
response = requests.get('https://www.metabolomicsworkbench.org/rest/metstat/LCMS;POSITIVE;HILIC;Human;Blood;Diabetes/json')
# Find all human blood studies containing tyrosine
response = requests.get('https://www.metabolomicsworkbench.org/rest/metstat/;;;Human;Blood;;;Tyrosine/json')
# Filter by analytical method only
response = requests.get('https://www.metabolomicsworkbench.org/rest/metstat/GCMS;;;;;;/json')Retrieve gene and protein data associated with metabolic pathways and metabolite metabolism.
Key operations:
Example queries:
# Get gene information by symbol
response = requests.get('https://www.metabolomicsworkbench.org/rest/gene/gene_symbol/ACACA/all/json')
# Retrieve protein data by UniProt ID
response = requests.get('https://www.metabolomicsworkbench.org/rest/protein/uniprot_id/Q13085/all/json')To find all studies containing measurements of a specific metabolite:
response = requests.get('https://www.metabolomicsworkbench.org/rest/refmet/match/glucose/name/json') response = requests.get('https://www.metabolomicsworkbench.org/rest/study/refmet_name/Glucose/summary/json') response = requests.get('https://www.metabolomicsworkbench.org/rest/study/study_id/ST000001/data/json')To identify potential compounds from mass spectrometry m/z values:
response = requests.get('https://www.metabolomicsworkbench.org/rest/moverz/MB/180.06/M+H/0.5/json')moverz returns tab-delimited text (name, systematic name, formula, ion, classes) — not JSON, and with no regno column. Use the returned name/formula to look the compound up. response = requests.get('https://www.metabolomicsworkbench.org/rest/compound/regno/{regno}/all/json') response = requests.get('https://www.metabolomicsworkbench.org/rest/compound/regno/{regno}/png')To find metabolomics studies for a specific disease and analytical platform:
response = requests.get('https://www.metabolomicsworkbench.org/rest/metstat/LCMS;POSITIVE;;Human;;Cancer/json') response = requests.get('https://www.metabolomicsworkbench.org/rest/study/study_id/ST{ID}/summary/json') response = requests.get('https://www.metabolomicsworkbench.org/rest/study/study_id/ST{ID}/data/json')The API supports two primary output formats:
Specify format by appending /json or /txt to API URLs. When format is omitted, JSON is returned by default.
Detailed API reference documentation is available in references/api_reference.md, including:
Load this reference file when detailed API specifications are needed or when working with less common endpoints.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.