Skip to main content
Glama

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.

Ownership verified
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 tools
bcb_buscar_serieBuscar série no catálogoA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
termoYesTermo de busca (mínimo 2 caracteres) ou o código da série. Vários termos são combinados com E.
limiteNoMáximo de séries a devolver (1-100, padrão: 20). `totalEncontradas` traz o total antes do corte.

Output Schema

ParametersJSON Schema
NameRequiredDescription
termoYesTermo pesquisado
avisosNoAvisos de degradação (índice vencido ou indisponível)
seriesYesSéries que correspondem ao termo — as do catálogo curado primeiro
catalogoYesProveniência do índice usado na busca
mensagemNoMensagem exibida quando nada é encontrado
sugestaoNoSugestões de termos alternativos
observacaoNoAviso de corte quando há mais resultados que `limite`
provenanceYesUm bloco por procedência que contribuiu com esta resposta (contrato v1.0; licenças nunca se fundem)
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
totalEncontradasYesQuantidade de séries encontradas, antes do corte por `limite`

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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)A
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoDia específico (yyyy-MM-dd ou dd/MM/yyyy). Não combine com dataInicial/dataFinal.
moedaNoSímbolo da moeda (ex.: USD, EUR, GBP, JPY). Padrão: USD.USD
limiteNoMáximo de boletins a devolver (1-1000, padrão 100)
dataFinalNoFim do intervalo (yyyy-MM-dd ou dd/MM/yyyy). Padrão: hoje.
dataInicialNoInício do intervalo (yyyy-MM-dd ou dd/MM/yyyy). Padrão: 7 dias antes do fim.

Output Schema

ParametersJSON Schema
NameRequiredDescription
moedaYes
periodoYes
cotacoesYes
disclaimerYesDisclaimer de responsabilidade do BCB, repassado literalmente
observacaoNo
provenanceYesUm bloco por procedência que contribuiu com esta resposta (contrato v1.0; licenças nunca se fundem)
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
urlConsultaYes
consultadoEmYes
totalRegistrosYes
qualificacaoParidadeNoQualificação da origem das paridades não-dólar

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 BCBA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
termoNoFiltro por símbolo ou nome (ex.: 'EUR', 'libra'). Opcional.

Output Schema

ParametersJSON Schema
NameRequiredDescription
termoNoTermo aplicado no filtro; nulo quando não foi informado
moedasYes
disclaimerYes
observacaoNo
provenanceYesBloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
totalMoedasYes
urlConsultaYes
consultadoEmYes
qualificacaoParidadeNo

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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ériesA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
codigosYesArray com 2 a 5 códigos de séries para comparar
agregacaoNoComo 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
dataFinalYesData final (yyyy-MM-dd ou dd/MM/yyyy)
frequenciaNoOpcional: 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.
dataInicialYesData inicial (yyyy-MM-dd ou dd/MM/yyyy)

Output Schema

ParametersJSON Schema
NameRequiredDescription
avisoNoPresente 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.
errosYesSéries que não retornaram dados, com o motivo
periodoYesJanela temporal comparada
rankingYesSéries ordenadas pela variação percentual (maior para menor)
derivacaoYesOrigem dos números calculados: o que é derivado, por qual motor e com quais convenções
provenanceYesBloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
totalSeriesYesQuantidade de séries solicitadas
harmonizacaoNoPresente quando `frequencia` foi informada: descreve a reamostragem aplicada. Valor DERIVADO — calculado por este servidor, não publicado pelo Banco Central.
seriesComErroYesQuantidade de séries sem dados ou com erro
seriesComDadosYesQuantidade de séries com dados no período

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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ériesA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
baseNo`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
metodoNo`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
codigosYesArray com 2 a 5 códigos de séries para correlacionar par a par
agregacaoNoComo 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
dataFinalYesData final (yyyy-MM-dd ou dd/MM/yyyy)
frequenciaNoOpcional: 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.
dataInicialYesData inicial (yyyy-MM-dd ou dd/MM/yyyy)

Output Schema

ParametersJSON Schema
NameRequiredDescription
baseYesSe o cálculo usou os valores ou as variações
errosYesSéries que não retornaram dados, com o motivo
paresYesUm item por par de séries
metodoYesMétodo aplicado
seriesYesSéries que entraram no cálculo
periodoYesJanela temporal correlacionada
derivacaoYesOrigem dos números calculados: o que é derivado, por qual motor e com quais convenções
provenanceYesBloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença
alinhamentoYesComo 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.
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
harmonizacaoNoPresente quando `frequencia` foi informada: descreve a reamostragem aplicada. Valor DERIVADO — calculado por este servidor, não publicado pelo Banco Central.

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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)A
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
codigoYesCódigo da série NOMINAL a deflacionar (ex.: 1619 para salário mínimo)
indiceNoÍndice de preços usado como deflator: IPCA (433), INPC (188) ou IGP-M (189)ipca
mesBaseNoMê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'.
agregacaoNoComo 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
dataFinalYesData final (yyyy-MM-dd ou dd/MM/yyyy)
frequenciaNoOpcional: 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.
dataInicialYesData inicial (yyyy-MM-dd ou dd/MM/yyyy)

