List Regulations
list_regulationsRegulations (normativas, decretos, resoluciones) — list, search, or fetch one by id, in a single tool. Authoritative, primary-source data from official gazettes and issuing-agency portals, refreshed daily-to-twice-daily. It is a gazette feed, not a compendium of law in force: '¿cuál es la normativa vigente para X?' gets case-by-case acts, so say that rather than presenting them as the framework.
No id (default): paginated list across country_code (comma-separated; omit for every accessible/your default country). Filter by rtype_id (use list_regulation_types() to discover valid IDs), entity_id (use list_entities(q="") to discover valid IDs) — comma-separated for several at once, since a sector like 'automotriz' spans MinTransporte, MinComercio, MinAmbiente and the tax authority — exclude_rtype_id (drop the nombramientos/autorizaciones churn that dominates a ministry's daily feed), or a since/until date range.
Have the norm's number? Use number, not q — e.g. number="0091" or number="Decreto 0091 de 2026". Matched number-for-number against title and short name with leading zeros ignored, so '0091' and '91' are one query; add the year to narrow it. If nothing matches exactly, say so AND report the near misses you did find — a norm with that number from a different entity is useful information, not a miss.
Only know the topic? q tries the hybrid/semantic engine first, then falls back to a keyword match over BOTH title and summary. That summary half is what makes topical search work at all in several countries, where the title is only an identifier ('Decreto exento número 190, de 2026') and the subject lives in the summary. Semantic hits carry a relevance score (cosine) and a rerank score (cross-encoder). Cite rerank, not relevance: measured on production, similarity sits near 0.6 for almost anything and 58% of the rows that clear min_similarity are rejected by the reranker, whose sign separates them cleanly. Rows below min_rerank are dropped and reported under empty_result.near_misses when nothing else survives.
⚠️ Cite display_title when it is present. In most countries the gazette title is only an identifier ('Resolución 0829 - 2026') and the subject matter lives in summary; display_title joins them into something a reader can act on. title stays exactly as the gazette printed it, for citation.
With id: ignores every other filter and returns full detail — title, type, issuing entity, publication date, and external_link (citable source URL, may be null).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search by subject matter. Do NOT put a norm's number here — use `number`. Semantic first, then a keyword match over title AND summary; that summary half matters, because in several countries the title is only an identifier and the subject lives in the summary. | |
| id | No | A regulation's own id. Set it to fetch that one record's full detail; every other filter is ignored. | |
| limit | No | Rows per page (1-100, default 20). The response's `meta.has_more` and `meta.next_cursor` tell you whether there are more. `meta.total`, when it is not null, is the full count without paging; some lists return null rather than pay for a count. Raise the limit when you genuinely need a whole list in one call rather than the most relevant few. | |
| since | No | Published on or after this date (YYYY-MM-DD). | |
| until | No | Published on or before this date (YYYY-MM-DD). | |
| cursor | No | Opaque pagination cursor from a previous response's `meta.next_cursor`. Pass every other filter unchanged when paging. Only ever use a cursor this API handed you — never build one. With `q`, a cursor continues the keyword listing (`meta.mode: "keyword_fallback"`): relevance-ranked results are a single page of at most 20 rows and report `has_more: false`, so if you got one there is no next page to ask for, and a `limit` above 20 adds nothing to it. Narrow `q` instead of paging. | |
| number | No | Find a norm by its number, e.g. '0091' or 'Decreto 0091 de 2026'. Matched number-for-number with leading zeros ignored, so '0091' and '91' are one query; include the year to narrow it. | |
| rtype_id | No | Keep only this regulation type (list_regulation_types to discover IDs). | |
| entity_id | No | Issuing entity ID; several as '21,44' or [21, 44] — a sector usually spans more than one agency. Resolve names with list_entities(q='<name>'). | |
| min_rerank | No | Cross-encoder floor for the semantic branch of `q`. Rows the reranker scores below this are dropped; if that empties the result, what was rejected comes back under `empty_result.near_misses` so you can see what the index does hold. Pass null to disable the filter entirely. | |
| country_code | No | ISO alpha-2 country codes, comma-separated or as a list: 'BR,CO' or ['BR','CO']. Pass 'all' for every country you can access. Omitting it is NOT the same as 'all': logged in via OAuth it falls back to your own default country, and the response says so in `meta.country_scope`. | |
| min_similarity | No | Cosine-similarity floor for the semantic branch of `q` (0-1). A coarse filter only: measured on production, 58% of the rows that clear it are then rejected by the cross-encoder, and the two score ranges overlap almost completely — `min_rerank` is the parameter that actually discriminates. Lower this to widen a search that came back empty. | |
| exclude_rtype_id | No | Regulation type IDs to drop, as '3,7' or [3, 7]. Use it to strip the administrative churn — nombramientos, autorizaciones puntuales — that dominates a ministry's daily gazette feed. | |
| include_committee_minutes | No | Include INVIMA specialized-board minutes (`rtype='Acta'`), excluded by default. They record what a sanitary committee decided about one product — a medicine, a new molecule — not what a rule says, and they are 87% of Colombia's indexed corpus at 210 chunks each, so leaving them in means a regulatory search competes against INVIMA's archive. `meta.committee_minutes_hidden` reports how many were dropped; use list_committee_minutes to search them properly, with their case, board and decision. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||