bcb-br-mcp 1.14.1 → 1.14.2

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 CHANGED
@@ -10,6 +10,7 @@
10
10
  [![GitHub Sponsors](https://img.shields.io/github/sponsors/SidneyBissoli?logo=githubsponsors&label=Sponsor&color=db61a2)](https://github.com/sponsors/SidneyBissoli)
11
11
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
12
12
  [![AllMCPs Verified](https://allmcps.com/api/badge/sidneybissoli-bcb-br-mcp)](https://allmcps.com/mcp/sidneybissoli-bcb-br-mcp)
13
+ [![mcpindex](https://mcpindex.ai/api/v1/badge/io-github-sidneybissoli-bcb-br-mcp)](https://mcpindex.ai/server/io-github-sidneybissoli-bcb-br-mcp)
13
14
 
14
15
  [Leia em Português](README.pt-BR.md)
15
16
 
package/README.pt-BR.md CHANGED
@@ -9,6 +9,7 @@
9
9
  [![GitHub stars](https://img.shields.io/github/stars/SidneyBissoli/bcb-br-mcp?style=flat&logo=github)](https://github.com/SidneyBissoli/bcb-br-mcp)
10
10
  [![GitHub Sponsors](https://img.shields.io/github/sponsors/SidneyBissoli?logo=githubsponsors&label=Sponsor&color=db61a2)](https://github.com/sponsors/SidneyBissoli)
11
11
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
12
+ [![mcpindex](https://mcpindex.ai/api/v1/badge/io-github-sidneybissoli-bcb-br-mcp)](https://mcpindex.ai/server/io-github-sidneybissoli-bcb-br-mcp)
12
13
 
13
14
  [Read in English](README.md)
14
15
 
@@ -90,4 +90,38 @@ export declare function errorText(result: unknown): string;
90
90
  * do erro que NÓS escrevemos.
91
91
  */
92
92
  export declare function classifyThrown(error: unknown): ErrorClass;
93
+ /**
94
+ * Classe de um erro JSON-RPC do PROTOCOLO, pelo código antes da mensagem.
95
+ *
96
+ * POR QUE ELE CHEGA AQUI AGORA. Até 24/09/2026 este arquivo só era chamado de
97
+ * dentro do handler, com a exceção da tool na mão — e o cabeçalho acima ainda
98
+ * registra o limite daquele desenho: *erro de validação de esquema NÃO chega a
99
+ * esta camada; o SDK o responde antes do handler, e a chamada não é contada nem
100
+ * como chamada nem como erro*. Era verdade, e era o defeito: a recusa de esquema
101
+ * não gerava linha NENHUMA de telemetria. Medido na produção em 24/09/2026 pela
102
+ * rota do dono, ela sai como HTTP **200** com `result.isError: true` e sem
103
+ * código JSON-RPC; e ferramenta inexistente sai como **200** com o código
104
+ * **−32602** (não −32601, como se supunha). Desde então a telemetria lê o
105
+ * ENVELOPE da resposta (src/envelope.ts) e estes casos passam a existir.
106
+ *
107
+ * Os códigos reservados pela especificação JSON-RPC 2.0 dizem, sem ambiguidade
108
+ * de idioma, de quem é o conserto:
109
+ *
110
+ * - −32700 parse error, −32600 invalid request, −32601 method not found e
111
+ * −32602 invalid params são o CHAMADOR mandando algo que o protocolo
112
+ * recusa. É `contrato` — e o painel exclui `contrato` da taxa de erro
113
+ * (`eh_recusa_de_contrato()`), porque ferramenta que recusa chamada
114
+ * malformada está funcionando;
115
+ * - −32603 internal error é erro NOSSO, que escapou. É `defeito`, e por
116
+ * decisão do dono em 24/09/2026 ele entra na fila de saúde do painel: sem
117
+ * isso passaríamos a medir e continuaríamos a não agir.
118
+ *
119
+ * Código fora dessa faixa (erro definido pelo servidor, −32000 e abaixo) cai
120
+ * na mensagem, que é o caminho de `classifyError`.
121
+ *
122
+ * Cópia FIEL de sih-br-mcp/worker/src/call-shape.ts, onde a função estreou:
123
+ * classe medida por servidor com classificador diferente não é comparável, e
124
+ * comparar os sete é a razão de existir da seção de saúde do painel.
125
+ */
126
+ export declare function classeDoErroRpc(code: number | undefined, message: string): ErrorClass;
93
127
  //# sourceMappingURL=call-shape.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"call-shape.d.ts","sourceRoot":"","sources":["../src/call-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,qEAAqE;AACrE,MAAM,MAAM,UAAU;AACpB,gHAAgH;AAC9G,UAAU;AACZ,gFAAgF;GAC9E,gBAAgB;AAClB,sEAAsE;GACpE,OAAO;AACT,mFAAmF;GACjF,SAAS;AACX,yFAAyF;GACvF,OAAO,CAAC;AAEZ;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAmEzD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAOhD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAcjD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAUzD"}
1
+ {"version":3,"file":"call-shape.d.ts","sourceRoot":"","sources":["../src/call-shape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,qEAAqE;AACrE,MAAM,MAAM,UAAU;AACpB,gHAAgH;AAC9G,UAAU;AACZ,gFAAgF;GAC9E,gBAAgB;AAClB,sEAAsE;GACpE,OAAO;AACT,mFAAmF;GACjF,SAAS;AACX,yFAAyF;GACvF,OAAO,CAAC;AAEZ;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAmEzD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAOhD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAcjD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAUzD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,CAIrF"}
@@ -166,4 +166,44 @@ export function classifyThrown(error) {
166
166
  }
167
167
  return classifyError(error instanceof Error ? error.message : String(error));
168
168
  }
169
+ /**
170
+ * Classe de um erro JSON-RPC do PROTOCOLO, pelo código antes da mensagem.
171
+ *
172
+ * POR QUE ELE CHEGA AQUI AGORA. Até 24/09/2026 este arquivo só era chamado de
173
+ * dentro do handler, com a exceção da tool na mão — e o cabeçalho acima ainda
174
+ * registra o limite daquele desenho: *erro de validação de esquema NÃO chega a
175
+ * esta camada; o SDK o responde antes do handler, e a chamada não é contada nem
176
+ * como chamada nem como erro*. Era verdade, e era o defeito: a recusa de esquema
177
+ * não gerava linha NENHUMA de telemetria. Medido na produção em 24/09/2026 pela
178
+ * rota do dono, ela sai como HTTP **200** com `result.isError: true` e sem
179
+ * código JSON-RPC; e ferramenta inexistente sai como **200** com o código
180
+ * **−32602** (não −32601, como se supunha). Desde então a telemetria lê o
181
+ * ENVELOPE da resposta (src/envelope.ts) e estes casos passam a existir.
182
+ *
183
+ * Os códigos reservados pela especificação JSON-RPC 2.0 dizem, sem ambiguidade
184
+ * de idioma, de quem é o conserto:
185
+ *
186
+ * - −32700 parse error, −32600 invalid request, −32601 method not found e
187
+ * −32602 invalid params são o CHAMADOR mandando algo que o protocolo
188
+ * recusa. É `contrato` — e o painel exclui `contrato` da taxa de erro
189
+ * (`eh_recusa_de_contrato()`), porque ferramenta que recusa chamada
190
+ * malformada está funcionando;
191
+ * - −32603 internal error é erro NOSSO, que escapou. É `defeito`, e por
192
+ * decisão do dono em 24/09/2026 ele entra na fila de saúde do painel: sem
193
+ * isso passaríamos a medir e continuaríamos a não agir.
194
+ *
195
+ * Código fora dessa faixa (erro definido pelo servidor, −32000 e abaixo) cai
196
+ * na mensagem, que é o caminho de `classifyError`.
197
+ *
198
+ * Cópia FIEL de sih-br-mcp/worker/src/call-shape.ts, onde a função estreou:
199
+ * classe medida por servidor com classificador diferente não é comparável, e
200
+ * comparar os sete é a razão de existir da seção de saúde do painel.
201
+ */
202
+ export function classeDoErroRpc(code, message) {
203
+ if (code === -32700 || code === -32600 || code === -32601 || code === -32602)
204
+ return "contrato";
205
+ if (code === -32603)
206
+ return "defeito";
207
+ return classifyError(message);
208
+ }
169
209
  //# sourceMappingURL=call-shape.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"call-shape.js","sourceRoot":"","sources":["../src/call-shape.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"call-shape.js","sourceRoot":"","sources":["../src/call-shape.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bcb-br-mcp",
3
- "version": "1.14.1",
3
+ "version": "1.14.2",
4
4
  "mcpName": "io.github.SidneyBissoli/bcb-br-mcp",
5
5
  "description": "MCP server for the Brazilian Central Bank (Banco Central do Brasil, BCB): SGS time series (Selic, IPCA, exchange rates, GDP and a curated catalogue of indicators), Focus market expectations, PTAX exchange rates and the Olinda open-data platform, with a provenance block on every response.",
6
6
  "type": "module",
@@ -17,7 +17,8 @@
17
17
  "test": "vitest run",
18
18
  "typecheck": "tsc --noEmit",
19
19
  "dump:surface": "node scripts/dump-surface.mjs",
20
- "smoke": "node scripts/smoke-mcp.mjs"
20
+ "smoke": "node scripts/smoke-mcp.mjs",
21
+ "manifest:lhm": "node scripts/gen-lhm-manifest.mjs"
21
22
  },
22
23
  "keywords": [
23
24
  "mcp",
@@ -54,6 +55,10 @@
54
55
  "bugs": {
55
56
  "url": "https://github.com/SidneyBissoli/bcb-br-mcp/issues"
56
57
  },
58
+ "funding": {
59
+ "type": "github",
60
+ "url": "https://github.com/sponsors/SidneyBissoli"
61
+ },
57
62
  "homepage": "https://bcb.sidneybissoli.com",
58
63
  "engines": {
59
64
  "node": ">=22"