Output Schema

ParametersJSON Schema
NameRequiredDescription
baseYesMês em cujos preços os valores reais estão expressos
dadosYesObservações com o valor publicado e o valor em moeda constante
serieYesIdentificação da série nominal
avisosNoRessalvas sobre cobertura do índice ou mês base substituído
periodoYes
chunkingNoPresente 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.
deflatorYesÍndice de preços usado e o intervalo que ele cobre
variacaoYesVariaçã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.
derivacaoYesOrigem dos números calculados: o que é derivado, por qual motor e com quais convenções
provenanceYesBloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
harmonizacaoNoPresente quando `frequencia` foi informada: descreve a reamostragem aplicada. Valor DERIVADO — calculado por este servidor, não publicado pelo Banco Central.
janelaAplicadaNoPresente 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

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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)A
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
top5NoExpectativas do Top 5 (as cinco instituições mais assertivas) em vez do consenso; existe nos cinco horizontes
limiteNoMáximo de coletas a devolver (1-500, padrão 50)
dataFinalNoFim da janela de COLETA (yyyy-MM-dd ou dd/MM/yyyy). Padrão: hoje.
horizonteYesmensal, trimestral e anual usam `referencia`; inflacao_12m e inflacao_24m são rolantes e não usam
indicadorYesIndicador exatamente como a fonte publica (ex.: 'IPCA', 'IGP-M', 'PIB Total', 'Câmbio'). Veja bcb_focus_referencias.
suavizadaNoSó nos horizontes rolantes: série suavizada (true) ou não suavizada (false)
referenciaNoAlvo da expectativa: MM/yyyy (mensal), T/yyyy (trimestral) ou yyyy (anual). Obrigatória nesses três; proibida nos rolantes.
dataInicialNoInício da janela de COLETA (yyyy-MM-dd ou dd/MM/yyyy). Padrão: 30 dias antes do fim.

Output Schema

ParametersJSON Schema
NameRequiredDescription
baseYes
filtroYesFiltro efetivamente aplicado na origem; nulo onde o parâmetro não foi informado
horizonteYes
indicadorYes
observacaoNo
provenanceYesBloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
urlConsultaYesURL OData consultada, reproduzível no navegador
consultadoEmYesTimestamp ISO 8601 da consulta
expectativasYes
totalRegistrosYesColetas encontradas (contagem client-side)

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 FocusA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
escopoNoRestringe 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.
indicadorNoFiltrar por um indicador específico, para ver em quais escopos ele existe (opcional)

Output Schema

ParametersJSON Schema
NameRequiredDescription
falhasNoEscopos que não responderam nesta consulta
filtroNoFiltro pedido; nulo onde o parâmetro não foi informado
janelaYesJanela de coleta observada para montar as listas
escoposYesUm bloco por escopo: regras do contrato mais o que a fonte publica nele
observacaoNo
provenanceYesBloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
indicadoresYesUnião dos indicadores de todos os escopos consultados
referenciasYesUnião das referências de todos os escopos consultados
consultadoEmYes
totalRegistrosYes
observacaoFalhasNo

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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)A
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
top5NoExpectativas do Top 5 em vez do consenso
limiteNoMáximo de coletas a devolver (1-500, padrão 50)
reuniaoNoReunião do Copom no formato R1/2026 (opcional; sem ela, todas as reuniões da janela)
dataFinalNoFim da janela de COLETA (yyyy-MM-dd ou dd/MM/yyyy). Padrão: hoje.
dataInicialNoInício da janela de COLETA (yyyy-MM-dd ou dd/MM/yyyy). Padrão: 30 dias antes do fim.

Output Schema

ParametersJSON Schema
NameRequiredDescription
baseYes
filtroYesFiltro efetivamente aplicado; `reuniao` é nula quando não foi informada
observacaoNo
provenanceYesBloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
urlConsultaYes
consultadoEmYes
expectativasYes
observacaoEixoNo
totalRegistrosYes

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 atuaisA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
provenanceYesBloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
indicadoresYesLista de indicadores com seus valores mais recentes
consultadoEmYesTimestamp ISO 8601 da consulta

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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érieA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
codigoYesCódigo da série no SGS/BCB

Output Schema

