1---2name: hmdb-skill3description: Submit compact HMDB search requests for metabolites, proteins, diseases, and pathways. Use when a user wants concise HMDB summaries4---56## Operating rules7- hmdb.ca publishes no JSON API and sits behind a Cloudflare interactive challenge: every path, including `/`, `/downloads`, `/metabolites/<id>` and `/unearth/q`, answers a scripted request with HTTP 403 and `cf-mitigated: challenge`. `scripts/rest_request.py` cannot retrieve HMDB content. Say so rather than reporting an empty result.8- To act on an HMDB accession, map it to a database that does serve an API: UniChem source 18 is HMDB, and `POST https://www.ebi.ac.uk/unichem/api/v1/compounds` with `{"type":"sourceID","compound":"<HMDB id>","sourceID":18}` returns the ChEBI, ChEMBL, PubChem and DrugBank identifiers for the same structure. Hand those to `chebi-skill`, `chembl-skill`, or `pubchem-pug-skill`.9- Bulk HMDB XML is distributed from https://hmdb.ca/downloads, which a person can fetch in a browser; there is no scripted route to it.10- Re-run requests in long conversations instead of relying on older tool output.11- Treat displayed `...` in tool previews as UI truncation, not literal request content.1213## Execution behavior14- Return concise markdown summaries from the script JSON by default.15- If the user needs the full payload, set `save_raw=true` and report the saved file path.1617## Input18- Read one JSON object from stdin.19- Required fields: `base_url`, `path`20- Optional fields: `method`, `params`, `headers`, `json_body`, `form_body`, `record_path`, `response_format`, `max_items`, `max_depth`, `timeout_sec`, `save_raw`, `raw_output_path`21- Identifier cross-reference pattern:22 - `{"base_url":"https://www.ebi.ac.uk/unichem/api/v1","path":"compounds","method":"POST","json_body":{"type":"sourceID","compound":"HMDB0000259","sourceID":18},"record_path":"compounds.0.sources","max_items":10}`2324## Output25- Success returns `ok`, `source`, `path`, `method`, `status_code`, `warnings`, and either compact `records` or a compact `summary`.26- Use `raw_output_path` when `save_raw=true`.27- Failure returns `ok=false` with `error.code` and `error.message`.2829## Execution30```bash31echo '{"base_url":"https://www.ebi.ac.uk/unichem/api/v1","path":"compounds","method":"POST","json_body":{"type":"sourceID","compound":"HMDB0000259","sourceID":18},"record_path":"compounds.0.sources","max_items":10}' | python scripts/rest_request.py32```3334## References35- No additional runtime references are required; keep the import package limited to this file and `scripts/rest_request.py`.