@pipeworx/hsa-singapore
Connect: https://pipeworx.io/mcp — every tool in the catalog, including @pipeworx/hsa-singapore’s. Install: one-click buttons
Connect to just the @pipeworx/hsa-singapore pack
https://gateway.pipeworx.io/hsa-singapore/mcp — only @pipeworx/hsa-singapore’s own tools, nothing else in the catalog.
No MCP client? Skip the connection: POST https://gateway.pipeworx.io/v1/tools/search_packs {"query":"..."} to find a tool below, GET /v1/tools/<name> for its schema, POST the same URL with arguments for the data — see For AI agents.
Tools: 4
Medicines registered in Singapore — the Health Sciences Authority (HSA) official Listing of Registered Therapeutic Products (~5,500 products), live from data.gov.sg: SIN licence number, product name, licence holder, approval date, forensic classification, ATC code, dosage form, route, manufacturers, country of manufacture, active ingredients with strengths. Keyless.
Tools
hsa_sg_search(query?, active_ingredient?, atc_code?, holder?, manufacturer?, country?, forensic_classification?, route?, dosage_form?, approved_from?, approved_to?, limit?, offset?)— search/filter with real offset+limit pagination and atotal_matchescount, newest approval first. Answers “is X approved in Singapore”, “which Singapore-registered products contain Y”, “what does company Z hold a licence for”.hsa_sg_product(licence_no | name)— the full registration record for one product, by SIN licence number (exact) or name (exact, else substring, withmatch_typemarked). The listing has no indication text, so this returnsindication_text: nullwith the authoritative listing and HSA infosearch URLs rather than a paraphrase.hsa_sg_recent_changes(since, limit?)— products newly registered on or after a date, from the approval date. New registrations only (removals_visible: false, see below). Returnscomparable: false, reason: "since_after_published_data"rather than a false zero whensinceis past the published data.hsa_sg_dataset_info()— row count, source last-updated date, earliest/latest approval date, licence, fields present and absent, and distinct values with counts for forensic classification, country of manufacture, route and dosage form (exact spellings for the filters).
Every call rejects argument names it does not declare (user_error: … does not recognise argument(s)) instead of silently dropping them.
Auth
Keyless.
Data sources
- https://data.gov.sg/datasets/d_767279312753558cbf19d48344577084/view — “Listing of Registered Therapeutic Products”, published by HSA. Read via
https://data.gov.sg/api/action/datastore_search?resource_id=d_767279312753558cbf19d48344577084&limit=10000(whole listing in one request, 5,511 rows / ~1.3 MB on 2026-09-26) and the freshness stamp fromhttps://api-production.data.gov.sg/v2/public/api/datasets/d_767279312753558cbf19d48344577084/metadata(lastUpdatedAt, 2026-08-07 at build time). - https://www.hsa.gov.sg/e-services/infosearch — HSA’s own product search, where the approved package insert lives. No per-product URL, and it 403s non-browser clients, so the pack links to it rather than reading it.
Licence
Singapore Open Data Licence v1.0 (https://data.gov.sg/open-data-licence): “You can use, access, download, copy, distribute, transmit, modify and adapt the datasets … whether commercially or non-commercially”, worldwide and royalty-free, with a conspicuous attribution notice required. Every response carries that notice in attribution / license / license_note via attachLicense.
Gotchas
- Rate limit. Keyless data.gov.sg callers get throttled after a couple of requests in quick succession — sometimes as HTTP 429, sometimes as a 200 whose body is
{"code":24,"name":"TOO_MANY_REQUESTS"}. The pack fetches the whole listing once per isolate (6h cache) and serves a stale copy rather than failing if a refresh is throttled; with no copy held it returns{found:false, reason:"upstream_throttled"}. Approvaldateis D/M/YYYY (19/11/1991), not M/D. Parsed to ISO.- Multi-valued cells use
&&.ActiveingredientsandStrengthpair up by position (CAMPHOR&&COAL TAR SOLUTION…/2% w/w&&10% w/w…); manufacturer, country, route and ATC code can be multi-valued too. Split into arrays;CANADA&&CANADAcollapses to one country. - No indication text, no status, no cancellation date. The listing holds only currently registered products.
recent_changestherefore reports new registrations only; a cancelled product simply disappears. Say so rather than implying a full diff. - Therapeutic products only. Chinese proprietary medicines are a separate HSA listing — the
tcm-productspack. Medical devices and cosmetics are separate data.gov.sg datasets again. - The listing is refreshed a few times a year;
data_as_ofon every response is the source’s ownlastUpdatedAt, and approvals after it are not published yet.
Tools
- hsa_sg_search — Search medicines registered in Singapore — the Health Sciences Authority (HSA) official listing of ~5,500
- hsa_sg_product — The full HSA registration record for one Singapore therapeutic product, by SIN licence number (exact) or product
- hsa_sg_recent_changes — Therapeutic products newly registered in Singapore by HSA on or after a date, from each product’s approval
- hsa_sg_dataset_info — Metadata for the Singapore HSA registered therapeutic products listing: row count, source last-updated date,
Tools
hsa_sg_dataset_info— Metadata for the Singapore HSA registered therapeutic products listing: row count, source last-updated date,hsa_sg_product— The full HSA registration record for one Singapore therapeutic product, by SIN licence number (exact) or producthsa_sg_recent_changes— Therapeutic products newly registered in Singapore by HSA on or after a date, from each product's approvalhsa_sg_search— Search medicines registered in Singapore — the Health Sciences Authority (HSA) official listing of ~5,500