@pipeworx/anvisa-medicines
Connect: https://pipeworx.io/mcp — every tool in the catalog, including @pipeworx/anvisa-medicines’s. Install: one-click buttons
Connect to just the @pipeworx/anvisa-medicines pack
https://gateway.pipeworx.io/anvisa-medicines/mcp — only @pipeworx/anvisa-medicines’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: 2
Brazil’s register of medicines authorised by ANVISA, the national health regulator: about 40,000 registrations with brand name, active ingredient, registration holder, registration number, status, regulatory category (similar, generic, new, herbal, homeopathic and others), registration date and expiry month. Search in Portuguese or English, accents ignored.
Tools
anvisa_drug_search(query, by?, status?, limit?)finds registrations by words in the brand name or active ingredient (by: "any", the default), only the brand name, only the ingredient, or the holder’s name. Every word must match the start of a word, sodipironfinds dipirona. Results list active registrations first, newest first, each with the status as the register states it (AtivoorInativo) plus an English reading, and the category with an English name.status: "active"or"inactive"filters. An English ingredient spelling that differs from the Portuguese only at the end (amoxicillin / amoxicilina) is found on its word stem and the answer says so (matched_on_stems).anvisa_drug_get(id)the full record: holder and CNPJ, therapeutic class, process number, registration date, expiry month, and how many register rows state each status. The id is the registration number, or an id starting withxfor the registrations that have no number (low-risk and dynamised products, mostly).
anvisa_drug_search({query: "dipirona", limit: 5})
-> 559 matches; DORFLEX DOR DE CABEÇA, Ativo, Similar, registered 2026-11-09, expires 2036-11
anvisa_drug_get({id: "186200018"})
-> NOVALGINA, holder, category Similar (English "Similar"), status Ativo
anvisa_drug_search({query: "paracetamol", by: "ingredient", status: "active"})
-> found: true, total_matches 141 (against the November 2026 copy)
Every answer carries data_as_of, source_file_date, answered_from (always stored_copy) and an attribution line. A search with no match returns found: false with an empty_reason; an unknown id returns found: false, reason: "unknown_id".
Auth
Keyless.
Data sources
- ANVISA (Agência Nacional de Vigilância Sanitária), registered medicines open data. ANVISA publishes the register only as one bulk open-data file (about 46 MB, 11 columns), refreshed monthly, and its online consultation service refuses requests from our network, so a stored copy answers every call and a weekly job refreshes it. There is no live fallback: before the first load, or if the copy cannot be read, both tools return
found: false, reason: "stored_copy_unavailable"with a plain message, never an empty result. A refresh that would shrink the register by more than 20 percent, or that finds a changed column layout, is refused and the previous copy stays.
Licence note
The register’s open-data page states no licence of its own. ANVISA’s institutional site states: “Todo o conteúdo deste site está publicado sob a licença Creative Commons Atribuição-SemDerivações 3.0 Não Adaptada” (all content of this site is published under Creative Commons Attribution-NoDerivatives 3.0 Unported). That licence allows copying and redistributing the unmodified work with attribution, and does not forbid redistribution, so the copy is built; but it is a statement about the site, not about this dataset, so treat the terms as unconfirmed rather than granted. Every answer says who the source is; the register’s values are kept as published (merged by registration number, nothing corrected), and the English readings of category and status are marked as added by Pipeworx.
What the copy holds, and what to watch
- One record per registration. The file has one row per presentation (about 230,000 rows, 40,000 distinct registrations) and carries no presentation column. Rows are merged on the registration number; the answer shows
rows_stating_activeandrows_stating_inactive. - Status can disagree between rows. For about 2,600 registrations some rows say Ativo and some Inativo. Those carry
status: "Misto"with the counts, appear under both status filters, and sort between the active and inactive groups. The register does not say why a registration is Inativo (cancelled, lapsed or replaced). - Registrations without a number (about 7,300, mostly low-risk and homeopathic products) get an
xid derived from their other fields. That id stays stable only while those fields are unchanged. - Expiry is a month. The register gives month and year;
expiry_passedcompares it with the current month. Sixteen rows carry an expiry the register writes in an unreadable form; those show no expiry. - Lost characters stay lost. Some names reach us with accented letters already replaced by
?(for example “N?O DECLARADO”); the record says so rather than guessing. - Not a prescribing reference. The register says what is registered, not what is on sale, priced or safe to take.
- Fields are positional in the stored objects (see the header of
src/index.ts,scripts/lib/anvisa-parse.mjsandscripts/lib/drug-store.mjs); the test suite builds its fixtures with the loader’s own modules and reads them through the pack.
Tools
- anvisa_drug_search — Search Brazil’s register of medicines authorised by ANVISA (the national health regulator), about 40,000 registrations, by brand name, active ingredient or registration holder, in Portuguese or Englis
- anvisa_drug_get — Show one ANVISA medicine registration by its id (the registration number from anvisa_drug_search, 9 digits; the 13-digit form is read by its first 9 digits; or the id starting with x that registration
Tools
anvisa_drug_get— Show one ANVISA medicine registration by its id (the registration number from anvisa_drug_search, 9 digits; the 13-digit form is read by its first 9 digits; or the id starting with x that registrationanvisa_drug_search— Search Brazil's register of medicines authorised by ANVISA (the national health regulator), about 40,000 registrations, by brand name, active ingredient or registration holder, in Portuguese or Englis