Banco Central do Brasil (BCB) — SGS Time Series MCP Server
Server Details
Banco Central do Brasil (BCB): SGS series, Focus expectations, PTAX, stats + provenance. 17 tools.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- SidneyBissoli/bcb-br-mcp
- GitHub Stars
- 6
- Server Listing
- Banco Central do Brasil (BCB) — SGS MCP
Available Tools
17 toolsbcb_buscar_serieBuscar série no catálogoARead-onlyIdempotentInspect
Busca séries do BCB por palavra-chave (ou pelo código) em DUAS camadas: o catálogo curado local de 135 séries verificadas contra a origem, que vem primeiro e com fonteNome dizendo se o nome é transcrito do portal do BCB ou herdado, e o índice do Portal de Dados Abertos do BCB, com milhares de séries identificadas por código. Ignora acentos e maiúsculas ('inflacao' encontra 'Inflação'); vários termos são combinados com E ('ipca servicos'). Quando usar: para descobrir o código de uma série antes de consultar valores. Quando NÃO usar: para navegar tudo por categoria use bcb_series_populares; para valores use bcb_serie_valores. Retorna: termo, totalEncontradas, series (cada item com codigo, nome, origem — 'curado' ou 'indice' — e, no índice, dataset com a página do portal), catalogo (origem, obtidoEm, seriesIndexadas, cobertura) e, quando aplicável, observacao, avisos, mensagem e sugestao. Cobertura: o índice NÃO é o SGS inteiro, portanto não encontrar aqui não prova que a série não exista — o campo catalogo.cobertura diz isso explicitamente em toda resposta. Comportamento de rede: o índice é servido de cache com validade de 24 h e a renovação é feita pela primeira busca após o vencimento (uma requisição ao portal, ~1 s); as demais buscas não tocam a rede. Se o portal estiver fora, a busca degrada para o catálogo curado (ou para o último índice obtido) e sinaliza em avisos, sempre com a data de obtenção visível.
| Name | Required | Description | Default |
|---|---|---|---|
| termo | Yes | Termo de busca (mínimo 2 caracteres) ou o código da série. Vários termos são combinados com E. | |
| limite | No | Máximo de séries a devolver (1-100, padrão: 20). `totalEncontradas` traz o total antes do corte. |
Output Schema
| Name | Required | Description |
|---|---|---|
| termo | Yes | Termo pesquisado |
| avisos | No | Avisos de degradação (índice vencido ou indisponível) |
| series | Yes | Séries que correspondem ao termo — as do catálogo curado primeiro |
| catalogo | Yes | Proveniência do índice usado na busca |
| mensagem | No | Mensagem exibida quando nada é encontrado |
| sugestao | No | Sugestões de termos alternativos |
| observacao | No | Aviso de corte quando há mais resultados que `limite` |
| provenance | Yes | Um bloco por procedência que contribuiu com esta resposta (contrato v1.0; licenças nunca se fundem) |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| totalEncontradas | Yes | Quantidade de séries encontradas, antes do corte por `limite` |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
As anotações já declaram readOnlyHint, openWorldHint e idempotentHint, e a descrição expande isso com comportamento relevante: normalização de acentos/caixa, combinação com E, cache de 24h, renovação na primeira busca após expiração, e degradação para o catálogo curado com avisos caso o portal esteja fora. Nada contradiz as anotações.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A descrição é longa, mas bem organizada em blocos temáticos (comportamento, quando usar, retorno, cobertura, rede) e cada bloco adiciona informação útil. Não há frases vazias, embora alguns detalhes de formato de retorno poderiam ser deixados apenas ao output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Mesmo com output schema presente, a descrição cobre cenários importantes: cobertura parcial do índice, comportamento de cache e rede, degradação em falha do portal, e o significado dos campos de saída. Um agente consegue decidir corretamente quando e como chamar a ferramenta sem ambiguidade.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
O schema já cobre 100% dos parâmetros, e a descrição acrescenta valor ao explicar que o termo aceita código, que múltiplos termos são combinados com E, e que a busca ignora acentos e maiúsculas. O parâmetro `limite` está bem documentado no schema, então a descrição não precisa repeti-lo.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A descrição afirma com verbo e recurso específicos: 'Busca séries do BCB por palavra-chave (ou pelo código)' em duas camadas distintas. Diferencia-se claramente dos irmãos ao nomear bcb_series_populares e bcb_serie_valores como alternativas para outros propósitos.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Traz seções explícitas 'Quando usar' e 'Quando NÃO usar', indicando que serve para descobrir o código antes de consultar valores e que navegação por categoria ou obtenção de valores devem usar outros tools. Também alerta sobre a cobertura parcial do índice, o que orienta a decisão de uso.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bcb_cambio_cotacaoCotação de câmbio (PTAX)ARead-onlyIdempotentInspect
Consulta a cotação PTAX de uma moeda contra o real, em um dia específico ou num intervalo de datas. Padrão: dólar americano (USD). Devolve compra, venda, data/hora e tipo de boletim; para moedas não-dólar devolve também a paridade contra o USD, com a origem qualificada. Quando usar: para a cotação oficial de fechamento de um dia ou a série de um período curto. Quando NÃO usar: para a série histórica longa do dólar como série temporal do SGS use bcb_serie_valores (códigos 1 = livre venda, 3698 = PTAX venda, 3697 = PTAX compra, 3695 = PTAX média) — esta tool é a fonte primária do boletim, com compra e venda no mesmo registro; para descobrir o símbolo da moeda use bcb_cambio_moedas. Retorna: moeda, periodo (dataInicial, dataFinal, janelaPadrao), totalRegistros, cotacoes, disclaimer, qualificacaoParidade (só para moedas não-dólar), urlConsulta, consultadoEm e, quando aplicável, observacao. Sem datas, cobre os últimos 7 dias (para atravessar fim de semana e feriado). Fonte: PTAX / Cotações e boletins de câmbio do Banco Central do Brasil, via Olinda OData. A resposta repassa literalmente o disclaimer de responsabilidade do BCB, em disclaimer. Cotações existem só em dia útil com fechamento de câmbio. As paridades de moedas não-dólar vêm de agência de informação (Refinitiv), redistribuídas pelo BCB — não são apuradas pelo Banco Central.
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Dia específico (yyyy-MM-dd ou dd/MM/yyyy). Não combine com dataInicial/dataFinal. | |
| moeda | No | Símbolo da moeda (ex.: USD, EUR, GBP, JPY). Padrão: USD. | USD |
| limite | No | Máximo de boletins a devolver (1-1000, padrão 100) | |
| dataFinal | No | Fim do intervalo (yyyy-MM-dd ou dd/MM/yyyy). Padrão: hoje. | |
| dataInicial | No | Início do intervalo (yyyy-MM-dd ou dd/MM/yyyy). Padrão: 7 dias antes do fim. |
Output Schema
| Name | Required | Description |
|---|---|---|
| moeda | Yes | |
| periodo | Yes | |
| cotacoes | Yes | |
| disclaimer | Yes | Disclaimer de responsabilidade do BCB, repassado literalmente |
| observacao | No | |
| provenance | Yes | Um bloco por procedência que contribuiu com esta resposta (contrato v1.0; licenças nunca se fundem) |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| urlConsulta | Yes | |
| consultadoEm | Yes | |
| totalRegistros | Yes | |
| qualificacaoParidade | No | Qualificação da origem das paridades não-dólar |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds substantial context beyond that: quotes exist only on business days, non-USD parities come from Refinitiv and are not computed by the BCB, the disclaimer is passed through literally, and the response exposes consultation metadata. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured and front-loaded with purpose, followed by usage guidance, return fields, defaults, and source caveats. The return-field enumeration is somewhat redundant with the output schema, but nearly every sentence carries useful decision-making or behavioral information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description does not need to explain return values, yet it still gives a useful field overview. It covers source attribution, business-day limitations, non-USD parity handling, disclaimers, and sibling-tool routing, making the tool callable correctly in nearly any context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds some rationale for defaults, like the 7-day window crossing weekends/holidays, but does not meaningfully extend the parameter semantics beyond what the schema already documents, such as date formats, limits, and default values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Consulta a cotação PTAX de uma moeda contra o real' with date range support. It clearly distinguishes this tool from siblings by naming what it is not (long SGS series) and what it is (primary PTAX bulletin source with compra and venda in the same record).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly gives 'Quando usar' and 'Quando NÃO usar' sections, naming bcb_serie_valores for long historical series and bcb_cambio_moedas for currency symbols. It also explains the default 7-day window as a way to cross weekends and holidays, giving concrete selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bcb_cambio_moedasMoedas com cotação no BCBARead-onlyIdempotentInspect
Lista as moedas com cotação publicada pelo Banco Central, com símbolo, nome e tipo, e aceita um termo para filtrar. Quando usar: para descobrir o símbolo correto antes de chamar bcb_cambio_cotacao (é a causa mais comum de cotação vazia). Quando NÃO usar: para valores de cotação. Retorna: termo, totalMoedas, moedas (simbolo, nome, tipo), disclaimer, qualificacaoParidade, urlConsulta e consultadoEm. Fonte: PTAX / Cotações e boletins de câmbio do Banco Central do Brasil, via Olinda OData. A resposta repassa literalmente o disclaimer de responsabilidade do BCB, em disclaimer. Cotações existem só em dia útil com fechamento de câmbio.
| Name | Required | Description | Default |
|---|---|---|---|
| termo | No | Filtro por símbolo ou nome (ex.: 'EUR', 'libra'). Opcional. |
Output Schema
| Name | Required | Description |
|---|---|---|
| termo | No | Termo aplicado no filtro; nulo quando não foi informado |
| moedas | Yes | |
| disclaimer | Yes | |
| observacao | No | |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| totalMoedas | Yes | |
| urlConsulta | Yes | |
| consultadoEm | Yes | |
| qualificacaoParidade | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds meaningful context: it forwards the BCB disclaimer verbatim, names the data source (Olinda OData/PTAX), and warns that quotes only exist on business days with FX closing. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized with clear labels ('Quando usar', 'Quando NÃO usar', 'Retorna', 'Fonte') and every sentence contributes useful information. It is somewhat long, but the structure makes it scannable and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter, an output schema, and safety annotations, the description provides all needed context: purpose, usage decision, return fields, source, disclaimer handling, and availability caveat. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'termo' has 100% schema coverage and is already described with examples ('EUR', 'libra') and optionality. The description only repeats that it accepts a filter term, adding no meaningful semantics beyond the schema, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Lista') and resource ('moedas com cotação publicada pelo Banco Central'), and specifies the returned fields (símbolo, nome, tipo). It also distinguishes itself from bcb_cambio_cotacao by explicitly saying it is not for cotação values.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit 'Quando usar' guidance: to discover the correct symbol before calling bcb_cambio_cotacao, and explicit 'Quando NÃO usar' guidance: for exchange rates themselves. This clearly routes the agent to the correct sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bcb_compararComparar sériesARead-onlyIdempotentInspect
Compara de 2 a 5 séries temporais no MESMO período (dataInicial e dataFinal obrigatórias), calculando a variação percentual de cada uma e ordenando-as num ranking (maior para menor variação). Série de nível entra pela variação entre as pontas; série que já é variação por período (IPCA, INPC, IGP-M mensais do catálogo; Selic/CDI acumulados no mês; poupança) entra pelo ACUMULADO encadeado do período — cada item diz em metodo qual conta foi feita, então "qual índice de preço subiu mais em 2024" é esta tool. Quando usar: para comparar/correlacionar a evolução de vários indicadores lado a lado. Quando NÃO usar: para uma única série use bcb_variacao. Retorna: periodo, totalSeries, seriesComDados, seriesComErro, ranking (cada item com posicao, codigo, nome, metodo, valorInicial, valorFinal, variacaoPercentual, maximo, minimo, media) e erros. Resiliente: séries sem dados no período, e séries de acumulado móvel (IPCA em 12 meses), são isoladas em erros sem invalidar a comparação. Periodicidades diferentes: comparar uma série diária com uma mensal alinha pontos que não são comparáveis, e a resposta avisa isso em aviso; informe frequencia (mensal|trimestral|anual) para harmonizar todas na mesma grade antes de comparar, escolhendo a convenção em agregacao. Janelas longas em séries diárias são fatiadas automaticamente (limite de 10 anos da API do BCB). Comportamento: consome a API pública SGS do Banco Central do Brasil — sem autenticação, chave de API ou cadastro, e sem limite de requisições divulgado (uso é best-effort). Em falha transitória ou timeout a chamada é repetida automaticamente (até 3 tentativas, backoff exponencial); persistindo o erro, retorna isError: true com mensagem em português (HTTP 404 = série inexistente ou sem dados no período solicitado). O resultado vem como JSON tanto em texto quanto em structuredContent (conforme o outputSchema); datas no formato dd/MM/yyyy e valores numéricos (ponto decimal).
| Name | Required | Description | Default |
|---|---|---|---|
| codigos | Yes | Array com 2 a 5 códigos de séries para comparar | |
| agregacao | No | Como agregar os valores de cada período quando `frequencia` é informada. `ultimo` (padrão) serve a nível de preço, taxa e índice; `soma` a fluxo; `acumulada` a séries que JÁ SÃO variação percentual (IPCA mensal, por exemplo), compondo geometricamente — somar 12 variações mensais NÃO dá a inflação do ano. | ultimo |
| dataFinal | Yes | Data final (yyyy-MM-dd ou dd/MM/yyyy) | |
| frequencia | No | Opcional: reamostra a série para esta frequência antes de responder (só agrega para períodos MAIORES; pedir frequência mais fina que a da série é recusado). Útil para comparar séries de periodicidades diferentes. | |
| dataInicial | Yes | Data inicial (yyyy-MM-dd ou dd/MM/yyyy) |
Output Schema
| Name | Required | Description |
|---|---|---|
| aviso | No | Presente quando as séries comparadas têm periodicidades diferentes e nenhuma harmonização foi pedida — os números do ranking, nesse caso, não são diretamente comparáveis entre si. |
| erros | Yes | Séries que não retornaram dados, com o motivo |
| periodo | Yes | Janela temporal comparada |
| ranking | Yes | Séries ordenadas pela variação percentual (maior para menor) |
| derivacao | Yes | Origem dos números calculados: o que é derivado, por qual motor e com quais convenções |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| totalSeries | Yes | Quantidade de séries solicitadas |
| harmonizacao | No | Presente quando `frequencia` foi informada: descreve a reamostragem aplicada. Valor DERIVADO — calculado por este servidor, não publicado pelo Banco Central. |
| seriesComErro | Yes | Quantidade de séries sem dados ou com erro |
| seriesComDados | Yes | Quantidade de séries com dados no período |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, and the description is fully consistent with these. Beyond the annotations, it discloses substantial behavior: how each series type is computed (level via endpoints, period-variation via chained accumulation with `metodo` in each item), resilience behavior (empty series and 12-month moving IPCA isolated in `erros` without invalidating the comparison), auto-slicing of long daily windows at the BCB's 10-year API limit, retry policy (up to 3 attempts, exponential backoff), the best-effort no-auth nature of the SGS API, and error semantics (isError with Portuguese message, 404 meaning). This is rich, decision-relevant behavioral context that no structured field conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place given the tool's complexity (5 parameters, mixed series semantics, aggregation conventions, multiple edge cases). It is well-structured and front-loaded: the core purpose and main output shape lead, followed by when-to-use, return structure, resilience, periodicity handling, API behavior, and output format. A small amount of trimming would be possible (e.g., the retry mechanics could be condensed), but it is organized logically and dense with signal rather than padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with this complexity — comparison logic, two series-semantic families, aggregation enum, periodicity harmonization, API constraints, and error handling — the description is remarkably complete. It covers the full invoke decision surface: required date range, the 2-5 code constraint, the ranking return shape, edge cases (data gaps, moving-average series, mismatched periodicities, long windows), transport behavior (no auth, retries, 404 semantics), and output conventions (JSON in text and structuredContent, dd/MM/yyyy dates). With an output schema present, it need not enumerate return values further; nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuinely non-obvious semantics beyond the schema. For `agregacao`, it explains the mapping: `ultimo` suits level/price/tax/index series, `soma` suits flows, and `acumulada` is for series that are ALREADY percentage variation — with the critical warning that 'somar 12 variações mensais NÃO dá a inflação do ano' (geometric composition required). For `frequencia`, it clarifies that it only aggregates to larger periods and that finer requests are refused. The description also reinforces that dataInicial/dataFinal are mandatory, matching the schema's required array.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Compara de 2 a 5 séries temporais no MESMO período', then states the exact computation (variação percentual) and output shape (ranking ordenado). It explicitly differentiates from a sibling: 'para uma única série use bcb_variacao', and gives a concrete example scenario ('qual índice de preço subiu mais em 2024 é esta tool'). An agent can select this tool and distinguish it from bcb_variacao without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit selection criteria with both positive and negative framing: 'Quando usar: para comparar/correlacionar a evolução de vários indicadores lado a lado' and 'Quando NÃO usar: para uma única série use bcb_variacao'. It also gives conditional guidance for the `frequencia` parameter ('Útil para comparar séries de periodicidades diferentes') and warns against requesting a finer frequency than the series. This is model usage-guideline content.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bcb_correlacaoCorrelacionar sériesARead-onlyIdempotentInspect
Calcula a correlação estatística entre 2 a 5 séries temporais do BCB no MESMO período (dataInicial e dataFinal obrigatórias), par a par. Quando usar: para medir se dois indicadores se movem juntos (ex.: dólar e Selic, IPCA e IGP-M). Quando NÃO usar: para comparar a variação de cada série lado a lado use bcb_comparar; para uma série só use bcb_variacao. Métodos: pearson (padrão) mede relação LINEAR entre os valores; spearman mede relação MONÓTONA entre os postos e é o adequado quando a relação não é reta ou quando uma série fica parada em platôs (taxa de juros entre reuniões do Copom). Base: nivel (padrão) correlaciona os valores; variacao correlaciona a mudança percentual de um ponto para o outro — prefira variacao quando as duas séries têm tendência (preço, índice, estoque), porque o nível de duas séries crescentes tem correlação alta só porque ambas crescem com o tempo. Retorna: periodo, metodo, base, series, alinhamento (datas cruzadas, completas e parciais), pares (cada um com codigoA/codigoB, coeficiente entre -1 e 1, n, descartados e interpretacao em prosa), erros e derivacao. Coeficiente que não pode ser calculado vem null com motivo — nunca 0, que significaria ausência medida de relação. Periodicidades diferentes são RECUSADAS, não avisadas: cruzar uma série diária com uma mensal por data casa só as datas coincidentes (cerca de 7 por ano) e produziria um coeficiente sobre esse punhado; informe frequencia para harmonizar todas na mesma grade antes de correlacionar. Correlação não estabelece causalidade. Comportamento: consome a API pública SGS do Banco Central do Brasil — sem autenticação, chave de API ou cadastro, e sem limite de requisições divulgado (uso é best-effort). Em falha transitória ou timeout a chamada é repetida automaticamente (até 3 tentativas, backoff exponencial); persistindo o erro, retorna isError: true com mensagem em português (HTTP 404 = série inexistente ou sem dados no período solicitado). O resultado vem como JSON tanto em texto quanto em structuredContent (conforme o outputSchema); datas no formato dd/MM/yyyy e valores numéricos (ponto decimal).
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | `nivel` correlaciona os valores; `variacao` correlaciona a mudança percentual de um ponto para o seguinte. Prefira `variacao` quando as duas séries têm tendência: o nível de duas séries crescentes tem correlação alta só porque ambas crescem com o tempo. | nivel |
| metodo | No | `pearson` mede relação linear entre os valores; `spearman` mede relação monótona entre os postos (com posto médio nos empates) e é o adequado quando a relação não é reta ou quando uma das séries fica parada em platôs, como a Selic entre reuniões do Copom. | pearson |
| codigos | Yes | Array com 2 a 5 códigos de séries para correlacionar par a par | |
| agregacao | No | Como agregar os valores de cada período quando `frequencia` é informada. `ultimo` (padrão) serve a nível de preço, taxa e índice; `soma` a fluxo; `acumulada` a séries que JÁ SÃO variação percentual (IPCA mensal, por exemplo), compondo geometricamente — somar 12 variações mensais NÃO dá a inflação do ano. | ultimo |
| dataFinal | Yes | Data final (yyyy-MM-dd ou dd/MM/yyyy) | |
| frequencia | No | Opcional: reamostra a série para esta frequência antes de responder (só agrega para períodos MAIORES; pedir frequência mais fina que a da série é recusado). Útil para comparar séries de periodicidades diferentes. | |
| dataInicial | Yes | Data inicial (yyyy-MM-dd ou dd/MM/yyyy) |
Output Schema
| Name | Required | Description |
|---|---|---|
| base | Yes | Se o cálculo usou os valores ou as variações |
| erros | Yes | Séries que não retornaram dados, com o motivo |
| pares | Yes | Um item por par de séries |
| metodo | Yes | Método aplicado |
| series | Yes | Séries que entraram no cálculo |
| periodo | Yes | Janela temporal correlacionada |
| derivacao | Yes | Origem dos números calculados: o que é derivado, por qual motor e com quais convenções |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença |
| alinhamento | Yes | Como as grades foram cruzadas. `completas` é o que efetivamente entra num coeficiente: datas em que TODAS as séries publicam. A distância entre `datas` e `completas` é a medida de quanto as séries não se sobrepõem. |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| harmonizacao | No | Presente quando `frequencia` foi informada: descreve a reamostragem aplicada. Valor DERIVADO — calculado por este servidor, não publicado pelo Banco Central. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, and the description is fully consistent with them. Beyond the annotations, it discloses the external API contract (SGS, no auth or API key, no disclosed rate limit, best-effort), the retry policy (up to 3 attempts with exponential backoff), error semantics (isError: true, Portuguese messages, HTTP 404 meaning), the null-with-motivo convention vs 0, and the refusal of mixed periodicities. This is exactly the behavioral context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long (~350 words) but front-loaded: purpose first, usage guidance second, parameter decision rules third, and behavioral/error details last. The length is justified by 7 parameters, 4 enums, and an output schema, and nearly every sentence carries information. Minor deduction because the metodo/base explanations partially duplicate what the input schema already states.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though an output schema exists, the description adds the semantic meaning of the return contract: the `pares` structure with `interpretacao` in prose, `alinhamento` types (datas cruzadas, completas e parciais), null with `motivo` never 0, and the dd/MM/yyyy date and decimal-point number formats. It also covers external dependencies, failure modes, retries, the frequency-harmonization workflow, and the causation caveat — nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter, establishing a baseline of 3. The description adds value beyond that by explaining the reasoning: why mixing daily with monthly series is refused (~7 coincident dates per year), why `variacao` base is preferred for trending series, and why `spearman` suits plateaued series like Selic between Copom meetings. It does not add syntax-level detail absent from the schema, so a 4 rather than a 5 is warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource ('Calcula a correlação estatística entre 2 a 5 séries temporais do BCB') with a hard constraint (MESMO período, dataInicial e dataFinal obrigatórias). It explicitly names the siblings it is not — bcb_comparar for side-by-side comparison and bcb_variacao for a single series — so an agent can distinguish the tool without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description has explicit 'Quando usar' and 'Quando NÃO usar' sections with concrete examples (dólar e Selic, IPCA e IGP-M) and named alternatives. It also provides decision rules for parameter choice: prefer `variacao` base when series trend, prefer `spearman` for non-linear or plateaued series, and use `frequencia` to harmonize different periodicities. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bcb_deflacionarDeflacionar série (valores reais)ARead-onlyIdempotentInspect
Converte uma série NOMINAL do BCB em valores REAIS (moeda constante), descontando a inflação do período — a diferença entre 'o salário mínimo subiu 46% desde 2020' e 'o salário mínimo subiu 5% em poder de compra'. Quando usar: sempre que valores em reais de épocas diferentes forem comparados. Quando NÃO usar: para séries que já são percentuais, índices ou taxas (deflacionar uma taxa de juros não significa nada); para a série nominal crua use bcb_serie_valores. Índice: ipca (padrão), inpc ou igpm. Base: mesBase no formato yyyy-MM define em reais de que mês os valores são expressos; sem ele, usa o último mês publicado do índice ('em reais de hoje'). Retorna: serie, deflator (índice, código, cobertura), base, periodo, dados (cada ponto com valorNominal, valorReal e fator), variacao (a percentual nominal ao lado da real no mesmo período), derivacao e avisos. Limite da fonte: o SGS não publica número-índice, então o índice é reconstruído compondo as variações mensais — reconstrução conferida contra a própria fonte (diferença máxima de 0,0052 ponto percentual contra o acumulado oficial em 12 meses). Observação fora da cobertura do índice recebe valorReal: null, nunca um valor inventado; como o índice sai com defasagem, o mês corrente costuma cair nesse caso. Comportamento: consome a API pública SGS do Banco Central do Brasil — sem autenticação, chave de API ou cadastro, e sem limite de requisições divulgado (uso é best-effort). Em falha transitória ou timeout a chamada é repetida automaticamente (até 3 tentativas, backoff exponencial); persistindo o erro, retorna isError: true com mensagem em português (HTTP 404 = série inexistente ou sem dados no período solicitado). O resultado vem como JSON tanto em texto quanto em structuredContent (conforme o outputSchema); datas no formato dd/MM/yyyy e valores numéricos (ponto decimal).
| Name | Required | Description | Default |
|---|---|---|---|
| codigo | Yes | Código da série NOMINAL a deflacionar (ex.: 1619 para salário mínimo) | |
| indice | No | Índice de preços usado como deflator: IPCA (433), INPC (188) ou IGP-M (189) | ipca |
| mesBase | No | Mês em cujos preços os valores serão expressos, no formato yyyy-MM. Sem ele, usa o último mês publicado do índice — isto é, 'em reais de hoje'. | |
| agregacao | No | Como agregar os valores de cada período quando `frequencia` é informada. `ultimo` (padrão) serve a nível de preço, taxa e índice; `soma` a fluxo; `acumulada` a séries que JÁ SÃO variação percentual (IPCA mensal, por exemplo), compondo geometricamente — somar 12 variações mensais NÃO dá a inflação do ano. | ultimo |
| dataFinal | Yes | Data final (yyyy-MM-dd ou dd/MM/yyyy) | |
| frequencia | No | Opcional: reamostra a série para esta frequência antes de responder (só agrega para períodos MAIORES; pedir frequência mais fina que a da série é recusado). Útil para comparar séries de periodicidades diferentes. | |
| dataInicial | Yes | Data inicial (yyyy-MM-dd ou dd/MM/yyyy) |
Output Schema
| Name | Required | Description |
|---|---|---|
| base | Yes | Mês em cujos preços os valores reais estão expressos |
| dados | Yes | Observações com o valor publicado e o valor em moeda constante |
| serie | Yes | Identificação da série nominal |
| avisos | No | Ressalvas sobre cobertura do índice ou mês base substituído |
| periodo | Yes | |
| chunking | No | Presente quando a consulta foi fatiada em várias requisições à origem, por causa do limite de 10 anos por janela em séries diárias. As fatias são fundidas e ordenadas antes de responder. |
| deflator | Yes | Índice de preços usado e o intervalo que ele cobre |
| variacao | Yes | Variação percentual do período em moeda corrente ao lado da variação em moeda constante — é a comparação que a tool existe para entregar. `null` quando há menos de duas observações deflacionadas. |
| derivacao | Yes | Origem dos números calculados: o que é derivado, por qual motor e com quais convenções |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| harmonizacao | No | Presente quando `frequencia` foi informada: descreve a reamostragem aplicada. Valor DERIVADO — calculado por este servidor, não publicado pelo Banco Central. |
| janelaAplicada | No | Presente quando o período pedido estava aberto numa série diária e o servidor aplicou uma janela própria (a origem recusa janela aberta em série diária com HTTP 406). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses much more than annotations: public SGS API, no auth requirement, best-effort rate limits, automatic retries, error contract, index reconstruction limitation, and null instead of invented values for uncovered periods. No contradiction with readOnlyHint/idempotentHint/destructiveHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core concept and well organized into use cases, return fields, source caveats, and error behavior. It is long and partly repeats schema/output-schema content, but each paragraph serves a real purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers source, authentication, retries, failure semantics, coverage limitations, and how to choose the index/base, which is more than enough even with the rich output schema and annotations. Nothing needed to invoke the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description is not responsible for documenting parameters; it mostly restates index choices and mesBase default that already appear in the schema. It adds useful conceptual framing but little parameter-specific meaning beyond structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Converte uma série NOMINAL do BCB em valores REAIS (moeda constante), descontando a inflação do período' and illustrates with a concrete salary example. Also distinguishes itself from bcb_serie_valores, so an agent can tell which tool to use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'Quando usar' and 'Quando NÃO usar' sections, including exclusions for percentual/índice/taxa series and a direct pointer to bcb_serie_valores for the raw nominal series. This is unambiguous routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bcb_focus_expectativasExpectativas de mercado (Focus)ARead-onlyIdempotentInspect
Consulta as expectativas de mercado do boletim Focus para UM indicador, com o horizonte como parâmetro: mensal, trimestral, anual, inflação nos próximos 12 meses e nos próximos 24 meses. Devolve média, mediana, desvio padrão, mínimo, máximo e número de respondentes por data de coleta. Quando usar: para expectativa de IPCA, IGP-M, PIB, câmbio e afins em um mês, trimestre ou ano específico, ou para a inflação rolante. Quando NÃO usar: para expectativa de Selic por reunião do Copom use bcb_focus_selic; para o valor REALIZADO (não esperado) use bcb_serie_valores. Regras do contrato: referencia é obrigatória nos horizontes de calendário (mensal, trimestral, anual) e recusada nos rolantes; suavizada só vale nos rolantes; top5: true traz as expectativas das cinco instituições mais assertivas e existe nos cinco horizontes. Se não souber o texto exato do indicador ou da referência, chame bcb_focus_referencias primeiro — o conjunto de indicadores MUDA por horizonte, e pedir um indicador no horizonte em que a fonte não o publica é a causa mais comum de resposta vazia. Retorna: indicador, horizonte, base (consenso|top5), filtro (referencia, dataInicial, dataFinal, janelaPadrao, suavizada), totalRegistros, expectativas (array normalizado), urlConsulta, consultadoEm e, quando aplicável, observacao. Sem datas, a janela padrão é de 30 dias. Fonte: Expectativas de Mercado (Focus) do Banco Central do Brasil, via Olinda OData. O Focus é vintage por construção: coletadoEm é a data da coleta e referencia é o alvo da expectativa — a mesma referência aparece em muitas coletas, e é isso que permite ver a expectativa mudar no tempo. A contagem é feita do nosso lado porque a fonte ignora $count; e o filtro é obrigatório por construção porque consulta sem filtro não completa na origem. Microdados por instituição NÃO são expostos: a fonte desativou esse recurso por risco de quebra de confidencialidade.
| Name | Required | Description | Default |
|---|---|---|---|
| top5 | No | Expectativas do Top 5 (as cinco instituições mais assertivas) em vez do consenso; existe nos cinco horizontes | |
| limite | No | Máximo de coletas a devolver (1-500, padrão 50) | |
| dataFinal | No | Fim da janela de COLETA (yyyy-MM-dd ou dd/MM/yyyy). Padrão: hoje. | |
| horizonte | Yes | mensal, trimestral e anual usam `referencia`; inflacao_12m e inflacao_24m são rolantes e não usam | |
| indicador | Yes | Indicador exatamente como a fonte publica (ex.: 'IPCA', 'IGP-M', 'PIB Total', 'Câmbio'). Veja bcb_focus_referencias. | |
| suavizada | No | Só nos horizontes rolantes: série suavizada (true) ou não suavizada (false) | |
| referencia | No | Alvo da expectativa: MM/yyyy (mensal), T/yyyy (trimestral) ou yyyy (anual). Obrigatória nesses três; proibida nos rolantes. | |
| dataInicial | No | Início da janela de COLETA (yyyy-MM-dd ou dd/MM/yyyy). Padrão: 30 dias antes do fim. |
Output Schema
| Name | Required | Description |
|---|---|---|
| base | Yes | |
| filtro | Yes | Filtro efetivamente aplicado na origem; nulo onde o parâmetro não foi informado |
| horizonte | Yes | |
| indicador | Yes | |
| observacao | No | |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| urlConsulta | Yes | URL OData consultada, reproduzível no navegador |
| consultadoEm | Yes | Timestamp ISO 8601 da consulta |
| expectativas | Yes | |
| totalRegistros | Yes | Coletas encontradas (contagem client-side) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
As anotações já indicam readOnlyHint=true e idempotentHint=true, e a descrição adiciona contexto comportamental relevante: o Focus é vintage por construção, 'coletadoEm' é a data da coleta e 'referencia' é o alvo, microdados por instituição não são expostos, a contagem é feita do lado do cliente porque a fonte ignora $count, e consulta sem filtro não completa na origem. Não contradiz as anotações.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
O texto é longo, mas denso e organizado por blocos funcionais: o que faz, quando usar, quando não usar, regras do contrato, formato de retorno, fonte e ressalvas técnicas. Repete pouca informação do schema e quase todas as frases carregam instrução útil; pequenas redundâncias e o volume alto impedem nota máxima.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Para uma ferramenta com 8 parâmetros, schema descritivo completo, output schema presente e anotações de segurança, a descrição ainda cobre lacunas importantes: formato de datas aceitas, comportamento sem datas, motivo da não exposição de microdados e limitação conhecida de $count. O agente tem contexto suficiente para invocar corretamente sem abrir schemas adicionais.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
A cobertura do schema é 100%, então o baseline é 3; a descrição agrega valor além do schema ao explicar regras de contrato: 'referencia' é obrigatória em mensal/trimestral/anual e recusada nos rolantes, 'suavizada' só vale nos rolantes, 'top5' existe nos cinco horizontes, e a janela padrão sem datas é de 30 dias. Também alerta que pedir indicador no horizonte errado é a causa mais comum de resposta vazia.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A descrição abre com verbo específico ('Consulta'), recurso definido ('expectativas de mercado do boletim Focus') e delimita o escopo ('para UM indicador', com horizontes listados). Diferencia-se explicitamente de irmãos: bcb_focus_selic para Selic por reunião do Copom, bcb_serie_valores para valores realizados e bcb_focus_referencias para descobrir indicadores/referências.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Há uma seção explícita 'Quando usar' com exemplos concretos (IPCA, IGP-M, PIB, câmbio) e 'Quando NÃO usar' com alternativas nomeadas. Também orienta chamar bcb_focus_referencias primeiro quando não souber o texto exato do indicador, com a justificativa de que o conjunto muda por horizonte.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bcb_focus_referenciasIndicadores e referências do FocusARead-onlyIdempotentInspect
Lista, POR ESCOPO, os indicadores e as referências que o Focus efetivamente publica, para você usar o texto EXATO em bcb_focus_expectativas e em bcb_focus_selic. Escopo = os cinco horizontes de bcb_focus_expectativas mais 'selic', que não é horizonte: o eixo dela é a reunião do Copom, e quem a consome é bcb_focus_selic. Cada bloco diz em tool quem o consome. Quando usar: antes da primeira consulta ao Focus, ou quando uma consulta volta vazia — a causa mais comum não é o dado faltar, é o indicador não existir NAQUELE escopo (a fonte publica 9 indicadores no mensal e 26 no anual: 'PIB Total', por exemplo, não existe no mensal) ou a referência estar num formato diferente do publicado. Quando NÃO usar: para os valores das expectativas em si. Sem escopo, consulta os seis e devolve tudo; com escopo, consulta só aquele. Retorna: escopos (para cada um: tool que o consome, formatoReferencia, exigeReferencia, temTop5, indicadores, referencias, urlConsulta e disponivel), mais indicadores e referencias como união de todos, janela, totalRegistros e consultadoEm. Se algum escopo não responder, os demais voltam mesmo assim, com falhas preenchido. Fonte: Expectativas de Mercado (Focus) do Banco Central do Brasil, via Olinda OData. O Focus é vintage por construção: coletadoEm é a data da coleta e referencia é o alvo da expectativa — a mesma referência aparece em muitas coletas, e é isso que permite ver a expectativa mudar no tempo. A contagem é feita do nosso lado porque a fonte ignora $count; e o filtro é obrigatório por construção porque consulta sem filtro não completa na origem. Microdados por instituição NÃO são expostos: a fonte desativou esse recurso por risco de quebra de confidencialidade.
| Name | Required | Description | Default |
|---|---|---|---|
| escopo | No | Restringe a descoberta a um escopo (opcional). 'selic' descobre as reuniões do Copom para bcb_focus_selic; os demais são os horizontes de bcb_focus_expectativas. | |
| indicador | No | Filtrar por um indicador específico, para ver em quais escopos ele existe (opcional) |
Output Schema
| Name | Required | Description |
|---|---|---|
| falhas | No | Escopos que não responderam nesta consulta |
| filtro | No | Filtro pedido; nulo onde o parâmetro não foi informado |
| janela | Yes | Janela de coleta observada para montar as listas |
| escopos | Yes | Um bloco por escopo: regras do contrato mais o que a fonte publica nele |
| observacao | No | |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| indicadores | Yes | União dos indicadores de todos os escopos consultados |
| referencias | Yes | União das referências de todos os escopos consultados |
| consultadoEm | Yes | |
| totalRegistros | Yes | |
| observacaoFalhas | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry the safety profile (readOnly, idempotent, non-destructive, open-world), and the description adds substantial behavior beyond that: default all-six-scope behavior when `escopo` is omitted, partial-failure resilience via `falhas`, client-side counting because the source ignores `$count`, the mandatory-filter constraint at the origin, vintage data semantics of `coletadoEm` vs `referencia`, and exclusion of institution-level microdata. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long but densely informative and well front-loaded: purpose, scope semantics, usage conditions, then behavioral details. Nearly every sentence earns its place given the tool's job of disambiguating two consumers; the return-structure recap is partially redundant with the output schema, so some trimming was possible — hence 4 rather than 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a discovery tool with 100% schema coverage, a safety-complete annotation set, and an output schema, the description covers everything an agent needs: scope semantics, default vs scoped invocation, edge-case failure behavior, source provenance, data-model interpretation, and a confidentiality constraint. Return values are already handled by the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds real value by disclosing the default behavior for an omitted `escopo` (queries all six and returns everything) and mapping each enum value to its consuming tool. However, `indicador` receives no added depth beyond the schema's 'see in which scopes it exists,' so it stops short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource — 'Lista, POR ESCOPO, os indicadores e as referências que o Focus efetivamente publica' — and immediately states the downstream purpose: supplying exact text to bcb_focus_expectativas and bcb_focus_selic. By naming its consumers and explicitly distinguishing 'selic' from the five expectation horizons, it differentiates itself from siblings without needing their schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('antes da primeira consulta ao Focus, ou quando uma consulta volta vazia') and when-not-to-use ('para os valores das expectativas em si') guidance, with consumer tools named. It even diagnoses the most common cause of empty queries (indicator not existing in that scope), so an agent knows precisely when to route to this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bcb_focus_selicExpectativas de Selic (Focus)ARead-onlyIdempotentInspect
Consulta as expectativas de mercado do Focus para a taxa Selic, organizadas pela REUNIÃO do Copom (formato R1/2026 = 1ª reunião de 2026). Devolve média, mediana, desvio padrão, mínimo, máximo e número de respondentes por data de coleta. Quando usar: para 'o que o mercado espera da Selic na próxima reunião' ou a trajetória esperada de juros. Quando NÃO usar: para expectativa de Selic média de um ano civil use bcb_focus_expectativas com horizonte anual; para a Selic REALIZADA use bcb_serie_valores (códigos 432, 1178, 4390). É separada de bcb_focus_expectativas porque o eixo temporal é a reunião do Copom, não o calendário. Retorna: base (consenso|top5), filtro, totalRegistros, expectativas (com referencia = reunião), urlConsulta, consultadoEm e observacaoEixo. Sem datas, a janela padrão é de 30 dias. Fonte: Expectativas de Mercado (Focus) do Banco Central do Brasil, via Olinda OData. O Focus é vintage por construção: coletadoEm é a data da coleta e referencia é o alvo da expectativa — a mesma referência aparece em muitas coletas, e é isso que permite ver a expectativa mudar no tempo. A contagem é feita do nosso lado porque a fonte ignora $count; e o filtro é obrigatório por construção porque consulta sem filtro não completa na origem. Microdados por instituição NÃO são expostos: a fonte desativou esse recurso por risco de quebra de confidencialidade.
| Name | Required | Description | Default |
|---|---|---|---|
| top5 | No | Expectativas do Top 5 em vez do consenso | |
| limite | No | Máximo de coletas a devolver (1-500, padrão 50) | |
| reuniao | No | Reunião do Copom no formato R1/2026 (opcional; sem ela, todas as reuniões da janela) | |
| dataFinal | No | Fim da janela de COLETA (yyyy-MM-dd ou dd/MM/yyyy). Padrão: hoje. | |
| dataInicial | No | Início da janela de COLETA (yyyy-MM-dd ou dd/MM/yyyy). Padrão: 30 dias antes do fim. |
Output Schema
| Name | Required | Description |
|---|---|---|
| base | Yes | |
| filtro | Yes | Filtro efetivamente aplicado; `reuniao` é nula quando não foi informada |
| observacao | No | |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| urlConsulta | Yes | |
| consultadoEm | Yes | |
| expectativas | Yes | |
| observacaoEixo | No | |
| totalRegistros | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the bar is lower; the description still adds substantial behavior beyond that: vintage semantics (coletadoEm vs referencia), the source ignoring $count, the mandatory filter for query completion, and the disabled microdata by confidentiality risk. These are operational constraints and behavioral traits an agent could not infer from annotations or schema. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but every sentence adds information: purpose, output fields, usage rules, exclusions, defaults, and source quirks are each covered in distinct blocks. It is front-loaded with the core purpose and returns, and the structure makes the density manageable. It is slightly verbose for a mature reader, but there is no fluff or tautology.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 optional parameters, an output schema, and a sibling set with overlapping domains, the description is remarkably complete. It covers selection criteria, exclusions, default behavior, output fields, and source limitations, including the reason for the mandatory filter and the vintage interpretation. An agent has enough context to select, invoke, and interpret results correctly without further research.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaningful semantic detail: it explains the reuniao format (R1/2026 = 1ª reunião), clarifies that date parameters refer to the coleta window with a 30-day default, and relates the `base` output to the top5 parameter (consenso vs top5). It also explains `referencia` as the meeting target, connecting the reuniao parameter to the output. This goes beyond the schema's raw descriptions, though the schema already covers the basic syntax.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource (Focus expectations for the Selic rate) and the organizing axis (Copom meeting, format R1/2026). It explicitly differentiates itself from siblings: 'É separada de bcb_focus_expectativas porque o eixo temporal é a reunião do Copom, não o calendário' and points to bcb_serie_valores for realized Selic. The verb 'Consulta' plus the resource and distinguishing format leave no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'Quando usar' and 'Quando NÃO usar' sections, naming bcb_focus_expectativas as the alternative for annual calendar-year expectations and bcb_serie_valores for realized Selic. It also gives concrete example use cases like 'o que o mercado espera da Selic na próxima reunião'. This is the strongest possible usage guidance: when to use, when not to use, and which alternatives to select.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bcb_indicadores_atuaisIndicadores econômicos atuaisARead-onlyIdempotentInspect
Atalho que retorna, em uma única chamada, o valor mais recente dos principais indicadores da economia brasileira: Selic (meta do Copom), IPCA mensal, IPCA acumulado 12 meses, dólar comercial de venda (série diária) e IBC-Br. Não recebe parâmetros. Quando usar: para um panorama econômico rápido. Quando NÃO usar: para qualquer outra série, para dados históricos ou para escolher o período use bcb_serie_ultimos ou bcb_serie_valores. Retorna: consultadoEm (timestamp ISO 8601) e indicadores (array com indicador, codigo, data, valor — ou erro no item). Resiliente: cada indicador é buscado de forma independente, então a falha de um não derruba os demais. Comportamento: consome a API pública SGS do Banco Central do Brasil — sem autenticação, chave de API ou cadastro, e sem limite de requisições divulgado (uso é best-effort). Em falha transitória ou timeout a chamada é repetida automaticamente (até 3 tentativas, backoff exponencial); persistindo o erro, retorna isError: true com mensagem em português (HTTP 404 = série inexistente ou sem dados no período solicitado). O resultado vem como JSON tanto em texto quanto em structuredContent (conforme o outputSchema); datas no formato dd/MM/yyyy e valores numéricos (ponto decimal).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| indicadores | Yes | Lista de indicadores com seus valores mais recentes |
| consultadoEm | Yes | Timestamp ISO 8601 da consulta |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already declare readOnlyHint, idempotentHint, and openWorldHint, the description adds substantial behavioral context: independent fetching per indicator, automatic retries with exponential backoff up to 3 attempts, Portuguese error messages, HTTP 404 semantics, no authentication or rate-limit disclosure, and JSON/structuredContent output behavior. This goes far beyond what the annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized, front-loads the core purpose, and uses labeled sections such as 'Quando usar,' 'Quando NÃO usar,' 'Retorna,' 'Resiliente,' and 'Comportamento.' Every sentence adds operationally useful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only tool with a rich output schema and annotations, the description fully covers use cases, exclusions, return shape, error handling, retry behavior, authentication requirements, and response format. An agent has everything needed to select and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and the schema already represents this with an empty object. The description reinforces 'Não recebe parâmetros,' and with no parameters there is little additional semantic value to add. Baseline 4 is appropriate for a zero-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('retorna') and precisely enumerates the indicators returned in one call: Selic meta, IPCA mensal, IPCA acumulado 12 meses, dólar comercial de venda, and IBC-Br. It also distinguishes itself from siblings by naming bcb_serie_ultimos and bcb_serie_valores as the tools for historical or period-selected data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Quando usar: para um panorama econômico rápido' and 'Quando NÃO usar' for other series, historical data, or period selection, pointing to specific sibling tools. This is exemplary when-to-use versus when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bcb_serie_metadadosMetadados da sérieARead-onlyIdempotentInspect
Obtém a descrição de UMA série do BCB (nome, periodicidade, categoria, fonte e último valor), sem trazer a série histórica. Quando usar: para confirmar o que uma série representa e com que frequência é publicada antes de consultar os dados. Quando NÃO usar: para os valores em si use bcb_serie_valores ou bcb_serie_ultimos. Retorna: codigo, nome, periodicidade, categoria, fonte, ultimoValor e URLs diretas da API (urlConsulta, urlUltimos10). Limite da fonte: a API do SGS NÃO publica endpoint de metadados por série — não há unidade de medida disponível. Nome e categoria vêm do catálogo curado do servidor (135 séries verificadas contra a origem) e, fora dele, a periodicidade é inferida do espaçamento das observações, sinalizada por periodicidadeInferida. Comportamento: consome a API pública SGS do Banco Central do Brasil — sem autenticação, chave de API ou cadastro, e sem limite de requisições divulgado (uso é best-effort). Em falha transitória ou timeout a chamada é repetida automaticamente (até 3 tentativas, backoff exponencial); persistindo o erro, retorna isError: true com mensagem em português (HTTP 404 = série inexistente ou sem dados no período solicitado). O resultado vem como JSON tanto em texto quanto em structuredContent (conforme o outputSchema); datas no formato dd/MM/yyyy e valores numéricos (ponto decimal).
| Name | Required | Description | Default |
|---|---|---|---|
| codigo | Yes | Código da série no SGS/BCB |
Output Schema
| Name | Required | Description |
|---|---|---|
| nome | Yes | Nome da série |
| fonte | Yes | Fonte dos dados |
| codigo | Yes | Código da série no SGS/BCB |
| categoria | No | Categoria econômica |
| observacao | No | Observação sobre a origem dos metadados |
| provenance | Yes | Um bloco por procedência que contribuiu com esta resposta (contrato v1.0; licenças nunca se fundem) |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| ultimoValor | No | Última observação disponível |
| urlConsulta | No | URL da API do BCB para consulta completa |
| urlUltimos10 | No | URL da API do BCB para os últimos 10 valores |
| periodicidade | No | Periodicidade da série |
| periodicidadeInferida | No | Presente e true quando a periodicidade foi inferida do espaçamento das observações |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description discloses authentication-free access, best-effort rate behavior, automatic retries with exponential backoff, error response shape (isError), HTTP 404 meaning, date/number formatting, and the missing unit-of-measure limitation. It also explains inferred periodicity via periodicidadeInferida. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized into labeled sections (Quando usar, NÃO usar, Retorna, Limite, Comportamento), front-loads the purpose, and contains no filler. Although lengthy, the detail earns its place because it conveys concrete operational behavior rather than repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter metadata tool with an output schema, the description is complete: it covers input semantics, return fields, API limits, error handling, authentication requirements, and data formatting. Nothing needed for correct invocation is left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage by describing codigo as 'Código da série no SGS/BCB'. The description adds the context of a single series but does not need to compensate for schema gaps, so the baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Obtém a descrição de UMA série do BCB') and precisely scopes the resource as metadata, explicitly excluding historical series. This distinguishes it clearly from siblings like bcb_serie_valores and bcb_serie_ultimos without requiring schema inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It includes explicit 'Quando usar' and 'Quando NÃO usar' guidance, naming bcb_serie_valores and bcb_serie_ultimos as the alternatives for value lookups. It also frames the tool as a confirmation step before consulting data, leaving no ambiguity about when to choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bcb_series_popularesListar séries popularesARead-onlyIdempotentInspect
Lista o catálogo interno curado de 135 séries econômicas do BCB com seus códigos, agrupadas por categoria (Juros, Inflação, Câmbio, Atividade Econômica, Emprego, Fiscal, Setor Externo, Crédito, Agregados Monetários, Poupança); aceita filtro por categoria. Quando usar: para navegar/descobrir as séries disponíveis por tema. Quando NÃO usar: para busca por palavra-chave use bcb_buscar_serie; esta ferramenta não busca valores. Retorna: totalSeries, categorias (nº de categorias) e series — objeto agrupado por categoria quando sem filtro, ou array plano quando filtrado por categoria; cada item tem codigo, nome, categoria, periodicidade e fonteNome. Catálogo local: não faz chamada de rede. Procedência: fonteNome = 'portal' quando o nome é transcrito do dataset da série no Portal de Dados Abertos do BCB (82 séries, com unidade), e 'medido' quando a série não tem dataset lá — nesse caso o nome é herdado e o que foi verificado contra a origem é a periodicidade e a ordem de grandeza. Expectativas do Focus NÃO estão aqui: use bcb_focus_expectativas.
| Name | Required | Description | Default |
|---|---|---|---|
| categoria | No | Filtrar por categoria: Juros, Inflação, Câmbio, Atividade Econômica, Emprego, Fiscal, Setor Externo, Crédito, Agregados Monetários, Poupança, Índices de Mercado, Expectativas |
Output Schema
| Name | Required | Description |
|---|---|---|
| series | Yes | Séries encontradas. Objeto agrupado por categoria quando sem filtro; array plano quando filtrado por categoria. |
| categorias | Yes | Quantidade de categorias distintas |
| observacao | No | Dica de uso |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| totalSeries | Yes | Quantidade total de séries retornadas |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: the catalog is local and makes no network call, provenance is explained through 'fonteNome' with 'portal' vs 'medido', and the return shape changes based on whether a filter is applied. This goes well beyond what annotations provide and contains no contradiction with them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose and use guidance, and every sentence contributes substantive information. However, it is a single dense paragraph combining purpose, return shape, provenance, and exclusions; more visual structure would improve scanability without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the catalog size, grouping behavior, filter behavior, return fields, local-network behavior, provenance semantics, and exclusions. The main gap is the inconsistent treatment of 'Expectativas': the schema lists it as a valid category, while the description says Focus expectations are not here. This ambiguity could confuse an agent choosing a filter value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameter is already documented well. The description adds little beyond what the schema says: it mentions the category filter and lists some categories, but that information essentially repeats the schema. The category list in the description also diverges from the schema by omitting 'Índices de Mercado' and 'Expectativas', so it does not reliably enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: it lists a curated internal catalog of 135 BCB economic series with codes, grouped by category, and accepts a category filter. It explicitly contrasts itself with bcb_buscar_serie and bcb_focus_expectativas, making sibling differentiation clear. The category list is slightly inconsistent with the input schema, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'Quando usar' and 'Quando NÃO usar' guidance, names the alternative for keyword search (bcb_buscar_serie), and warns that this tool does not fetch values. It also tells users that Focus expectations are not included and routes them to bcb_focus_expectativas. This is strong, actionable usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bcb_serie_ultimosÚltimos valores da sérieARead-onlyIdempotentInspect
Obtém as últimas N observações de UMA série temporal do BCB (mais recentes primeiro a partir do fim da série). Quando usar: para ver os dados mais recentes sem precisar calcular datas (ex.: últimos 12 meses do IPCA). Quantidade entre 1 e 1000 (padrão 10). Quando NÃO usar: para um intervalo de datas ou o histórico completo use bcb_serie_valores. Retorna: objeto serie, totalRegistros e dados (array de {data, valor}); sem dados, totalRegistros = 0 com observacao. Acima de 20: o endpoint nativo do BCB rejeita N > 20 em qualquer periodicidade, então o servidor descobre a periodicidade da série e busca por janela de datas, devolvendo os N últimos pontos. Comportamento: consome a API pública SGS do Banco Central do Brasil — sem autenticação, chave de API ou cadastro, e sem limite de requisições divulgado (uso é best-effort). Em falha transitória ou timeout a chamada é repetida automaticamente (até 3 tentativas, backoff exponencial); persistindo o erro, retorna isError: true com mensagem em português (HTTP 404 = série inexistente ou sem dados no período solicitado). O resultado vem como JSON tanto em texto quanto em structuredContent (conforme o outputSchema); datas no formato dd/MM/yyyy e valores numéricos (ponto decimal).
| Name | Required | Description | Default |
|---|---|---|---|
| codigo | Yes | Código da série no SGS/BCB | |
| quantidade | No | Quantidade de valores a retornar (1-1000, padrão: 10). A API do BCB tem teto de 20 no endpoint nativo; acima disso o servidor busca por janela de datas e devolve os N últimos. |
Output Schema
| Name | Required | Description |
|---|---|---|
| dados | Yes | Observações mais recentes |
| serie | Yes | Identificação da série temporal |
| chunking | No | Presente quando a consulta foi fatiada em várias requisições à origem, por causa do limite de 10 anos por janela em séries diárias. As fatias são fundidas e ordenadas antes de responder. |
| observacao | No | Mensagem informativa (ex.: quando não há dados) |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| totalRegistros | Yes | Quantidade de observações retornadas |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial behavior beyond that: no authentication needed, best-effort API usage, automatic retries with backoff, error payload shape, HTTP 404 semantics, the N>20 workaround, and date/value formatting. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long but well-structured with labeled sections and a front-loaded purpose. Every sentence is substantive, though some parameter constraints and the N>20 detail repeat the input schema, and the output schema already covers return structure, so it is slightly less tight than ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only retrieval tool, it covers purpose, when to use and not use it, return shape, date format, error handling, retry/backoff behavior, authentication requirements, and the N>20 edge case. No critical operational detail an agent would need is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters at 100% coverage, so the baseline is 3. The description adds meaning by framing 'quantidade' in terms of 'mais recentes primeiro a partir do fim da série' and reinforcing the N>20 workaround and default of 10, which helps an agent choose the correct quantity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Obtém as últimas N observações de UMA série temporal do BCB' and clarifies ordering ('mais recentes primeiro'). The 'Quando NÃO usar' section distinguishes it from bcb_serie_valores by scope, preventing confusion with sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'Quando usar' section with a concrete example (últimos 12 meses do IPCA) and a 'Quando NÃO usar' section naming bcb_serie_valores for date ranges or full history. This gives the agent a clear routing rule with no need to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bcb_serie_valoresConsultar valores da sérieARead-onlyIdempotentInspect
Consulta o histórico de valores de UMA série temporal do BCB pelo código SGS, opcionalmente limitado por um intervalo de datas (dataInicial/dataFinal). Quando usar: para obter a série histórica completa ou uma janela de datas específica. Quando NÃO usar: para apenas os pontos mais recentes use bcb_serie_ultimos; para a variação percentual use bcb_variacao; para comparar várias séries use bcb_comparar; se não souber o código, descubra-o antes com bcb_buscar_serie ou bcb_series_populares. Retorna: objeto serie (codigo, nome, categoria, periodicidade), totalRegistros, periodoInicial, periodoFinal e dados (array de {data, valor}); quando não há dados, totalRegistros = 0 e uma observacao explicativa. Períodos longos: a API do BCB limita séries DIÁRIAS a 10 anos por consulta e recusa janela aberta (HTTP 406). Isso é tratado automaticamente — a janela é fatiada em requisições de até 3 anos e o resultado vem fundido e ordenado, com chunking na resposta dizendo quantas janelas foram usadas; se o período pedido estava aberto numa série diária, janelaAplicada diz qual janela foi usada e por quê. Harmonização: frequencia (mensal|trimestral|anual) reamostra a série antes de responder, com a convenção escolhida em agregacao; a resposta traz harmonizacao com derived: true e a nota do cálculo. Comportamento: consome a API pública SGS do Banco Central do Brasil — sem autenticação, chave de API ou cadastro, e sem limite de requisições divulgado (uso é best-effort). Em falha transitória ou timeout a chamada é repetida automaticamente (até 3 tentativas, backoff exponencial); persistindo o erro, retorna isError: true com mensagem em português (HTTP 404 = série inexistente ou sem dados no período solicitado). O resultado vem como JSON tanto em texto quanto em structuredContent (conforme o outputSchema); datas no formato dd/MM/yyyy e valores numéricos (ponto decimal).
| Name | Required | Description | Default |
|---|---|---|---|
| codigo | Yes | Código da série no SGS/BCB (ex: 433 para IPCA mensal, 11 para Selic) | |
| agregacao | No | Como agregar os valores de cada período quando `frequencia` é informada. `ultimo` (padrão) serve a nível de preço, taxa e índice; `soma` a fluxo; `acumulada` a séries que JÁ SÃO variação percentual (IPCA mensal, por exemplo), compondo geometricamente — somar 12 variações mensais NÃO dá a inflação do ano. | ultimo |
| dataFinal | No | Data final no formato yyyy-MM-dd ou dd/MM/yyyy (opcional) | |
| frequencia | No | Opcional: reamostra a série para esta frequência antes de responder (só agrega para períodos MAIORES; pedir frequência mais fina que a da série é recusado). Útil para comparar séries de periodicidades diferentes. | |
| dataInicial | No | Data inicial no formato yyyy-MM-dd ou dd/MM/yyyy (opcional) |
Output Schema
| Name | Required | Description |
|---|---|---|
| dados | Yes | Observações históricas |
| serie | Yes | Identificação da série temporal |
| chunking | No | Presente quando a consulta foi fatiada em várias requisições à origem, por causa do limite de 10 anos por janela em séries diárias. As fatias são fundidas e ordenadas antes de responder. |
| observacao | No | Mensagem informativa (ex.: quando não há dados) |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| harmonizacao | No | Presente quando `frequencia` foi informada: descreve a reamostragem aplicada. Valor DERIVADO — calculado por este servidor, não publicado pelo Banco Central. |
| periodoFinal | No | Data da última observação |
| janelaAplicada | No | Presente quando o período pedido estava aberto numa série diária e o servidor aplicou uma janela própria (a origem recusa janela aberta em série diária com HTTP 406). |
| periodoInicial | No | Data da primeira observação |
| totalRegistros | Yes | Quantidade de observações retornadas |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
As annotations já cobrem readOnly/idempotent/openWorld/destructive, e a descrição adiciona contexto comportamental rico além delas: limite de 10 anos da API do BCB para séries diárias com HTTP 406, fatiamento automático em janelas de 3 anos com campos 'chunking' e 'janelaAplicada', retry com backoff exponencial (3 tentativas), semântica de erros (isError, 404), ausência de autenticação e natureza best-effort. Não há contradição com as annotations — pelo contrário, reforça readOnlyHint e openWorldHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Descrição longa, porém estruturada em blocos rotulados (Quando usar, Quando NÃO usar, Retorna, Períodos longos, Harmonização, Comportamento) e com o propósito central na primeira frase. O tamanho é justificado pela complexidade real da ferramenta — limitações da API, chunking e retries precisam ser explicados — mas há pequena redundância com o outputSchema no trecho sobre formato do retorno.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Para um tool com comportamento intrincado, nada material falta: requisitos de autenticação (nenhum), limites de requisição (nenhum divulgado, best-effort), limitações da API e tratamento automático, política de retry, semântica de erros, formato de datas e estrutura do retorno (com outputSchema cobrindo os campos). O agente consegue invocar e interpretar o resultado corretamente em todos os cenários descritos.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
A cobertura do schema é 100%, então a linha de base é 3, mas a descrição agrega significado real: explica o fatiamento das janelas de data (dataInicial/dataFinal), a convenção de `agregacao` com aviso prático ('somar 12 variações mensais NÃO dá a inflação do ano') e a restrição de `frequencia` (só agrega para períodos maiores, recusa mais fina). Isso vai além do que o schema descreve.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A descrição abre com verbo+recurso+escopo precisos: 'Consulta o histórico de valores de UMA série temporal do BCB pelo código SGS, opcionalmente limitado por um intervalo de datas'. Diferencia-se dos irmãos explicitamente, nomeando bcb_serie_ultimos, bcb_variacao, bcb_comparar e bcb_buscar_serie com seus papéis distintos. Um agente consegue selecionar esta ferramenta sem ambiguidade.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Há seções explícitas 'Quando usar' e 'Quando NÃO usar' com alternativas nomeadas e condições concretas: pontos recentes → bcb_serie_ultimos; variação percentual → bcb_variacao; múltiplas séries → bcb_comparar; código desconhecido → bcb_buscar_serie/bcb_series_populares. O roteamento é completo e não deixa nada à inferência.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bcb_variacaoVariação percentual da sérieARead-onlyIdempotentInspect
Calcula a variação percentual de UMA série no período, mais estatísticas descritivas. Para série de NÍVEL (dólar, Selic, dívida, produção) é a variação entre o primeiro e o último ponto; para série que JÁ É uma variação por período (IPCA 433, INPC 188, IGP-M 189 e demais índices de preço mensais do catálogo; Selic/CDI acumulados no mês 4390/4391; rentabilidade da poupança 25/195) é o ACUMULADO do período por encadeamento — "quanto o IPCA acumulou em 2024" ou "quanto a Selic rendeu em 2024" é esta tool. O campo analise.metodo diz qual das duas contas foi feita; código fora do catálogo curado é tratado como nível. Série de acumulado móvel (IPCA em 12 meses, 13522) é recusada com orientação — o valor publicado já é a resposta. O período pode ser definido por datas (dataInicial/dataFinal) OU pelos últimos N períodos (parâmetro periodos, que tem precedência e ignora as datas). Quando usar: para medir tendência/variação/acumulado de uma única série. Quando NÃO usar: para comparar várias séries use bcb_comparar; para os valores brutos use bcb_serie_valores. Requer ao menos 2 observações no período (senão retorna isError). Retorna: serie, periodo (dataInicial, dataFinal, totalPeriodos), analise (metodo, valorInicial, valorFinal, diferencaAbsoluta — nula quando encadeado —, variacaoPercentual, variacaoFormatada) e estatisticas (maximo, minimo, media, amplitude). Períodos longos são tratados automaticamente: janela diária acima de 10 anos é fatiada (a API do BCB responde 406) e periodos acima de 20 é atendido por janela de datas; chunking e janelaAplicada aparecem na resposta quando isso acontece. Comportamento: consome a API pública SGS do Banco Central do Brasil — sem autenticação, chave de API ou cadastro, e sem limite de requisições divulgado (uso é best-effort). Em falha transitória ou timeout a chamada é repetida automaticamente (até 3 tentativas, backoff exponencial); persistindo o erro, retorna isError: true com mensagem em português (HTTP 404 = série inexistente ou sem dados no período solicitado). O resultado vem como JSON tanto em texto quanto em structuredContent (conforme o outputSchema); datas no formato dd/MM/yyyy e valores numéricos (ponto decimal).
| Name | Required | Description | Default |
|---|---|---|---|
| codigo | Yes | Código da série no SGS/BCB | |
| periodos | No | Alternativa: calcular variação dos últimos N períodos (ignora datas se informado). Acima de 20 o servidor busca por janela de datas, porque o endpoint nativo do BCB tem esse teto. | |
| dataFinal | No | Data final (yyyy-MM-dd ou dd/MM/yyyy). Se não informada, usa o último valor disponível. | |
| dataInicial | No | Data inicial (yyyy-MM-dd ou dd/MM/yyyy). Se não informada, usa o primeiro valor disponível. |
Output Schema
| Name | Required | Description |
|---|---|---|
| serie | Yes | Identificação da série |
| analise | Yes | Resultado da variação no período. Em `metodo: "nivel"` é a variação entre o primeiro e o último valor; em `metodo: "encadeamento"` (série que já é variação por período, como IPCA e IGP-M mensais) é o acumulado composto de todas as observações |
| periodo | Yes | Janela temporal analisada |
| chunking | No | Presente quando a consulta foi fatiada em várias requisições à origem, por causa do limite de 10 anos por janela em séries diárias. As fatias são fundidas e ordenadas antes de responder. |
| derivacao | Yes | Origem dos números calculados: o que é derivado, por qual motor e com quais convenções |
| provenance | Yes | Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
| estatisticas | Yes | Estatísticas descritivas dos valores no período |
| janelaAplicada | No | Presente quando o período pedido estava aberto numa série diária e o servidor aplicou uma janela própria (a origem recusa janela aberta em série diária com HTTP 406). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes far beyond the annotations by detailing calculation methods (level vs. chained accumulation), the `analise.metodo` field, long-period chunking behavior with `chunking`/`janelaAplicada`, the retry policy (up to 3 attempts, exponential backoff), error semantics (isError with Portuguese message, 404 meaning), and the public API's no-auth/no-rate-limit characteristics. This complements readOnlyHint and idempotentHint without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence carries operational value: calculation rules, period precedence, response fields, chunking, error behavior, and formatting. It is front-loaded with the core purpose and then systematically covers edge cases, earning its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with an output schema and rich annotations, the description covers all invocation-relevant aspects: period options, defaults, return structure, error handling, special-case refusals, and output formatting. Nothing an agent needs to correctly select and call this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explicitly stating that `periodos` has precedence and ignores dates if provided, and by explaining why values above 20 trigger the date-window path ('o endpoint nativo do BCB tem esse teto'). This contextual value justifies a 4, though the schema already documents parameter basics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Calcula a variação percentual de UMA série no período, mais estatísticas descritivas.' It explicitly distinguishes itself from bcb_comparar (multi-series comparison), bcb_serie_valores (raw values), and the special case of already-accumulated series, so an agent can clearly tell what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use and when-not-to-use guidance: 'Quando usar: para medir tendência/variação/acumulado de uma única série. Quando NÃO usar: para comparar várias séries use bcb_comparar; para os valores brutos use bcb_serie_valores.' It also flags that accumulated-mobile series like IPCA 12 months are refused with orientation, preventing misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchDocumento para Deep ResearchARead-onlyIdempotentInspect
Returns the full document for an id obtained from search, as { id, title, text, url, metadata }: text is the readable content (Markdown) and url the canonical public page to cite.
Companion of search in the OpenAI Deep Research contract, over the Banco Central do Brasil time series (SGS: interest rates, inflation, exchange rates, credit, fiscal and external sector — the curated catalog plus the open data portal index) catalog. Only ids returned by search are valid; an unknown id returns an error.
The bcb_* tools remain the tools for data queries.
Behavior: read-only and idempotent — a live GET against the public source when the document needs it.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identificador de um documento devolvido por `search` |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Identificador único do documento no servidor; é o que `fetch` recebe |
| url | Yes | URL pública canônica do documento — a citação do ChatGPT depende dela |
| text | Yes | Conteúdo integral do documento, legível (Markdown) |
| title | Yes | Título legível do documento |
| metadata | No | Pares chave/valor adicionais sobre o documento (tipo, fonte, período…) |
| provenance | Yes | Um bloco por procedência que contribuiu com esta resposta (contrato v1.0; licenças nunca se fundem) |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. The description adds useful behavioral context beyond these: it performs a live GET against the public source when needed and errors on unknown ids. This is valuable but partly redundant with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: it leads with the return shape, then clarifies the tool's role and boundary, and ends with behavioral notes. The parenthetical catalog enumeration is a bit long but helps define the datasource; overall there is little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter fetch tool with a rich output schema and annotations covering safety and idempotency, the description is complete. It explains where ids come from, what the document contains at a high level, the source behavior, and the error condition, leaving no critical gap for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the only parameter fully: `id` is described as an identifier returned by `search`. The description repeats this constraint and adds that unknown ids are invalid, but does not materially extend the meaning beyond what the schema provides. With 100% schema coverage, a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Returns the full document for an id obtained from `search`', with the exact response shape. It also distinguishes itself from siblings by identifying as the companion of `search` in the Deep Research contract and explicitly noting that `bcb_*` tools remain for data queries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage guidance is explicit: this tool is for ids returned by `search`, and unknown ids produce an error. It also names the alternative category (`bcb_*` tools) for data queries, so an agent knows when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchBusca para Deep ResearchARead-onlyIdempotentInspect
Searches the Banco Central do Brasil time series (SGS: interest rates, inflation, exchange rates, credit, fiscal and external sector — the curated catalog plus the open data portal index) catalog and returns up to 10 matching documents as { id, title, url }, ordered by relevance (an empty list means nothing matched).
This tool exists for the OpenAI Deep Research contract: ChatGPT deep research, company knowledge and research workflows over the Responses API require exactly the tools search and fetch. Pass one of the returned ids to fetch to read the document.
For direct questions and for data (values, series, rankings) prefer the bcb_* tools, which return the actual data with provenance — this is a catalog index, not a data query.
Query: natural language or keywords, Portuguese or English; accents and case are ignored.
Behavior: read-only and idempotent — the catalog comes from the public source and is cached in memory.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Termos de busca em linguagem natural ou palavras-chave (acentos e caixa são ignorados) |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | Documentos encontrados, em ordem de relevância |
| provenance | Yes | Um bloco por procedência que contribuiu com esta resposta (contrato v1.0; licenças nunca se fundem) |
| attribution | Yes | URLs canônicas das fontes desta resposta (lista de atribuição) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior, so the description only needs to add context. It adds useful behavioral details: query accent/case handling, relevance ordering, empty-list semantics, and in-memory caching of a public catalog. It avoids contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized in short, labeled chunks (core behavior, contract context, exclusion, query guidance, safety). Every sentence contributes either to selection, invocation, or routing, and the most important information is front-loaded in the first sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter search tool, the description is complete: it defines the return type and count, explains the empty-list case, shows how to use results with `fetch`, and warns against using it for data queries. An agent has everything needed to call it correctly without further inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents the `query` parameter. The description still adds one meaningful fact beyond the schema — that queries may be in Portuguese or English — while restating that natural language/keywords and accent/case insensitivity are acceptable. This is enough to move above the coverage baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: it searches the Banco Central do Brasil SGS catalog and returns up to 10 matching documents with a concrete shape. It also distinguishes itself from siblings by stating it is a catalog index, not a data query tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says when to use this tool (Deep Research workflows via Responses API), names the downstream `fetch` step, and tells the agent to prefer `bcb_*` tools for actual data. This is clear routing guidance with exclusions, not just an implied context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
17 tool updates
- First observed
bcb_buscar_serie - First observed
bcb_cambio_cotacao - First observed
bcb_cambio_moedas - First observed
bcb_comparar - First observed
bcb_correlacao - First observed
bcb_deflacionar - First observed
bcb_focus_expectativas - First observed
bcb_focus_referencias - First observed
bcb_focus_selic - First observed
bcb_indicadores_atuais - First observed
bcb_serie_metadados - First observed
bcb_serie_ultimos - First observed
bcb_serie_valores - First observed
bcb_series_populares - First observed
bcb_variacao - First observed
fetch - First observed
search
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
IBGE: geography, census, economy and health from the official APIs, with provenance. 23 tools.
2319Brazilian foreign-trade, production, climate and commodity forecast data. Read-only, like-for-like.
1Brazilian public data API for AI agents. BCB, IBGE, CVM, B3, compliance. x402 payments on Base.
Cross-asset market data for AI agents: forex, equities, Brazil macro (BCB/B3), crypto.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceProvides tools to query Brazilian Central Bank public data, including SGS time series and PTAX exchange rates.-
- AlicenseNot gradedqualityBmaintenanceProvides point-in-time Brazilian market data and official statistics, enabling accurate backtesting and AI agent access to vintage, unrevised data, as well as Brazilian financial primitives like PIX code generation and business day calculations.MIT
- AlicenseNot gradedqualityCmaintenanceBanco Central do Brasil MCP server that enables querying Brazilian central bank economic indicators via SGS codes.16MIT
- AlicenseAqualityAmaintenanceEnables AI assistants to query Brazilian public data from IBGE, Banco Central, INMET, and Câmara dos Deputados, including population, economic indicators, weather observations, and legislative information, without requiring API keys for most tools.142MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Every bcb_* tool targets a distinct operation—search, raw values, last values, metadata, variation, comparison, correlation, deflation, Focus expectations, exchange quotes, etc.—and the descriptions explicitly cross-reference 'use this instead' cases. The only near-overlap, search vs bcb_buscar_serie, is clearly separated by contract purpose: search returns documents for fetch, not data.
The bcb_ prefix and snake_case are consistent, but the internal convention is mixed: some names are action-first (buscar_serie, deflacionar, comparar), some are resource-first (serie_valores, serie_metadados, cambio_cotacao), and some are noun-only (variacao, corrrelacao). The un-prefixed search/fetch also stand apart, though for a deliberate contract reason.
With 17 tools, the surface is at the low end of the heavy range. Each tool has a defensible job and the breadth of BCB data (SGS series, exchange, Focus expectations, analytics, plus search/fetch) justifies many of them, but it is still more than the typical well-scoped 3–15 tool set.
The server covers the read-only domain thoroughly: discovery, browsing, search, metadata, raw values, recent values, variation, multi-series comparison, correlation, deflation, current indicators, exchange quotes, and Focus expectations with reference discovery. There are no dead ends—cross-references send agents to the right next tool—and no relevant CRUD operations are missing because this is a read-only data source.