@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 a total_matches count, 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, with match_type marked). The listing has no indication text, so this returns indication_text: null with 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). Returns comparable: false, reason: "since_after_published_data" rather than a false zero when since is 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 from https://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"}.
  • Approvaldate is D/M/YYYY (19/11/1991), not M/D. Parsed to ISO.
  • Multi-valued cells use &&. Activeingredients and Strength pair 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&&CANADA collapses to one country.
  • No indication text, no status, no cancellation date. The listing holds only currently registered products. recent_changes therefore 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-products pack. Medical devices and cosmetics are separate data.gov.sg datasets again.
  • The listing is refreshed a few times a year; data_as_of on every response is the source’s own lastUpdatedAt, 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 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_search — Search medicines registered in Singapore — the Health Sciences Authority (HSA) official listing of ~5,500

Regenerated from source · build September 26, 2026