ParametersJSON Schema
NameRequiredDescription
nomeYesNome da série
fonteYesFonte dos dados
codigoYesCódigo da série no SGS/BCB
categoriaNoCategoria econômica
observacaoNoObservação sobre a origem dos metadados
provenanceYesUm bloco por procedência que contribuiu com esta resposta (contrato v1.0; licenças nunca se fundem)
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
ultimoValorNoÚltima observação disponível
urlConsultaNoURL da API do BCB para consulta completa
urlUltimos10NoURL da API do BCB para os últimos 10 valores
periodicidadeNoPeriodicidade da série
periodicidadeInferidaNoPresente e true quando a periodicidade foi inferida do espaçamento das observações

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 popularesA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoriaNoFiltrar 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

ParametersJSON Schema
NameRequiredDescription
seriesYesSéries encontradas. Objeto agrupado por categoria quando sem filtro; array plano quando filtrado por categoria.
categoriasYesQuantidade de categorias distintas
observacaoNoDica de uso
provenanceYesBloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
totalSeriesYesQuantidade total de séries retornadas

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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érieA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
codigoYesCódigo da série no SGS/BCB
quantidadeNoQuantidade 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

ParametersJSON Schema
NameRequiredDescription
dadosYesObservações mais recentes
serieYesIdentificação da série temporal
chunkingNoPresente 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.
observacaoNoMensagem informativa (ex.: quando não há dados)
provenanceYesBloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
totalRegistrosYesQuantidade de observações retornadas

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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érieA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
codigoYesCódigo da série no SGS/BCB (ex: 433 para IPCA mensal, 11 para Selic)
agregacaoNoComo 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
dataFinalNoData final no formato yyyy-MM-dd ou dd/MM/yyyy (opcional)
frequenciaNoOpcional: 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.
dataInicialNoData inicial no formato yyyy-MM-dd ou dd/MM/yyyy (opcional)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dadosYesObservações históricas
serieYesIdentificação da série temporal
chunkingNoPresente 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.
observacaoNoMensagem informativa (ex.: quando não há dados)
provenanceYesBloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
harmonizacaoNoPresente quando `frequencia` foi informada: descreve a reamostragem aplicada. Valor DERIVADO — calculado por este servidor, não publicado pelo Banco Central.
periodoFinalNoData da última observação
janelaAplicadaNoPresente 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).
periodoInicialNoData da primeira observação
totalRegistrosYesQuantidade de observações retornadas

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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érieA
Read-onlyIdempotent
Inspect

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
codigoYesCódigo da série no SGS/BCB
periodosNoAlternativa: 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.
dataFinalNoData final (yyyy-MM-dd ou dd/MM/yyyy). Se não informada, usa o último valor disponível.
dataInicialNoData inicial (yyyy-MM-dd ou dd/MM/yyyy). Se não informada, usa o primeiro valor disponível.

Output Schema

ParametersJSON Schema
NameRequiredDescription
serieYesIdentificação da série
analiseYesResultado 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
periodoYesJanela temporal analisada
chunkingNoPresente 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.
derivacaoYesOrigem dos números calculados: o que é derivado, por qual motor e com quais convenções
provenanceYesBloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
estatisticasYesEstatísticas descritivas dos valores no período
janelaAplicadaNoPresente 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

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 ResearchA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesIdentificador de um documento devolvido por `search`

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYesIdentificador único do documento no servidor; é o que `fetch` recebe
urlYesURL pública canônica do documento — a citação do ChatGPT depende dela
textYesConteúdo integral do documento, legível (Markdown)
titleYesTítulo legível do documento
metadataNoPares chave/valor adicionais sobre o documento (tipo, fonte, período…)
provenanceYesUm bloco por procedência que contribuiu com esta resposta (contrato v1.0; licenças nunca se fundem)
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 17 tool updates
    • First observedbcb_buscar_serie
    • First observedbcb_cambio_cotacao
    • First observedbcb_cambio_moedas
    • First observedbcb_comparar
    • First observedbcb_correlacao
    • First observedbcb_deflacionar
    • First observedbcb_focus_expectativas
    • First observedbcb_focus_referencias
    • First observedbcb_focus_selic
    • First observedbcb_indicadores_atuais
    • First observedbcb_serie_metadados
    • First observedbcb_serie_ultimos
    • First observedbcb_serie_valores
    • First observedbcb_series_populares
    • First observedbcb_variacao
    • First observedfetch
    • First observedsearch

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Provides tools to query Brazilian Central Bank public data, including SGS time series and PTAX exchange rates.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides 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
  • A
    license
    Not graded
    quality
    C
    maintenance
    Banco Central do Brasil MCP server that enables querying Brazilian central bank economic indicators via SGS codes.
    16
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables 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.
    14
    2
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.4/5.0
Disambiguation5/5

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.

Naming Consistency3/5

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.

Tool Count3/5

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.

Completeness5/5

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.