ibge-br-mcp 4.1.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -3
- package/README.pt-BR.md +48 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +17 -1
- package/dist/server.js.map +1 -1
- package/dist/structured.d.ts +16 -0
- package/dist/structured.d.ts.map +1 -1
- package/dist/structured.js +27 -0
- package/dist/structured.js.map +1 -1
- package/dist/tools/censo.d.ts +19 -0
- package/dist/tools/censo.d.ts.map +1 -1
- package/dist/tools/censo.js +118 -38
- package/dist/tools/censo.js.map +1 -1
- package/dist/tools/datasaude.d.ts.map +1 -1
- package/dist/tools/datasaude.js +3 -10
- package/dist/tools/datasaude.js.map +1 -1
- package/dist/tools/deep-research.d.ts +119 -0
- package/dist/tools/deep-research.d.ts.map +1 -0
- package/dist/tools/deep-research.js +306 -0
- package/dist/tools/deep-research.js.map +1 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/indicadores.d.ts.map +1 -1
- package/dist/tools/indicadores.js +3 -9
- package/dist/tools/indicadores.js.map +1 -1
- package/dist/tools/sidra.d.ts.map +1 -1
- package/dist/tools/sidra.js +3 -9
- package/dist/tools/sidra.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ ranking all 5,570 municipalities in a single call.
|
|
|
40
40
|
|
|
41
41
|
## Features
|
|
42
42
|
|
|
43
|
-
- **
|
|
43
|
+
- **23 tools** covering all major IBGE data domains — 21 `ibge_*` data tools plus `search`/`fetch` for ChatGPT Deep Research
|
|
44
44
|
- **Provenance block on every response** — source, canonical URL, reference
|
|
45
45
|
period, real extraction timestamp, ready-to-use citation, and legal regime
|
|
46
46
|
(see [Data provenance](#data-provenance))
|
|
@@ -52,6 +52,8 @@ ranking all 5,570 municipalities in a single call.
|
|
|
52
52
|
- **Standardized error handling** with helpful suggestions
|
|
53
53
|
- **Full TypeScript support** with strict typing
|
|
54
54
|
|
|
55
|
+
📖 **Article (in Portuguese):** [Como achar a tabela certa no SIDRA — e como saber que é a certa](docs/artigo-sidra-tabela-certa.pt-BR.md) — finding the right SIDRA table, the metadata that settles it, a full worked example on 2022 Census data, and the four traps that cost the most. Also published on the site, in Portuguese and English: [sidneybissoli.com](https://sidneybissoli.com/en/blog/posts/sidra-tabela-certa/).
|
|
56
|
+
|
|
55
57
|
## Data provenance
|
|
56
58
|
|
|
57
59
|
Since v3.3.0 every successful tool response carries a **provenance block**
|
|
@@ -140,9 +142,17 @@ aggregates are computed server-side from the raw IBGE values.
|
|
|
140
142
|
| `ibge_noticias` | IBGE news and press releases |
|
|
141
143
|
| `ibge_calendario` | IBGE release and collection calendar |
|
|
142
144
|
|
|
145
|
+
### ChatGPT Deep Research
|
|
146
|
+
| Tool | Description |
|
|
147
|
+
|:-----|:------------|
|
|
148
|
+
| `search` | Searches the IBGE catalog (SIDRA tables, municipalities, known indicators) — OpenAI Deep Research contract |
|
|
149
|
+
| `fetch` | Returns one catalog document (table metadata, municipality hierarchy + population, indicator series) with its public URL for citation |
|
|
150
|
+
|
|
151
|
+
The two are the only tools without the `ibge_` prefix: their names are fixed by the OpenAI contract. For data queries keep using the `ibge_*` tools.
|
|
152
|
+
|
|
143
153
|
## Which tool should I use?
|
|
144
154
|
|
|
145
|
-
With
|
|
155
|
+
With 23 tools, several can touch the same topic. Quick guide for the common overlaps:
|
|
146
156
|
|
|
147
157
|
### Population & demographics
|
|
148
158
|
|
|
@@ -186,7 +196,7 @@ Discover → inspect → query: `ibge_pesquisas` / `ibge_sidra_tabelas` (find a
|
|
|
186
196
|
|
|
187
197
|
### Prerequisites
|
|
188
198
|
|
|
189
|
-
- Node.js
|
|
199
|
+
- Node.js 22.x or higher (`engines.node`)
|
|
190
200
|
- npm or yarn
|
|
191
201
|
|
|
192
202
|
### From npm (recommended)
|
|
@@ -252,6 +262,16 @@ Or if installed from source:
|
|
|
252
262
|
}
|
|
253
263
|
```
|
|
254
264
|
|
|
265
|
+
### ChatGPT (Deep Research)
|
|
266
|
+
|
|
267
|
+
ChatGPT deep research (and company knowledge, and research workflows over the Responses API) only uses an MCP server that exposes exactly `search` and `fetch` — this server does, on top of the `ibge_*` tools. Point the connector at the hosted endpoint, no key required:
|
|
268
|
+
|
|
269
|
+
```
|
|
270
|
+
https://ibge.sidneybissoli.com/mcp
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
`search` ranks the query against SIDRA tables, municipalities and the known indicators and returns `{ id, title, url }`; `fetch` returns the document as readable Markdown with the canonical public URL (sidra.ibge.gov.br or cidades.ibge.gov.br), which is what ChatGPT cites. Both carry the same provenance block as every other tool. In ChatGPT's developer mode (Settings → Security and login → Developer mode) any tool is callable — the `ibge_*` tools remain the ones to use for data.
|
|
274
|
+
|
|
255
275
|
## Tool Usage Examples
|
|
256
276
|
|
|
257
277
|
### ibge_estados
|
package/README.pt-BR.md
CHANGED
|
@@ -40,7 +40,7 @@ entre elas ranquear os 5.570 municípios numa chamada só.
|
|
|
40
40
|
|
|
41
41
|
## Recursos
|
|
42
42
|
|
|
43
|
-
- **
|
|
43
|
+
- **23 ferramentas** cobrindo todos os principais domínios de dados do IBGE — 21 `ibge_*` de dados mais `search`/`fetch` para o Deep Research do ChatGPT
|
|
44
44
|
- **Resources de referência & prompts de análise** (catálogos MCP + templates prontos)
|
|
45
45
|
- **565 testes automatizados** — 88% de cobertura geral, 92% nas tools
|
|
46
46
|
- **Cache automático** com TTL configurável para performance otimizada
|
|
@@ -49,6 +49,33 @@ entre elas ranquear os 5.570 municípios numa chamada só.
|
|
|
49
49
|
- **Tratamento de erros padronizado** com sugestões úteis
|
|
50
50
|
- **Suporte completo a TypeScript** com tipagem estrita
|
|
51
51
|
|
|
52
|
+
📖 **Artigo:** [Como achar a tabela certa no SIDRA — e como saber que é a certa](docs/artigo-sidra-tabela-certa.pt-BR.md) — os três passos da busca, os metadados que decidem, um exemplo completo com dado de 2022 e as quatro armadilhas que mais custam caro. Também publicado no site: [sidneybissoli.com](https://sidneybissoli.com/blog/posts/sidra-tabela-certa/).
|
|
53
|
+
|
|
54
|
+
## Procedência dos dados
|
|
55
|
+
|
|
56
|
+
Desde a v3.3.0 toda resposta bem-sucedida carrega um **bloco de procedência**
|
|
57
|
+
([contrato do portfólio v1.0](https://www.npmjs.com/package/@sbissoli/mcp-provenance)),
|
|
58
|
+
de modo que cada número é citavel, auditável e reproduzível. O bloco sai por
|
|
59
|
+
três canais:
|
|
60
|
+
|
|
61
|
+
1. `structuredContent.provenance` (analisável, visível ao modelo) — exatamente
|
|
62
|
+
seis chaves: `source` (a API do IBGE consultada), `source_url` (URL canônica
|
|
63
|
+
que reproduz a consulta), `data_vintage` (período de referência quando a
|
|
64
|
+
fonte publica um; `null` caso contrário), `retrieved_at` (o instante REAL da
|
|
65
|
+
extração na origem, preservado através do cache, horário de Brasília),
|
|
66
|
+
`citation` ("Fonte: IBGE — [pesquisa/tabela], [URL], extraído em [data].") e
|
|
67
|
+
`license` — mais `attribution`, a lista canônica de URLs de origem.
|
|
68
|
+
2. `_meta` sob `br.com.sidneybissoli.ibge/provenance` e `.../attribution`
|
|
69
|
+
(espelho fora de banda para auditoria/UI, custo zero em tokens do modelo).
|
|
70
|
+
3. Um rodapé de texto compacto anexado ao Markdown, para clientes só-texto.
|
|
71
|
+
|
|
72
|
+
As APIs do IBGE não declaram licença própria; o regime jurídico é o arcabouço
|
|
73
|
+
brasileiro de dados abertos — Lei 12.527/2011 (LAI) e Decreto 8.777/2016
|
|
74
|
+
(reuso irrestrito, uso livre, obrigação limitada a creditar a fonte). Respostas
|
|
75
|
+
em modo estatístico (`estatisticas=true`) e `ibge_comparar` vêm marcadas como
|
|
76
|
+
`derived`, com nota explicativa no bloco canônico, porque os agregados são
|
|
77
|
+
calculados no servidor a partir dos valores brutos do IBGE.
|
|
78
|
+
|
|
52
79
|
## Ferramentas Disponíveis
|
|
53
80
|
|
|
54
81
|
### Localidades e Geografia
|
|
@@ -112,9 +139,17 @@ entre elas ranquear os 5.570 municípios numa chamada só.
|
|
|
112
139
|
| `ibge_noticias` | Notícias e releases do IBGE |
|
|
113
140
|
| `ibge_calendario` | Calendário de divulgações e coletas do IBGE |
|
|
114
141
|
|
|
142
|
+
### Deep Research do ChatGPT
|
|
143
|
+
| Ferramenta | Descrição |
|
|
144
|
+
|:-----------|:----------|
|
|
145
|
+
| `search` | Busca no catálogo do IBGE (tabelas SIDRA, municípios, indicadores conhecidos) — contrato Deep Research da OpenAI |
|
|
146
|
+
| `fetch` | Devolve um documento do catálogo (metadados da tabela, hierarquia + população do município, série do indicador) com a URL pública para citação |
|
|
147
|
+
|
|
148
|
+
As duas são as únicas ferramentas sem o prefixo `ibge_`: os nomes são fixados pelo contrato da OpenAI. Para consultar dados, continue usando as `ibge_*`.
|
|
149
|
+
|
|
115
150
|
## Qual ferramenta usar?
|
|
116
151
|
|
|
117
|
-
Com
|
|
152
|
+
Com 23 ferramentas, várias podem tocar no mesmo assunto. Guia rápido para as sobreposições comuns:
|
|
118
153
|
|
|
119
154
|
### População e demografia
|
|
120
155
|
|
|
@@ -158,7 +193,7 @@ Descobrir → inspecionar → consultar: `ibge_pesquisas` / `ibge_sidra_tabelas`
|
|
|
158
193
|
|
|
159
194
|
### Pré-requisitos
|
|
160
195
|
|
|
161
|
-
- Node.js
|
|
196
|
+
- Node.js 22.x ou superior (`engines.node`)
|
|
162
197
|
- npm ou yarn
|
|
163
198
|
|
|
164
199
|
### Via npm (recomendado)
|
|
@@ -224,6 +259,16 @@ Ou se instalado a partir do código-fonte:
|
|
|
224
259
|
}
|
|
225
260
|
```
|
|
226
261
|
|
|
262
|
+
### ChatGPT (Deep Research)
|
|
263
|
+
|
|
264
|
+
O Deep Research do ChatGPT (e o Company Knowledge, e os workflows de pesquisa da API Responses) só usa um servidor MCP que exponha exatamente `search` e `fetch` — este servidor expõe as duas, além das `ibge_*`. Aponte o conector para o endpoint hospedado, sem chave:
|
|
265
|
+
|
|
266
|
+
```
|
|
267
|
+
https://ibge.sidneybissoli.com/mcp
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
`search` ranqueia a consulta contra tabelas SIDRA, municípios e indicadores conhecidos e devolve `{ id, title, url }`; `fetch` devolve o documento em Markdown legível com a URL pública canônica (sidra.ibge.gov.br ou cidades.ibge.gov.br), que é o que o ChatGPT cita. As duas carregam o mesmo bloco de proveniência das demais ferramentas. No modo desenvolvedor do ChatGPT (Configurações → Segurança e login → Modo desenvolvedor) qualquer ferramenta pode ser chamada — para dados, as `ibge_*` continuam sendo as certas.
|
|
271
|
+
|
|
227
272
|
## Exemplos de Uso das Ferramentas
|
|
228
273
|
|
|
229
274
|
### ibge_estados
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAwB,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAwB,MAAM,8BAA8B,CAAC;AAuF/E,eAAO,MAAM,WAAW,gBAAgB,CAAC;AAEzC;;;;GAIG;AACH,eAAO,MAAM,YAAY,oBAAoB,CAAC;AAC9C,eAAO,MAAM,kBAAkB,mCAAmC,CAAC;AACnE,eAAO,MAAM,cAAc,QAAc,CAAC;AAE1C;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,QAYpB,CAAC;AAgBb;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAsBxC;AAED;;;;;;GAMG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAEzF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAgzB/E"}
|
package/dist/server.js
CHANGED
|
@@ -2,6 +2,7 @@ import { McpServer } from "@modelcontextprotocol/server";
|
|
|
2
2
|
// Version sourced from package.json (single source of truth — avoids drift).
|
|
3
3
|
// Node ESM reads it via the import attribute; esbuild inlines it for the Worker build.
|
|
4
4
|
import pkg from "../package.json" with { type: "json" };
|
|
5
|
+
import { registerDeepResearchTools } from "@sbissoli/mcp-search";
|
|
5
6
|
import { toMcpResult } from "./structured.js";
|
|
6
7
|
import { comProveniencia } from "./provenance.js";
|
|
7
8
|
import { estadosSchema, estadosOutputSchema, ibgeEstados, municipiosSchema, municipiosOutputSchema, ibgeMunicipios, localidadeSchema, localidadeOutputSchema, ibgeLocalidade, sidraSchema, sidraOutputSchema, ibgeSidra, nomesSchema, nomesOutputSchema, ibgeNomes, noticiasSchema, noticiasOutputSchema, ibgeNoticias, sidraTabelasSchema, sidraTabelasOutputSchema, ibgeSidraTabelas, sidraMetadadosSchema, sidraMetadadosOutputSchema, ibgeSidraMetadados, malhasSchema, malhasOutputSchema, ibgeMalhas, pesquisasSchema, pesquisasOutputSchema, ibgePesquisas, censoSchema, censoOutputSchema, ibgeCenso,
|
|
@@ -12,7 +13,7 @@ calendarioSchema, calendarioOutputSchema, ibgeCalendario, compararSchema, compar
|
|
|
12
13
|
// Phase 3 tools (v1.6.0)
|
|
13
14
|
malhasTemaSchema, malhasTemaOutputSchema, ibgeMalhasTema, vizinhosSchema, vizinhosOutputSchema, ibgeVizinhos, datasaudeSchema, datasaudeOutputSchema, ibgeDatasaude,
|
|
14
15
|
// Phase 4 tools (v1.9.0)
|
|
15
|
-
paisesSchema, paisesOutputSchema, ibgePaises, cidadesSchema, cidadesOutputSchema, ibgeCidades, } from "./tools/index.js";
|
|
16
|
+
paisesSchema, paisesOutputSchema, ibgePaises, cidadesSchema, cidadesOutputSchema, ibgeCidades, DEEP_RESEARCH_LIMIT, searchParaFabrica, fetchParaFabrica, } from "./tools/index.js";
|
|
16
17
|
import { registerResources } from "./resources.js";
|
|
17
18
|
import { registerPrompts } from "./prompts.js";
|
|
18
19
|
import { announceServedVersions } from "./discover.js";
|
|
@@ -784,6 +785,21 @@ Behavior: read-only and idempotent — a live GET against the public IBGE APIs (
|
|
|
784
785
|
outputSchema: comProveniencia(cidadesOutputSchema),
|
|
785
786
|
annotations: READ_ONLY,
|
|
786
787
|
}, handle("ibge_cidades", ibgeCidades));
|
|
788
|
+
// `search` + `fetch` — the ChatGPT Deep Research contract (v4.3.0). The only
|
|
789
|
+
// tools without the `ibge_` prefix (names fixed by OpenAI). Contract, envelope
|
|
790
|
+
// and descriptions come from the portfolio package; the IBGE index and the
|
|
791
|
+
// document text come from `src/tools/deep-research.ts`. Same annotations,
|
|
792
|
+
// provenance channels and usage telemetry as the tools above.
|
|
793
|
+
registerDeepResearchTools(server, {
|
|
794
|
+
search: searchParaFabrica,
|
|
795
|
+
fetch: fetchParaFabrica,
|
|
796
|
+
corpus: "IBGE (Brazilian official statistics: SIDRA tables, municipalities, known indicators)",
|
|
797
|
+
richTools: "the `ibge_*` tools (`ibge_sidra`, `ibge_cidades`, `ibge_indicadores`, `ibge_comparar`…)",
|
|
798
|
+
limit: DEEP_RESEARCH_LIMIT,
|
|
799
|
+
annotations: READ_ONLY,
|
|
800
|
+
extendOutputSchema: comProveniencia,
|
|
801
|
+
...(record !== undefined ? { record } : {}),
|
|
802
|
+
});
|
|
787
803
|
// Reference catalogs (roadmap 1.6) and analysis templates
|
|
788
804
|
registerResources(server);
|
|
789
805
|
registerPrompts(server);
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAwB,MAAM,8BAA8B,CAAC;AAC/E,6EAA6E;AAC7E,uFAAuF;AACvF,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAExD,OAAO,EAAE,WAAW,EAA6B,MAAM,iBAAiB,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EAClB,wBAAwB,EACxB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,SAAS;AACT,yBAAyB;AACzB,iBAAiB,EACjB,uBAAuB,EACvB,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,qBAAqB,EACrB,aAAa;AACb,yBAAyB;AACzB,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,YAAY;AACZ,yBAAyB;AACzB,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,aAAa;AACb,yBAAyB;AACzB,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,WAAW,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/dist/structured.d.ts
CHANGED
|
@@ -57,4 +57,20 @@ export declare function sidraRecords(data: Record<string, string>[]): SidraRecor
|
|
|
57
57
|
* mistaken filter never blanks out the result).
|
|
58
58
|
*/
|
|
59
59
|
export declare function selectSidraColumns(data: Record<string, string>[], campos?: string): Record<string, string>[];
|
|
60
|
+
/**
|
|
61
|
+
* Columns whose values are identifiers, not quantities: SIDRA's "(Código)"
|
|
62
|
+
* twins and the period columns (Ano, Mês, Trimestre, Semestre, Período — the
|
|
63
|
+
* same family `extrairPeriodoSidra` reads). Formatting these as numbers is
|
|
64
|
+
* what turned "2026" into "2.026" and "3106200" into "3.106.200" in the
|
|
65
|
+
* Markdown of four tools (found on 2026-09-02 through the Deep Research
|
|
66
|
+
* document of a municipality).
|
|
67
|
+
*/
|
|
68
|
+
export declare function colunaIdentificadora(coluna: string): boolean;
|
|
69
|
+
/**
|
|
70
|
+
* One SIDRA cell for the Markdown table: quantities get the pt-BR thousands
|
|
71
|
+
* separator (values of 4+ characters, as before), identifiers and periods
|
|
72
|
+
* stay verbatim, empty stays "-". Shared by every SIDRA-backed table renderer
|
|
73
|
+
* — the rule lives here so the four tools cannot drift again.
|
|
74
|
+
*/
|
|
75
|
+
export declare function formatarCelulaSidra(coluna: string, valor: string | undefined): string;
|
|
60
76
|
//# sourceMappingURL=structured.d.ts.map
|
package/dist/structured.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structured.d.ts","sourceRoot":"","sources":["../src/structured.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"structured.d.ts","sourceRoot":"","sources":["../src/structured.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,QAAQ,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC;;;OAGG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,mFAAmF;IACnF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,oBAAoB,GAAG,cAAc,CAwBxE;AAED,MAAM,WAAW,YAAY;IAC3B,2DAA2D;IAC3D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACpC,iCAAiC;IACjC,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,YAAY,CAmBzE;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAC9B,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CA8B1B;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE5D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAKrF"}
|
package/dist/structured.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* `toMcpResult`.
|
|
10
10
|
*/
|
|
11
11
|
import { normalizeText } from "./config.js";
|
|
12
|
+
import { formatNumber } from "./utils/index.js";
|
|
12
13
|
import { ATTRIBUTION_META_KEY, PROVENANCE_META_KEY, projetarProveniencia, rodapeProveniencia, } from "./provenance.js";
|
|
13
14
|
/**
|
|
14
15
|
* Converts a tool's `StructuredToolResult` into the MCP `CallToolResult`.
|
|
@@ -98,4 +99,30 @@ export function selectSidraColumns(data, campos) {
|
|
|
98
99
|
return filtered;
|
|
99
100
|
});
|
|
100
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Columns whose values are identifiers, not quantities: SIDRA's "(Código)"
|
|
104
|
+
* twins and the period columns (Ano, Mês, Trimestre, Semestre, Período — the
|
|
105
|
+
* same family `extrairPeriodoSidra` reads). Formatting these as numbers is
|
|
106
|
+
* what turned "2026" into "2.026" and "3106200" into "3.106.200" in the
|
|
107
|
+
* Markdown of four tools (found on 2026-09-02 through the Deep Research
|
|
108
|
+
* document of a municipality).
|
|
109
|
+
*/
|
|
110
|
+
export function colunaIdentificadora(coluna) {
|
|
111
|
+
return /\(c[oó]digo\)\s*$/i.test(coluna) || /^(ano|trimestre|m[eê]s|semestre|per[ií]odo)\b/i.test(coluna);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* One SIDRA cell for the Markdown table: quantities get the pt-BR thousands
|
|
115
|
+
* separator (values of 4+ characters, as before), identifiers and periods
|
|
116
|
+
* stay verbatim, empty stays "-". Shared by every SIDRA-backed table renderer
|
|
117
|
+
* — the rule lives here so the four tools cannot drift again.
|
|
118
|
+
*/
|
|
119
|
+
export function formatarCelulaSidra(coluna, valor) {
|
|
120
|
+
if (!valor)
|
|
121
|
+
return "-";
|
|
122
|
+
if (colunaIdentificadora(coluna))
|
|
123
|
+
return valor;
|
|
124
|
+
if (!isNaN(Number(valor)) && valor.length > 3)
|
|
125
|
+
return formatNumber(Number(valor));
|
|
126
|
+
return valor;
|
|
127
|
+
}
|
|
101
128
|
//# sourceMappingURL=structured.js.map
|
package/dist/structured.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structured.js","sourceRoot":"","sources":["../src/structured.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"structured.js","sourceRoot":"","sources":["../src/structured.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/censo.d.ts
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { type StructuredToolResult } from "../structured.js";
|
|
3
|
+
/**
|
|
4
|
+
* Tema → tabela SIDRA. EXPORTADO para que `tests/censo-mapa-de-tabelas.test.ts`
|
|
5
|
+
* prove, contra o catálogo oficial do Censo, que cada código daqui é mesmo do
|
|
6
|
+
* Censo Demográfico e mesmo do assunto que a `descricao` promete.
|
|
7
|
+
*
|
|
8
|
+
* POR QUE ISSO PRECISA SER PROVADO. Em 2026-08-31 uma varredura contra a API de
|
|
9
|
+
* Agregados achou **13 das 41 tabelas deste mapa fora do Censo Demográfico**:
|
|
10
|
+
* `saneamento`/2022 apontava para uma tabela da PNAD Contínua sobre renda em
|
|
11
|
+
* domicílios com TV por assinatura; `fecundidade`/2010, para o INPC;
|
|
12
|
+
* `rendimento`/2000, para o Censo Agropecuário; `quilombolas`/2022, para uso de
|
|
13
|
+
* Internet. A tool respondia normalmente, com a `descricao` escrita à mão no
|
|
14
|
+
* cabeçalho — ou seja, devolvia dado de outra pesquisa sob um rótulo que
|
|
15
|
+
* mentia. Nada quebrava: código e descrição moram lado a lado e nunca foram
|
|
16
|
+
* confrontados com a fonte.
|
|
17
|
+
*/
|
|
18
|
+
export declare const CENSO_TABELAS: Record<string, Record<string, {
|
|
19
|
+
tabela: string;
|
|
20
|
+
descricao: string;
|
|
21
|
+
}>>;
|
|
3
22
|
export declare const censoSchema: z.ZodObject<{
|
|
4
23
|
ano: z.ZodOptional<z.ZodEnum<{
|
|
5
24
|
1970: "1970";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"censo.d.ts","sourceRoot":"","sources":["../../src/tools/censo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,OAAO,
|
|
1
|
+
{"version":3,"file":"censo.d.ts","sourceRoot":"","sources":["../../src/tools/censo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,OAAO,EACL,KAAK,oBAAoB,EAI1B,MAAM,kBAAkB,CAAC;AAoB1B;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAChC,MAAM,EACN,MAAM,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAyLtD,CAAC;AAuBF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4DtB,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAErD,gFAAgF;AAChF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAW5B,CAAC;AAOH;;GAEG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA8LhF"}
|
package/dist/tools/censo.js
CHANGED
|
@@ -2,16 +2,31 @@ import { z } from "zod";
|
|
|
2
2
|
import { IBGE_API } from "../types.js";
|
|
3
3
|
import { cacheKey, CACHE_TTL, cachedFetch } from "../cache.js";
|
|
4
4
|
import { withMetrics } from "../metrics.js";
|
|
5
|
-
import { createMarkdownTable
|
|
5
|
+
import { createMarkdownTable } from "../utils/index.js";
|
|
6
6
|
import { parseHttpError, ValidationErrors } from "../errors.js";
|
|
7
7
|
import { territorialLevelHint, territorialLevelList } from "../config.js";
|
|
8
|
-
import { sidraRecords, selectSidraColumns } from "../structured.js";
|
|
8
|
+
import { sidraRecords, selectSidraColumns, formatarCelulaSidra, } from "../structured.js";
|
|
9
9
|
import { extrairPeriodoSidra, NOTA_DERIVACAO_ESTATISTICAS, provenienciaIbge, } from "../provenance.js";
|
|
10
10
|
import { agruparPorParam, estatisticasBlocoSchema, estatisticasParam, estatisticasSidra, topNParam, TOP_N_DEFAULT, } from "../stats.js";
|
|
11
11
|
// Census data is published by SIDRA down to the municipality level.
|
|
12
12
|
const CENSO_NIVEIS = ["1", "2", "3", "6"];
|
|
13
13
|
// Mapping of census data themes to SIDRA tables
|
|
14
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Tema → tabela SIDRA. EXPORTADO para que `tests/censo-mapa-de-tabelas.test.ts`
|
|
16
|
+
* prove, contra o catálogo oficial do Censo, que cada código daqui é mesmo do
|
|
17
|
+
* Censo Demográfico e mesmo do assunto que a `descricao` promete.
|
|
18
|
+
*
|
|
19
|
+
* POR QUE ISSO PRECISA SER PROVADO. Em 2026-08-31 uma varredura contra a API de
|
|
20
|
+
* Agregados achou **13 das 41 tabelas deste mapa fora do Censo Demográfico**:
|
|
21
|
+
* `saneamento`/2022 apontava para uma tabela da PNAD Contínua sobre renda em
|
|
22
|
+
* domicílios com TV por assinatura; `fecundidade`/2010, para o INPC;
|
|
23
|
+
* `rendimento`/2000, para o Censo Agropecuário; `quilombolas`/2022, para uso de
|
|
24
|
+
* Internet. A tool respondia normalmente, com a `descricao` escrita à mão no
|
|
25
|
+
* cabeçalho — ou seja, devolvia dado de outra pesquisa sob um rótulo que
|
|
26
|
+
* mentia. Nada quebrava: código e descrição moram lado a lado e nunca foram
|
|
27
|
+
* confrontados com a fonte.
|
|
28
|
+
*/
|
|
29
|
+
export const CENSO_TABELAS = {
|
|
15
30
|
// População
|
|
16
31
|
populacao: {
|
|
17
32
|
"1970-2010": {
|
|
@@ -36,22 +51,28 @@ const CENSO_TABELAS = {
|
|
|
36
51
|
tabela: "204",
|
|
37
52
|
descricao: "População de 5 anos ou mais por alfabetização e idade",
|
|
38
53
|
},
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
},
|
|
54
|
+
// 2000 não tem entrada: a tabela 752, que estava aqui, não é do Censo
|
|
55
|
+
// Demográfico. Sem substituta conferida, é melhor não ter tema para o ano
|
|
56
|
+
// do que servir outra pesquisa com este rótulo.
|
|
43
57
|
"2010": {
|
|
44
58
|
tabela: "1383",
|
|
45
|
-
descricao: "
|
|
59
|
+
descricao: "Taxa de alfabetização das pessoas de 10 anos ou mais por sexo",
|
|
46
60
|
},
|
|
47
61
|
"2022": { tabela: "9543", descricao: "Taxa de alfabetização por idade, cor/raça e sexo" },
|
|
48
62
|
},
|
|
49
63
|
// Domicílios
|
|
50
64
|
domicilios: {
|
|
51
|
-
"2000": {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
65
|
+
"2000": {
|
|
66
|
+
tabela: "1310",
|
|
67
|
+
descricao: "Domicílios recenseados, por espécie e situação do domicílio",
|
|
68
|
+
},
|
|
69
|
+
"2010": {
|
|
70
|
+
tabela: "1310",
|
|
71
|
+
descricao: "Domicílios recenseados, por espécie e situação do domicílio",
|
|
72
|
+
},
|
|
73
|
+
"2022": { tabela: "4711", descricao: "Domicílios recenseados, por espécie" },
|
|
74
|
+
// "2022-detalhado" não existe mais: apontava para a 9605, que é a tabela de
|
|
75
|
+
// COR OU RAÇA — o mesmo código que o tema cor_raca usa, e corretamente.
|
|
55
76
|
},
|
|
56
77
|
// Idade e sexo
|
|
57
78
|
idade_sexo: {
|
|
@@ -73,18 +94,38 @@ const CENSO_TABELAS = {
|
|
|
73
94
|
},
|
|
74
95
|
// Rendimento
|
|
75
96
|
rendimento: {
|
|
76
|
-
|
|
77
|
-
"2010": {
|
|
97
|
+
// 2000 não tem entrada: a 857, que estava aqui, é do Censo AGROPECUÁRIO.
|
|
98
|
+
"2010": {
|
|
99
|
+
tabela: "3548",
|
|
100
|
+
descricao: "Rendimento nominal médio e mediano das pessoas de 10 anos ou mais",
|
|
101
|
+
},
|
|
102
|
+
"2022": {
|
|
103
|
+
tabela: "10293",
|
|
104
|
+
// Só nível Brasil (N1) na origem — pedir UF ou município devolve erro do
|
|
105
|
+
// SIDRA, que é o comportamento honesto.
|
|
106
|
+
descricao: "Distribuição da massa de rendimento nominal mensal domiciliar per capita",
|
|
107
|
+
},
|
|
78
108
|
},
|
|
79
109
|
// Migração
|
|
80
110
|
migracao: {
|
|
81
111
|
"2000": { tabela: "631", descricao: "População por lugar de nascimento" },
|
|
82
|
-
"2010": {
|
|
112
|
+
"2010": {
|
|
113
|
+
tabela: "1505",
|
|
114
|
+
descricao: "População residente por naturalidade em relação ao município e à UF",
|
|
115
|
+
},
|
|
83
116
|
},
|
|
84
117
|
// Educação
|
|
85
118
|
educacao: {
|
|
86
|
-
|
|
87
|
-
|
|
119
|
+
// 2000 não tem entrada: a 706, que estava aqui, é das Estatísticas do
|
|
120
|
+
// Registro Civil (nascidos vivos).
|
|
121
|
+
"2010": {
|
|
122
|
+
tabela: "3540",
|
|
123
|
+
descricao: "Pessoas de 10 anos ou mais por nível de instrução",
|
|
124
|
+
},
|
|
125
|
+
"2022": {
|
|
126
|
+
tabela: "10061",
|
|
127
|
+
descricao: "Pessoas de 18 anos ou mais por nível de instrução, idade, sexo e cor ou raça",
|
|
128
|
+
},
|
|
88
129
|
},
|
|
89
130
|
// Trabalho
|
|
90
131
|
trabalho: {
|
|
@@ -93,35 +134,80 @@ const CENSO_TABELAS = {
|
|
|
93
134
|
},
|
|
94
135
|
// Indígenas (novo)
|
|
95
136
|
indigenas: {
|
|
96
|
-
"2010": {
|
|
97
|
-
|
|
98
|
-
|
|
137
|
+
"2010": {
|
|
138
|
+
tabela: "3452",
|
|
139
|
+
descricao: "Pessoas indígenas por situação e localização do domicílio, sexo e idade",
|
|
140
|
+
},
|
|
141
|
+
"2022": {
|
|
142
|
+
tabela: "10395",
|
|
143
|
+
descricao: "Pessoas indígenas por sexo e grupos de idade, segundo etnia, povo ou grupo",
|
|
144
|
+
},
|
|
145
|
+
"2022-terras": {
|
|
146
|
+
tabela: "10396",
|
|
147
|
+
descricao: "Pessoas indígenas residentes em Terras Indígenas, por sexo, idade e etnia",
|
|
148
|
+
},
|
|
99
149
|
},
|
|
100
150
|
// Quilombolas (novo)
|
|
101
151
|
quilombolas: {
|
|
102
|
-
"2022": {
|
|
103
|
-
|
|
152
|
+
"2022": {
|
|
153
|
+
tabela: "10089",
|
|
154
|
+
descricao: "População residente, total e quilombola, por sexo e grupos de idade",
|
|
155
|
+
},
|
|
156
|
+
"2022-territorios": {
|
|
157
|
+
tabela: "10090",
|
|
158
|
+
descricao: "População, total e quilombola, residente em Territórios Quilombolas",
|
|
159
|
+
},
|
|
104
160
|
},
|
|
105
161
|
// Saneamento (novo)
|
|
106
162
|
saneamento: {
|
|
107
|
-
"2000": {
|
|
108
|
-
|
|
109
|
-
|
|
163
|
+
"2000": {
|
|
164
|
+
tabela: "1453",
|
|
165
|
+
descricao: "Domicílios particulares permanentes por esgotamento sanitário e abastecimento de água",
|
|
166
|
+
},
|
|
167
|
+
"2010": {
|
|
168
|
+
tabela: "3218",
|
|
169
|
+
descricao: "Domicílios particulares permanentes por forma de abastecimento de água",
|
|
170
|
+
},
|
|
171
|
+
"2022": {
|
|
172
|
+
tabela: "6803",
|
|
173
|
+
descricao: "Domicílios particulares permanentes ocupados por ligação à rede de esgoto",
|
|
174
|
+
},
|
|
110
175
|
},
|
|
111
176
|
// Deficiência (novo)
|
|
112
177
|
deficiencia: {
|
|
113
|
-
|
|
114
|
-
|
|
178
|
+
// 2000 não tem entrada: a 2649, que estava aqui, é da Pesquisa Anual de
|
|
179
|
+
// Serviços (transportes).
|
|
180
|
+
"2010": {
|
|
181
|
+
tabela: "3426",
|
|
182
|
+
descricao: "População residente por tipo de deficiência, segundo sexo e cor ou raça",
|
|
183
|
+
},
|
|
184
|
+
"2022": {
|
|
185
|
+
tabela: "10125",
|
|
186
|
+
descricao: "Pessoas de 2 anos ou mais, total e com deficiência, por sexo e grupos de idade",
|
|
187
|
+
},
|
|
115
188
|
},
|
|
116
189
|
// Nupcialidade/Estado civil (novo)
|
|
117
190
|
nupcialidade: {
|
|
118
|
-
"2000": {
|
|
119
|
-
|
|
191
|
+
"2000": {
|
|
192
|
+
tabela: "1624",
|
|
193
|
+
descricao: "Pessoas de 10 anos ou mais de idade por sexo e estado civil",
|
|
194
|
+
},
|
|
195
|
+
"2010": {
|
|
196
|
+
tabela: "1541",
|
|
197
|
+
descricao: "Pessoas de 10 anos ou mais de idade, por estado civil",
|
|
198
|
+
},
|
|
120
199
|
},
|
|
121
200
|
// Fecundidade (novo)
|
|
122
201
|
fecundidade: {
|
|
123
|
-
|
|
124
|
-
"2010": {
|
|
202
|
+
// 2000 não tem entrada: a 2443, que estava aqui, é de FAMÍLIAS por tipo.
|
|
203
|
+
"2010": {
|
|
204
|
+
tabela: "10075",
|
|
205
|
+
descricao: "Mulheres de 12 anos ou mais por número de filhos tidos nascidos vivos",
|
|
206
|
+
},
|
|
207
|
+
"2022": {
|
|
208
|
+
tabela: "10075",
|
|
209
|
+
descricao: "Mulheres de 12 anos ou mais por número de filhos tidos nascidos vivos",
|
|
210
|
+
},
|
|
125
211
|
},
|
|
126
212
|
};
|
|
127
213
|
// Available themes
|
|
@@ -400,13 +486,7 @@ function formatCensoTable(data) {
|
|
|
400
486
|
// Limit to first 30 rows
|
|
401
487
|
const displayRows = dataRows.slice(0, 30);
|
|
402
488
|
const headers = columns.map((col) => headerRow[col] || col);
|
|
403
|
-
const rows = displayRows.map((row) => columns.map((col) =>
|
|
404
|
-
const value = row[col];
|
|
405
|
-
if (value && !isNaN(Number(value)) && value.length > 3) {
|
|
406
|
-
return formatNumber(Number(value));
|
|
407
|
-
}
|
|
408
|
-
return value || "-";
|
|
409
|
-
}));
|
|
489
|
+
const rows = displayRows.map((row) => columns.map((col) => formatarCelulaSidra(headerRow[col] || col, row[col])));
|
|
410
490
|
let output = createMarkdownTable(headers, rows);
|
|
411
491
|
if (dataRows.length > 30) {
|
|
412
492
|
output += `\n_Mostrando 30 de ${dataRows.length} registros._\n`;
|