Skip to main content
Glama
SidneyBissoli

Banco Central do Brasil (BCB) — SGS MCP

Banco Central do Brasil (BCB) — SGS Time Series MCP Server

npm version npm downloads node MCP Registry LobeHub GitHub stars GitHub Sponsors License: MIT AllMCPs Verified mcpindex

Leia em Português

MCP (Model Context Protocol) server for the Brazilian Central Bank (Banco Central do Brasil, BCB): SGS time series (SGS/BCB), the Focus market-expectations survey (served over the Olinda OData API) and PTAX exchange rates.

Query economic and financial indicators such as Selic (interest rate), IPCA (inflation), exchange rates, GDP, and more, directly from AI assistants like Claude.

If you find this project useful, please consider giving it a star on GitHub. It helps others discover the project!

Capabilities: 17 tools (skills) · 3 resources · 3 prompts — everything an MCP client needs to query the Brazilian Central Bank: SGS/BCB time series, the Focus market-expectations survey and PTAX exchange rates.

See it in action

Ask your assistant, in plain Portuguese:

  • "Qual a taxa Selic atual?" → bcb_indicadores_atuais

  • "Mostre o IPCA mês a mês em 2024." → bcb_serie_valores

  • "Qual foi a variação do dólar nos últimos 12 meses?" → bcb_variacao

  • "O que o mercado espera do IPCA em 2027?" → bcb_focus_expectativas

  • "Qual a Selic esperada na próxima reunião do Copom?" → bcb_focus_selic

  • "Qual foi a PTAX de fechamento do euro na sexta?" → bcb_cambio_cotacao

The answers come live from the Brazilian Central Bank's SGS API — exact figures with provenance, not numbers guessed from training data.

Related MCP server: Financial Modeling Prep MCP Server

Features

  • Historical data - Query time series values by code with date filters

  • Latest values - Get the most recent N values of any series

  • Metadata - Detailed information about series (frequency, source, etc.)

  • Popular series catalog - 135 economic indicators verified against the source, organized by category

  • Smart search - Find series by keyword (accent-insensitive)

  • Current indicators - Latest values for key economic indicators

  • Long periods, handled - The BCB API caps daily series at a 10-year window (HTTP 406) and refuses open windows; requests are sliced, fetched and merged automatically, so a 15-year daily query just works

  • Frequency harmonisation - Resample a series to monthly, quarterly or annual with an explicit convention, including geometric compounding for series that already are percentage changes (monthly IPCA into annual IPCA)

  • Variation calculation - Percentage change between periods with statistics

  • Series comparison - Compare multiple series over the same period, with a warning when their periodicities differ

  • Focus survey - Market expectations (mean, median, std. deviation, min, max, respondents) for IPCA, GDP, FX and more, by monthly/quarterly/annual horizon or rolling 12/24-month inflation, plus Selic by Copom meeting

  • PTAX exchange rates - Official closing quotes for any currency the BCB publishes, single day or date range

📖 Article (in Portuguese): Séries do Banco Central: como consultar o SGS, a Focus e a PTAX sem cair nas armadilhas — the three API limits measured live, level vs. rate series, the Focus scopes, and what the ODbL requires. Also published on the site, in Portuguese and English: sidneybissoli.com.

Available Tools

Tool

Description

bcb_serie_valores

Query series values by code and date range; slices long windows automatically and can harmonise the series to a coarser frequency

bcb_serie_ultimos

Get the last N values of a series (any N — the upstream cap of 20 is worked around)

bcb_serie_metadados

Get series metadata (name, frequency, category, last value)

bcb_series_populares

List popular series grouped by category

bcb_buscar_serie

Search series by name or description (accent-insensitive, AND between words; everyday words resolved to the BCB's wording, and the response says so)

bcb_indicadores_atuais

Latest values: Selic, IPCA, USD/BRL, IBC-Br

bcb_variacao

Percentage variation of one series over a period: level change for level series, compounded accumulation for series that are already period-on-period rates (IPCA, IGP-M, INPC…); analise.metodo says which

bcb_comparar

Compare 2 to 5 series over the same period with ranking (same level/compounding rule per series, declared in metodo)

bcb_focus_expectativas

Focus survey expectations for one indicator, horizon as a parameter (monthly, quarterly, annual, rolling 12m/24m inflation); top5 flag

bcb_focus_selic

Focus expectations for the Selic rate, by Copom meeting (R1/2026 form)

bcb_focus_referencias

Which indicators and reference dates the Focus survey actually publishes, broken down per scope (the five horizons plus selic, whose axis is the Copom meeting) — the indicator set differs by scope (9 monthly vs 26 annual)

bcb_cambio_cotacao

PTAX quote for a currency (USD by default), single day or date range

bcb_cambio_moedas

Currencies with quotes published by the BCB

search

OpenAI Deep Research contract: searches the series catalog (curated + open data portal index) and returns { id, title, url } — see ChatGPT (Deep Research)

fetch

OpenAI Deep Research contract: returns one series as a readable document with its canonical public URL

Resources

Reference catalogs the server exposes as MCP resources (read-only contextual data that clients can attach):

URI

Description

bcb://series/populares

Catalog of 135 verified BCB economic series, organized by category (JSON)

bcb://series/categorias

List of available categories in the series catalog (JSON)

bcb://series/principais

Codes of the most-used indicators — Selic, IPCA, USD/BRL, GDP, etc. (JSON)

Prompts

Ready-made templates the server provides as MCP prompts:

Prompt

Description

indicadores_atuais

Query Brazil's key economic indicators (Selic, IPCA, USD/BRL, IBC-Br)

panorama_economico

Generate a complete overview of the Brazilian economy

comparar_inflacao

Compare Brazil's main inflation indices (IPCA, IGP-M, INPC) over the last 12 months

Installation

Visit bcb-br-mcp on Smithery and follow the installation instructions for your MCP client.

Via URL (Claude.ai, Claude Desktop, any MCP client)

Use the HTTP endpoint directly, no installation required:

https://bcb.sidneybissoli.com/mcp

The legacy hostname https://bcb.sidneybissoli.workers.dev keeps working, and so does the older POST / route — clients configured before the endpoint moved to /mcp are rewritten transparently, so nothing that used to work stopped working. New setups should use the URL above.

Via npx (Claude Desktop)

Add to your Claude Desktop configuration file:

Windows: %APPDATA%\Claude\claude_desktop_config.json

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "bcb-br": {
      "command": "npx",
      "args": ["-y", "bcb-br-mcp"]
    }
  }
}

Via global install

npm install -g bcb-br-mcp
{
  "mcpServers": {
    "bcb-br": {
      "command": "bcb-br-mcp"
    }
  }
}

ChatGPT (Deep Research)

ChatGPT deep research (and company knowledge, and research workflows over the Responses API) only uses an MCP server that exposes exactly search and fetch — this server does, on top of the bcb_* tools. Point the connector at the hosted endpoint, no key required:

https://bcb.sidneybissoli.com/mcp

search ranks the query against the series catalog — the 135 curated series plus the thousands indexed from the Open Data Portal — and returns { id, title, url } (ids are sgs:<code>); fetch returns the series as readable Markdown (name, category, frequency, unit, latest value) with the canonical public URL, which is what ChatGPT cites: the dataset page on dadosabertos.bcb.gov.br when the series has one, otherwise the public SGS query for its latest observations (the SGS has no per-series page). Both carry the same provenance block as every other tool. In ChatGPT's developer mode (Settings → Security and login → Developer mode) any tool is callable — the bcb_* tools remain the ones to use for data.

Usage Examples

Get the current Selic rate

What is the current Selic interest rate?
→ Uses bcb_indicadores_atuais

IPCA history for 2024

Show me the monthly IPCA for 2024
→ Uses bcb_serie_valores with code 433, dataInicial 2024-01-01, dataFinal 2024-12-31

List inflation indicators

What inflation series are available?
→ Uses bcb_series_populares with category "Inflação"

Search for USD exchange rate series

Search for series related to the dollar
→ Uses bcb_buscar_serie with term "dolar" (works without accents)

Calculate USD/BRL variation

What was the USD/BRL variation over the last 12 months?
→ Uses bcb_variacao with code 1 and periodos 12

Compare IPCA, IGP-M, and INPC

Compare IPCA, IGP-M, and INPC in 2024
→ Uses bcb_comparar with codes [433, 189, 188], dataInicial 2024-01-01, dataFinal 2024-12-31

Series Catalog (135)

The curated catalog holds 135 series, each verified against the source on 2026-08-13 (4 discontinued FGV series were removed on 2026-08-23).

The fonteNome field on every entry says where its name comes from:

  • portal (82 series) — the name is transcribed from the series' dataset on the BCB Open Data Portal, and unidade carries the published unit of measure.

  • medido (53 series) — the series has no dataset on the portal, so the name is inherited; what was verified against the source is its periodicity and order of magnitude.

Periodicity is always the measured one (from the spacing between observations), never an inherited label. Market expectations are not here — use bcb_focus_expectativas.

Juros (14)

Code

Name

Periodicity

Name source

11

Taxa de juros - Selic

Diária

portal

432

Taxa de juros - Meta Selic definida pelo Copom

Diária

portal

1178

Taxa de juros - Selic anualizada base 252

Diária

portal

4189

Taxa de juros - Selic acumulada no mês anualizada base 252

Mensal

portal

4390

Taxa de juros - Selic acumulada no mês

Mensal

portal

12

Taxa de juros - CDI diária

Diária

medido

4389

Taxa de juros - CDI anualizada base 252

Diária

medido

4391

Taxa de juros - CDI acumulada no mês

Mensal

medido

4392

Taxa de juros - CDI acumulada no mês anualizada

Mensal

medido

226

Taxa Referencial (TR) - diária

Diária

medido

7811

Taxa Referencial (TR) - mensal

Mensal

medido

7812

Taxa Referencial (TR) - anualizada

Mensal

medido

256

Taxa de Juros de Longo Prazo (TJLP)

Mensal

medido

253

Taxa de juros - CDB pré-fixado - 30 dias

Diária

medido

Inflação (28)

Code

Name

Periodicity

Name source

433

IPCA - Variação mensal

Mensal

medido

13522

IPCA - Variação acumulada em 12 meses

Mensal

medido

7478

IPCA-15 - Variação mensal

Mensal

medido

10764

IPCA-E - Variação mensal

Mensal

medido

16121

Índice nacional de preços ao consumidor - Amplo (IPCA) - Núcleo por exclusão - ex2

Mensal

portal

16122

Índice nacional de preços ao consumidor - Amplo (IPCA) - Núcleo de dupla ponderação

Mensal

portal

11426

Índice nacional de preços ao consumidor - Amplo (IPCA) - Núcleo médias aparadas sem suavização

Mensal

portal

11427

Índice nacional de preços ao consumidor - Amplo (IPCA) - Núcleo por exclusão - Sem monitorados e alimentos no domicílio

Mensal

portal

10841

Índice de Preços ao Consumidor-Amplo (IPCA) - Bens não-duráveis

Mensal

portal

10842

Índice de Preços ao Consumidor-Amplo (IPCA) - Bens semi-duráveis

Mensal

portal

10843

Índice de Preços ao Consumidor-Amplo (IPCA) - Duráveis

Mensal

portal

10844

Índice de Preços ao Consumidor-Amplo (IPCA) - Serviços

Mensal

portal

4449

Índice nacional de preços ao consumidor-Amplo (IPCA) - Preços monitorados - Total

Mensal

portal

11428

Índice nacional de preços ao consumidor - Amplo (IPCA) - Itens livres

Mensal

portal

188

INPC - Variação mensal

Mensal

medido

189

IGP-M - Variação mensal

Mensal

medido

7447

IGP-10 - Variação mensal

Mensal

medido

7448

IGP-M - 1ª prévia

Mensal

medido

7449

IGP-M - 2ª prévia

Mensal

medido

190

IGP-DI - Variação mensal

Mensal

medido

7450

IPA-M - Variação mensal

Mensal

medido

225

IPA-DI - Geral - Variação mensal

Mensal

medido

7459

IPA-DI - Produtos industriais

Mensal

medido

7460

IPA-DI - Produtos agrícolas

Mensal

medido

191

IPC-DI - Variação mensal

Mensal

medido

193

IPC-Fipe - Variação mensal

Mensal

medido

17679

IPC-3i - Variação mensal

Mensal

medido

17680

IPC-C1 - Variação mensal

Mensal

medido

Câmbio (13)

Code

Name

Periodicity

Name source

1

Taxa de câmbio - Livre - Dólar americano (venda) - diário

Diária

portal

10813

Taxa de câmbio - Livre - Dólar americano (compra)

Diária

portal

3698

Taxa de câmbio - PTAX - Dólar americano (venda)

Mensal

medido

3697

Taxa de câmbio - PTAX - Dólar americano (compra)

Mensal

medido

3695

Taxa de câmbio - PTAX - Dólar americano (média)

Mensal

medido

21619

Taxa de câmbio - Euro (venda)

Diária

medido

21620

Taxa de câmbio - Euro (compra)

Diária

medido

21623

Taxa de câmbio - Libra Esterlina (venda)

Diária

medido

21624

Taxa de câmbio - Libra Esterlina (compra)

Diária

medido

21621

Taxa de câmbio - Iene (venda)

Diária

medido

21622

Taxa de câmbio - Iene (compra)

Diária

medido

21625

Taxa de câmbio - Franco Suíço (venda)

Diária

medido

21626

Taxa de câmbio - Franco Suíço (compra)

Diária

medido

Atividade Econômica (21)

Code

Name

Periodicity

Name source

4380

PIB mensal - Valores correntes (R$ milhões)

Mensal

medido

4381

PIB acumulado no ano - Valores correntes (R$ milhões)

Mensal

medido

4382

PIB acumulado dos últimos 12 meses - Valores correntes (R$ milhões)

Mensal

medido

4385

PIB mensal em US$ (milhões)

Mensal

medido

4386

PIB acumulado no ano em US$ (milhões)

Mensal

medido

7324

PIB anual em US$ (milhões)

Anual

medido

24363

Índice de Atividade Econômica do Banco Central - IBC-Br

Mensal

portal

24364

Índice de Atividade Econômica do Banco Central (IBC-Br) - com ajuste sazonal

Mensal

portal

29601

Índice de Atividade Econômica do Banco Central (IBC-Br) Agropecuária

Mensal

portal

29602

Índice de Atividade Econômica do Banco Central (IBC-Br) Agropecuária - com ajuste sazonal

Mensal

portal

29603

Índice de Atividade Econômica do Banco Central (IBC-Br) Indústria

Mensal

portal

29604

Índice de Atividade Econômica do Banco Central (IBC-Br) Indústria - com ajuste sazonal

Mensal

portal

29605

Índice de Atividade Econômica do Banco Central (IBC-Br) Serviços

Mensal

portal

29606

Índice de Atividade Econômica do Banco Central (IBC-Br) Serviços - com ajuste sazonal

Mensal

portal

22103

Exportação de bens e serviços - Trimestral

Trimestral

medido

22104

Importação de bens e serviços - Trimestral

Trimestral

medido

22109

Consumo das famílias - Trimestral

Trimestral

medido

22110

Consumo do governo - Trimestral

Trimestral

medido

22111

Formação bruta de capital fixo - Trimestral

Trimestral

medido

21859

Produção industrial - Geral - Variação mensal

Mensal

medido

21862

Utilização da capacidade instalada - Indústria

Mensal

medido

Emprego (4)

Code

Name

Periodicity

Name source

24369

Taxa de desocupação - PNAD Contínua

Mensal

medido

24380

Rendimento médio real habitual - Todos os trabalhos

Mensal

medido

24381

Massa de rendimento real habitual

Mensal

medido

28561

CAGED - Saldo de empregos formais

Mensal

medido

Fiscal (7)

Code

Name

Periodicity

Name source

4503

Dívida Líquida do Setor Público (% PIB) - Total - Governo Federal e Banco Central

Mensal

portal

4513

Dívida Líquida do Setor Público (% PIB) - Total - Setor público consolidado

Mensal

portal

4505

Dívida Líquida do Setor Público (% PIB) - Total - Banco Central

Mensal

portal

4536

Dívida líquida do governo geral (% PIB)

Mensal

portal

4537

Dívida bruta do governo geral (% PIB) - Metodologia utilizada até 2007

Mensal

portal

5364

Receita total do governo central

Mensal

medido

5793

NFSP sem desvalorização cambial (% PIB) - Fluxo acumulado em 12 meses - Resultado primário - Total - Setor público consolidado

Mensal

portal

Setor Externo (12)

Code

Name

Periodicity

Name source

3546

Reservas internacionais - Conceito liquidez - Total

Mensal

medido

13621

Reservas internacionais - Conceito caixa - Total - diária

Diária

portal

22707

Balança comercial - Balanço de Pagamentos - mensal - saldo

Mensal

portal

22708

Exportação de bens - Balanço de Pagamentos - mensal

Mensal

portal

22709

Importação de bens - Balanço de Pagamentos - mensal

Mensal

portal

22714

Bens exportados sob merchanting - exportações positivas - mensal

Mensal

portal

22701

Transações correntes - mensal - saldo

Mensal

portal

22704

Balança comercial e Serviços - mensal - saldo

Mensal

portal

22715

Bens importados sob merchanting - exportações negativas - mensal

Mensal

portal

22716

Balança comercial - ouro não monetário - Balanço de Pagamentos - mensal - saldo

Mensal

portal

22846

Renda secundária - Demais setores - Transferências pessoais - mensal - receita

Mensal

portal

22885

Investimentos diretos no país - IDP - mensal - líquido

Mensal

portal

Crédito (30)

Code

Name

Periodicity

Name source

20539

Saldo da carteira de crédito - Total

Mensal

portal

20540

Saldo da carteira de crédito - Pessoas jurídicas - Total

Mensal

portal

20541

Saldo da carteira de crédito - Pessoas físicas - Total

Mensal

portal

20542

Saldo da carteira de crédito com recursos livres - Total

Mensal

portal

20570

Saldo da carteira de crédito com recursos livres - Pessoas físicas - Total

Mensal

portal

20592

Saldo da carteira de crédito com recursos livres - Pessoas físicas - Outros créditos livres

Mensal

portal

20615

Saldo da carteira de crédito com recursos direcionados - Pessoas físicas - Financiamento agroindustrial com recursos do BNDES

Mensal

portal

20631

Concessões de crédito - Total

Mensal

portal

20665

Concessões de crédito com recursos livres - Pessoas físicas - Cheque especial

Mensal

portal

20714

Taxa média de juros das operações de crédito - Total

Mensal

portal

20716

Taxa média de juros das operações de crédito - Pessoas físicas - Total

Mensal

portal

20740

Taxa média de juros das operações de crédito com recursos livres - Pessoas físicas - Total

Mensal

portal

20749

Taxa média de juros das operações de crédito com recursos livres - Pessoas físicas - Aquisição de veículos

Mensal

portal

20772

Taxa média de juros das operações de crédito com recursos direcionados - Pessoas físicas - Financiamento imobiliário com taxas de mercado

Mensal

portal

25497

Taxa média mensal de juros das operações de crédito com recursos direcionados - Pessoas físicas - Financiamento imobiliário com taxas de mercado

Mensal

portal

20783

Spread médio das operações de crédito - Total

Mensal

portal

20785

Spread médio das operações de crédito - Pessoas físicas - Total

Mensal

portal

20786

Spread médio das operações de crédito com recursos livres - Total

Mensal

portal

21082

Inadimplência da carteira de crédito - Total

Mensal

portal

21084

Inadimplência da carteira de crédito - Pessoas físicas - Total

Mensal

portal

21085

Inadimplência da carteira de crédito com recursos livres - Total

Mensal

portal

21128

Inadimplência da carteira de crédito com recursos livres - Pessoas físicas - Cartão de crédito parcelado

Mensal

portal

21129

Inadimplência da carteira de crédito com recursos livres - Pessoas físicas - Cartão de crédito total

Mensal

portal

13685

Inadimplência da carteira de crédito das instituições financeiras sob controle privado - Total

Mensal

portal

29033

Comprometimento de renda das famílias com juros da dívida com o Sistema Financeiro Nacional - Com ajuste sazonal (RNDBF)

Mensal

portal

29034

Comprometimento de renda das famílias com o serviço da dívida com o Sistema Financeiro Nacional - Com ajuste sazonal (RNDBF)

Mensal

portal

29035

Comprometimento de renda das famílias com o serviço da dívida com o Sistema Financeiro Nacional exceto crédito habitacional - Com ajuste sazonal (RNDBF)

Mensal

portal

29036

Comprometimento de renda das famílias com amortização da dívida com o Sistema Financeiro Nacional - Com ajuste sazonal (RNDBF)

Mensal

portal

29037

Endividamento das famílias com o Sistema Financeiro Nacional em relação à renda acumulada dos últimos doze meses (RNDBF)

Mensal

portal

29038

Endividamento das famílias com o Sistema Financeiro Nacional exceto crédito habitacional em relação à renda acumulada dos últimos 12 meses (RNDBF)

Mensal

portal

Agregados Monetários (8)

Code

Name

Periodicity

Name source

1788

BM - Base monetária restrita (saldo em final de período)

Mensal

portal

1833

Base Monetária Ampliada (saldo em final de período)

Mensal

portal

27788

Meios de pagamento - M1 (média dos dias úteis do mês) - Novo

Mensal

portal

27789

Meios de pagamento - Papel moeda em poder do público (saldo em final de período) - Novo

Mensal

portal

27790

Meios de pagamento - Depósitos à vista (saldo em final de período) - Novo

Mensal

portal

27791

Meios de pagamento - M1 (saldo em final de período) - Novo

Mensal

portal

27815

Meios de pagamento amplos - M4 (saldo em final de periodo) - Novo

Mensal

portal

7530

Comportamento monetário - Comportamento do público - C

Mensal

portal

Poupança (2)

Code

Name

Periodicity

Name source

25

Depósitos de poupança até 03.05.2012 - Rentabilidade no período

Diária

portal

195

Depósitos de poupança a partir de 04.05.2012 - Rentabilidade no período

Diária

portal

The full machine-readable catalog is served as the bcb://series/populares resource and by bcb_series_populares. Thousands of further series are reachable through bcb_buscar_serie, which also queries the BCB Open Data Portal index.

Finding Other Series

The SGS database contains over 18,000 time series. To find codes for other series:

  1. Visit the BCB SGS Portal

  2. Search for the desired series

  3. Note the series code

  4. Use that code with this server's tools

Ask in your words, not the BCB's

bcb_buscar_serie matches your words, all of them (AND), against the curated catalogue (135 series: name and category) and the dataset slugs of the BCB open-data portal (3,579 series identified by code). Accents were already ignored; the word was not. Measured over both layers on 2026-09-16, fixed since 1.12.0: the everyday word is expanded to the BCB's own, and the response says so in notasVocabulario; zero results come with a way out.

you ask

hits before (curated / portal)

the BCB writes

hits

déficit, superávit

0 / 0

resultado primário, resultado nominal

1 / 26, 0 / 22

calote

0 / 0

inadimplência

6 / 484

juros básicos

0 / 0

Selic

5 / 7

desemprego

0 / 0

desocupação

1 / 0

arrecadação, gasto

0 / 0

receita, despesa

2 / 8, 0 / 8

investimento estrangeiro

0 / 0

investimento direto

1 / 12

conta corrente

0 / 0

transações correntes

1 / 5

Only measured pairs enter the table (src/vocabulario.ts): the word you ask with absent from both layers, the BCB's word present. What the BCB does not publish under any of these names stays out and still returns zero — salário mínimo, ibovespa, bitcoin, meta de inflação — because an alias for a series that does not exist promises what the source does not have; and empréstimo is not mapped to crédito on purpose (the portal already answers it with 45 datasets; the mapping would drown them in 2,000). The same table feeds the Deep Research search index.

Technical Details

Robustness

  • Timeout: 30 seconds per request (prevents hanging)

  • Auto-retry: 3 attempts with exponential backoff (1s, 2s, 4s) for transient failures; client errors (4xx) are not retried, since they are deterministic

  • Error handling: Clear error messages

Working around the SGS limits

Measured against the live API, not inferred from documentation:

  • A date window over 10 years on a daily series is refused with HTTP 406, and so is an open window (no dataInicial, or no dates at all). The limit applies to the implicit window: with no dataFinal the API assumes today. Requests are sliced into windows of up to 3 years, fetched with bounded concurrency and merged in date order without duplicating the seams; the response reports it in chunking. The slice is 3 years rather than the allowed 10 because a 10-year daily window costs 10–20 s upstream and may be cut off around 30 s.

  • dados/ultimos/N is capped at 20 by the API, in every periodicity. Above 20, the server infers the series' periodicity and fetches by date window instead.

  • There is no per-series metadata endpoint (/metadados answers 404). Frequency is inferred from the spacing of the observations and flagged with periodicidadeInferida; unit of measure is not available from any source.

Derived values

Anything this server computes — variation, descriptive statistics, harmonised series — is marked derived: true and carries a note with the conventions used. Statistics come from @sbissoli/mcp-stats. A value published by the BCB is always returned verbatim; only computed values are rounded (to 4 decimals).

bcb_buscar_serie searches two layers: the curated catalog of 135 verified series (which ranks first, with the source of the name declared) and the index of the BCB Open Data Portal, with thousands of series identified by code. Terms are accent- and case-insensitive, and several terms are combined with AND:

  • "inflacao" → finds "Inflação"

  • "cambio" → finds "Câmbio"

  • "ipca servicos" → both terms must match

The portal index is served from a 24-hour cache, renewed by the first search after it expires (one request to the portal, only metadata — series codes and names, never observations). Every answer carries catalogo.cobertura: the index is not the whole SGS, so not finding a series here is not proof it does not exist.

Data source and licence

Data obtained from the Banco Central do Brasil (SGS / Olinda-Expectativas / PTAX), published under the Open Data Commons Open Database License (ODbL) v1.0 — https://opendatacommons.org/licenses/odbl/1-0/. Re-verified against the source on 2026-08-13: 4,259 of the portal's 4,260 datasets declare license_id: "odc-odbl". This is not CC0, CC BY, or public domain — ODbL carries attribution, share-alike (on derived databases) and anti-DRM clauses. Exchange-rate answers pass through the BCB's own liability disclaimer verbatim; cross-currency parities are not compiled by the BCB — they come from an information agency (Refinitiv) and are redistributed by the BCB, and the tools say so.

The server's own code is MIT; the data is not. See NOTICE.md. Privacy: no user data is logged, by either channel — see PRIVACY.md.

Provenance block

Every successful tool response carries a provenance block (portfolio contract v1.0) in two channels: structuredContent.provenance + attribution (visible to the model) and a _meta mirror under br.com.sidneybissoli.bcb/* (out of band, zero tokens). Each block names the source, the canonical URL that reproduces the query, the data vintage, the real upstream extraction instant, and the licence.

Three details that are easy to get wrong and are handled here:

  • retrieved_at is the real extraction instant, not "now". The portal index is served from a 24-hour cache, so a search answered from cache reports the instant the index was actually fetched — which can be a day old, and is the legally relevant date.

  • One block per provenance, never merged. bcb_buscar_serie separates the BCB portal index from the server's own curated catalogue; bcb_serie_metadados separates the live SGS reading from the catalogue; bcb_cambio_cotacao separates BCB-compiled dollar rates from agency-sourced cross-currency parities.

  • What each number is, and which version of it. An SGS observation is only {data, valor}: the date of a monthly, quarterly or annual series is the first day of the reference period, and some series arrive already accumulated (year-to-date GDP 4381/4386; 12-month IPCA 13522, GDP 4382, primary balance 5793), which only their name tells. The tool descriptions say so, and data_vintage is the span actually covered — including on the four tools that compute across several series. Every value is the version the SGS publishes at retrieved_at: the BCB revises series such as GDP and IBC-Br and the SGS keeps no as-first-published copy, so this server cannot return one.

Development

Surface fingerprint, checkable from the registry

Every release publishes, in its MCP Registry entry, the sha256 of the surface this version serves (initialize, tools, resources, prompts) and which methods answer without a credential. A surface change without a version bump fails the build; the fingerprint in the registry lets a client check the same thing on its own side. Canonical form and procedure: SPEC.md of @sbissoli/mcp-surface. To check it yourself (Node 18+, no dependencies):

curl -sO https://raw.githubusercontent.com/SidneyBissoli/mcp-br-commons/main/packages/mcp-surface/exemplos/verify.mjs
node verify.mjs io.github.SidneyBissoli/bcb-br-mcp

Requirements

  • Node.js >= 18.0.0

Setup

git clone https://github.com/SidneyBissoli/bcb-br-mcp.git
cd bcb-br-mcp
npm install

Build

npm run build

Local testing (stdio)

npm run dev

Local testing (HTTP worker)

npm run dev:worker

Or use the MCP Inspector:

npx @modelcontextprotocol/inspector npm run dev

BCB API

This server uses the Brazilian Central Bank's public API:

  • Base endpoint: https://api.bcb.gov.br/dados/serie/bcdata.sgs.{code}/dados

  • Format: JSON

  • Authentication: None (public API)

  • Documentation: BCB Open Data

Changelog

v1.4.1

  • bcb_focus_referencias: the parameter is now escopo, not horizonte, and the response array is escopos. The scopes are the five horizons of bcb_focus_expectativas plus selic — and selic is not a horizon: its axis is the Copom meeting. Each block names the tool that consumes it. The previous name implied selic was a queryable horizon of bcb_focus_expectativas, which it is not. Never published to npm under the old name.

v1.4.0

  • Three APIs under one contract, 8 tools → 13. Focus market-expectations survey (bcb_focus_expectativas, bcb_focus_selic, bcb_focus_referencias) and PTAX exchange rates (bcb_cambio_cotacao, bcb_cambio_moedas), consolidated by parameter rather than mirroring the source's ~18 OData resources.

  • Real search. bcb_buscar_serie now queries the Open Data Portal index (3,500+ series, 24-hour cache, metadata only) on top of the curated catalog, and states the index's coverage instead of claiming a series does not exist.

  • Every Focus and PTAX field name verified against the live API, including the Top 5 Selic resource, which publishes its fields in a different case from the other twelve.

  • ODbL obligations shipped with the exchange-rate tools: the BCB disclaimer is passed through verbatim, and non-USD parities are qualified as third-party (Refinitiv) data redistributed by the BCB.

v1.2.0

  • HTTP endpoint via Cloudflare Workers (https://bcb.sidneybissoli.workers.dev)

  • Published on Smithery.ai

  • Refactored: tool logic extracted to src/tools.ts (shared between stdio and HTTP)

v1.1.0

  • New tool bcb_variacao for percentage variation calculation

  • New tool bcb_comparar for comparing multiple series

  • 30-second timeout on requests

  • Auto-retry with exponential backoff (3 attempts)

  • Normalized search (accent-insensitive)

  • Additional statistics (max, min, average, range)

v1.0.0

  • Initial release

  • 6 basic tools

  • Catalog with 135 verified series

Contributing

Contributions are welcome! Please:

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/new-feature)

  3. Commit your changes (git commit -m 'Add new feature')

  4. Push to the branch (git push origin feature/new-feature)

  5. Open a Pull Request

License

Two licences, and they are not the same thing.

  • Code: MIT — see LICENSE.

  • Data: from the Banco Central do Brasil, under the Open Data Commons Open Database License (ODbL) v1.0 — https://opendatacommons.org/licenses/odbl/1-0/. Not CC0, not CC BY, not public domain: the ODbL requires attribution, has a share-alike clause on derived databases, and an anti-DRM clause.

Every successful response carries a provenance block with the source, the query URL, the data vintage, the real extraction instant and the licence. Exchange-rate answers pass the BCB disclaimer through verbatim, and non-USD parities are qualified as information-agency data (Refinitiv) redistributed by the BCB — not as data compiled by the Central Bank.

Details and obligations in NOTICE.md. Privacy: no user data is logged, by either channel — see PRIVACY.md.

Author

Sidney da Silva Pereira Bissoli

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, sem distinção de acento; a palavra de todo dia é traduzida para a do BCB (déficit→resultado primário, calote→inadimplência, desemprego→desocupação) e a resposta diz quando isso aconteceu (notasVocabulario).
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 (bloco de proveniência do portfólio; licenças nunca se fundem)
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
notasVocabularioNoQuando um termo foi ampliado para a palavra que o BCB usa (déficit→resultado primário), diz qual
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?

Although annotations already declare readOnly/openWorld/idempotent/non-destructive, the description goes well beyond them: 24h cache behaviour, one renewal request after expiry, no network on other searches, graceful degradation to the curated catalog when the portal is down, and the explicit coverage caveat that the index is not the whole SGS. This is exactly the kind of context structured fields cannot carry.

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?

Dense but well front-loaded (purpose first, then usage, returns, coverage, network), with clear labelled sections. Some redundancy in enumerating return fields and warnings/output that arguably duplicate the output schema, which keeps it from a 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 two-source search tool with an output schema present, the description covers purpose, alternatives, network/caching behaviour, failure degradation, and the critical coverage limitation that 'not found' does not prove non-existence. Nothing an agent needs to call 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 coverage is 100%, so baseline is 3; the description adds value by explaining cross-parameter behaviour (accents/case ignored, multi-term AND combination, everyday-word translation to BCB vocabulary) and the fonteNome semantics of curated names. It still overlaps with what the schema already says about 'termo', so it stops short of 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?

States a specific verb (Busca) + resource (séries do BCB) and describes the two-layer mechanism (curated local catalog vs. open-data index). It explicitly distinguishes itself from siblings bcb_series_populares and bcb_serie_valores, so an agent can route 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?

Has explicit 'Quando usar' (to discover a series code before fetching values) and 'Quando NÃO usar' clauses that name the two alternative tools and the conditions selecting them. 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_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 (bloco de proveniência do portfólio; 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.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations: it discloses the 7-day default window and why (to span weekends and holidays), that quotes only exist on business days with FX close, the Olinda OData source, the Refinitiv provenance of non-dollar parities, and that the BCB disclaimer is passed through verbatim. These are real behavioral traits an agent cannot infer from structured fields.

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 purpose, then when/when-not, then return shape and provenance caveats. It is long, and the inline SGS code list and full return-field enumeration verge on verbose, but each segment carries actionable 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?

With an output schema, 100% parameter coverage and rich annotations, the description only needs to add routing and caveats — which it does. Nothing needed 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.

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 rationale the schema lacks — the 7-day default window covers weekends/holidays, and the USD default — but does not add new syntax beyond what the schema already documents.

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 (consulta a cotação PTAX) with explicit scope (one day or a short interval) and default (USD). It names the sibling tools it is not, so an agent can separate it from bcb_serie_valores and bcb_cambio_moedas 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?

Explicit 'Quando usar' and 'Quando NÃO usar' clauses route the agent: short-window PTAX quotes here, long dollar history through bcb_serie_valores with named codes (1, 3698, 3697, 3695), and symbol discovery through bcb_cambio_moedas. The alternatives and the conditions selecting them are spelled out.

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: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
totalMoedasYes
urlConsultaYes
consultadoEmYes
qualificacaoParidadeNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the data source (PTAX / Olinda OData), that the BCB disclaimer is passed through verbatim, and the availability constraint that quotes only exist on business days with FX closing. It loses a point only because part of the text re-lists return fields already covered by the output schema.

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?

Well front-loaded with when-to-use guidance first, but the explicit return-field enumeration (termo, totalMoedas, moedas, disclaimer, qualificacaoParidade, urlConsulta, consultadoEm) duplicates the output schema and is wasted space. Otherwise tight and purposeful.

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 a single optional parameter, full schema coverage, an output schema, and rich annotations, the description covers everything an agent needs: purpose, routing, source, availability caveat, and disclaimer behavior. 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?

Schema coverage is 100% and the single parameter is fully documented in the schema. The description only restates that a term filter is accepted, adding no syntax or format detail beyond 'aceita um termo para filtrar'. 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?

States a specific verb and resource (lists currencies with BCB-published quotes) plus the fields returned, and explicitly names the sibling it is not (bcb_cambio_cotacao). An agent can distinguish it from every other cambio/serie tool without opening a 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?

Provides explicit 'Quando usar' (discover the correct symbol before calling bcb_cambio_cotacao) and 'Quando NÃO usar' (for quote values), naming the alternative directly. This is the strongest possible routing guidance.

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: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar
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.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/openWorld, and the description adds substantial context beyond them: no auth or rate limit, automatic retry (up to 3 attempts, exponential backoff), error isolation (bad series go to `erros` without failing the call), HTTP 404 meaning, and the 10-year daily-window slicing limit. This is rich operational disclosure.

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 purpose and method distinction, then organized into when-to-use / when-not-to-use and return-shape sections. It is dense and long, with some detail that overlaps the schema, but nearly every sentence adds usable selection or invocation 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?

For a 5-parameter tool with an output schema, the description covers return fields, error contracts (`isError`, `erros`, `aviso`), date/value formats, and edge cases like mixed frequencies and long daily ranges. An agent has everything needed to call it correctly and interpret results.

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 meaning beyond the schema by explaining how `frequencia` harmonizes series of different periodicities and why `agregacao` must be `acumulada` for series that are already percent variation. Most specifics, however, are already carried by the schema's own descriptions.

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 precise verb+resource (compare 2 to 5 time series over the same period, compute percent variation, rank them) and explains the two computation methods (`metodo` nível vs. acumulado encadeado). It explicitly distinguishes itself from siblings, naming bcb_variacao as the single-series alternative and framing the canonical use case ('qual índice de preço subiu mais em 2024').

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' (compare/correlate several indicators side by side) and 'Quando NÃO usar' (single series → use bcb_variacao), naming the alternative. It also gives condition-specific guidance for mixed periodicities and the `frequencia`/`agregacao` knobs that select the correct behavior.

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: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar
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 read-only/idempotent/non-destructive, and the description goes well beyond them: no auth or API key, no published rate limit (best-effort), automatic retry up to 3 times with exponential backoff, `isError: true` on persistent failure, HTTP 404 meaning, differing periodicities are REFUSED rather than warned, and uncomputable coefficients return `null` with `motivo` instead of 0. These are the failure-mode details an agent needs and none are in 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 deliberately structured with labeled sections ('Quando usar', 'Quando NÃO usar', 'Métodos', 'Base', 'Retorna', 'Comportamento') and front-loaded with the purpose and the `dataInicial`/`dataFinal` requirement. It loses a point for repeating the `metodo` and `base` semantics already documented in the input schema, which is duplicated text rather than new 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?

An output schema exists, yet the description still summarizes the return shape (`periodo`, `pares` with `coeficiente` between -1 and 1, `n`, `descartados`, `interpretacao`, `erros`). Combined with the refusal semantics, the null-vs-zero rule, the causal caveat and the transport details, 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.

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 beyond the schema by stating that `frequencia` harmonizes all series onto one grid before correlating and that mixed periodicities are refused outright. However, the `base` and `metodo` explanations are near-verbatim restatements of the schema descriptions, so part of this text earns no extra credit.

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 precise verb and resource ('Calcula a correlação estatística entre 2 a 5 séries temporais do BCB no MESMO período'), including the pairwise scope and the 2-5 cardinality bound. It explicitly names what it is not ('para comparar a variação de cada série lado a lado use bcb_comparar; para uma série só use bcb_variacao'), so an agent can separate it from siblings 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?

Has explicit 'Quando usar' with concrete examples (dólar e Selic, IPCA e IGP-M) and explicit 'Quando NÃO usar' routing to the two correct alternatives by name. It further gives conditional selection guidance between parameter values (prefer `variacao` when series have trend; use `frequencia` when periodicities differ), which is unusually actionable.

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: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar
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.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Far exceeds what the annotations convey: index reconstruction from monthly variations, a quantified accuracy bound (max 0.0052pp), null handling for out-of-coverage periods, no-auth/best-effort access, automatic retries with exponential backoff, and HTTP 404 semantics. These are exactly the operational traits an agent cannot get from readOnlyHint/idempotentHint.

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 purpose, then usage, then reference details; every clause is substantive rather than padding. It is nonetheless dense and long, with the reconstruction/retry details bordering on verbose for a description field.

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?

An output schema exists so return values need not be explained, yet the description still maps the key fields briefly. Combined with the behavioral, usage, and parameter context, an agent has everything needed to select and call the 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?

Schema coverage is 100%, so baseline is 3, but the description reinforces parameter meaning contextually — restating index options, formalizing mesBase as 'em reais de hoje' when omitted, and framing agregacao as compounding for already-percentage series. It adds interpretive gloss beyond the raw enum values, though much overlaps the schema text.

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+resource ('Converte uma série NOMINAL do BCB em valores REAIS') and immediately distinguishes itself from siblings by naming the alternative ('para a série nominal crua use bcb_serie_valores'). The concrete before/after example ('subiu 46%' vs 'subiu 5% em poder de compra') makes the operation unmistakable.

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' and 'Quando NÃO usar' clauses with the precise exclusion condition (series that are already percentages/indices/rates). It also routes to the correct sibling for the nominal case, leaving nothing to inference.

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: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar
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?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), and the description goes well beyond them: it explains the vintage nature of Focus (coletadoEm vs referencia), that counting is done client-side because the source ignores $count, that filtering is mandatory because an unfiltered query never completes at origin, the 30-day default window, and that institution-level microdata is deliberately not exposed. This is rich operational context an agent cannot get from 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?

Well front-loaded with the purpose first, then usage routing, then contract rules, then a return-shape recap. It is long and somewhat repetitive — the return field list duplicates the output schema, and the referencia/suavizada rules appear both in the narrative and the schema — but every block is labeled and skimmable.

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 an 8-parameter, enum-bearing tool with an output schema present, the description covers purpose, routing, inter-parameter constraints, defaults, source limitations, and error-prevention guidance. Nothing an agent needs in order to call it correctly is missing; the only excess is the redundant return-field enumeration.

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 cross-parameter contract rules (referencia mandatory in calendar horizons and rejected in rolling ones, suavizada valid only in rolling horizons, top5 available across all five). These constraints largely restate what the individual schema descriptions already say, so the incremental value is real but partly duplicative.

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 ('Consulta as expectativas de mercado do boletim Focus para UM indicador') and enumerates the five supported horizons, so the scope is unambiguous. It also explicitly distinguishes itself from siblings: bcb_focus_selic for Copom Selic expectations and bcb_serie_valores for realized 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?

Contains explicit 'Quando usar' and 'Quando NÃO usar' sections that name the concrete alternatives and the conditions that select them. It additionally prescribes a prerequisite workflow ('chame bcb_focus_referencias primeiro') and warns about the most common failure mode of empty responses.

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: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar
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 declare readOnly/idempotent/openWorld and non-destructive, and the description goes well beyond them: partial-failure behavior ('os demais voltam mesmo assim, com falhas preenchido'), client-side counting because the source ignores $count, mandatory filter, vintage/coleta semantics, and that per-institution microdata is deliberately not exposed.

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-loads verb and purpose cleanly and every clause carries substantive behavioral or routing content. It is dense and fairly long, and the return-field recap partially duplicates the output schema, but little is pure 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 zero-required-param discovery tool the description covers triggers, alternatives, scope semantics, partial-failure handling, and data-source constraints; an output schema exists, so return values are already covered. An agent has everything needed to call it 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?

Schema coverage is 100% so the baseline is 3, and the description adds real meaning on top: it clarifies that 'selic' is not a horizon but Copom meeting dates consumed by bcb_focus_selic, and that omitting escopo queries all six while supplying it narrows to one. That is more than the enum restates, though not exhaustive per-scope detail.

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 ('Lista') plus resource ('os indicadores e as referências que o Focus efetivamente publica') and scoping dimension ('POR ESCOPO'). It explicitly routes the agent to the consuming siblings bcb_focus_expectativas and bcb_focus_selic, so it is unmistakable against them.

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?

Gives 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'), plus the diagnostic rationale that empty results usually mean the indicator does not exist in that scope. No inference required.

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: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
urlConsultaYes
consultadoEmYes
expectativasYes
observacaoEixoNo
totalRegistrosYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description adds substantial non-annotation behavior: the vintage structure (coletadoEm vs. referencia allowing the same target to appear across many collections), that counting is done server-side because the source ignores $count, that a filter is mandatory because unfiltered queries do not complete at origin, and that institutional microdata is deliberately withheld for confidentiality. These are operational constraints an agent cannot infer from structured fields.

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 content is front-loaded and every sentence carries real information (usage, exclusions, semantics, caveats), so it earns its length. It is nonetheless a single dense paragraph, and the 'Retorna: ...' enumeration duplicates the existing output schema, which is minor redundancy.

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?

For a 5-parameter read tool with annotations and an output schema, the description covers selection, semantics, default window and data-vintage caveats comprehensively. Its only slight overreach is restating return fields that the output schema already defines, but nothing an agent needs to call it correctly is absent.

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 baseline is 3, but the description adds conceptual meaning beyond it: the Copom-meeting format for the referencia axis (R1/2026 = 1ª reunião de 2026) and the 30-day default collection window when no dates are supplied. These clarify parameter intent rather than merely restating the schema.

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 (consulta), resource (expectativas de mercado do Focus para a taxa Selic) and scope (organizadas pela reunião do Copom, formato R1/2026). It explicitly separates itself from bcb_focus_expectativas by the temporal axis (reunião vs. calendário), so an agent can distinguish it from siblings without opening a 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?

Contains explicit 'Quando usar' (expectativa para a próxima reunião / trajetória de juros) and 'Quando NÃO usar' with named alternatives and even series codes (bcb_focus_expectativas para horizonte anual; bcb_serie_valores códigos 432, 1178, 4390 para a Selic realizada). The selection condition between the two Focus tools is stated outright.

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: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar
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.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly/idempotent/openWorld), and the description adds substantial context beyond them: no auth or API key, best-effort/no published rate limit, automatic retry up to 3 times with exponential backoff, isError:true with Portuguese messages, HTTP 404 meaning, and per-indicator fault isolation. This is rich operational disclosure.

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 purpose and organized into clear sections (Quando usar, Quando NÃO usar, Retorna, Comportamento). It is on the long side, and the 'Retorna' block partially restates what the output schema already provides, but nearly every sentence adds operative value.

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 no-param, read-only shortcut with an output schema, the description covers selection criteria, error handling, retry behavior, auth, and result shape, leaving nothing an agent needs to invoke it 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?

Zero parameters, so the schema already carries nothing to document. The description explicitly confirms 'Não recebe parâmetros', which removes any ambiguity about whether a period or code can be supplied.

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 (returns the most recent value of the main Brazilian economic indicators) and enumerates exactly which series (Selic/Copom, IPCA monthly, IPCA 12m, dollar, IBC-Br). An agent can distinguish it from the generic series siblings without opening a 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?

Explicitly provides 'Quando usar' (quick economic panorama) and 'Quando NÃO usar' (any other series, historical data, or period selection), naming the alternatives bcb_serie_ultimos and bcb_serie_valores. This is the model when/when-not/alternative 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 (bloco de proveniência do portfólio; 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.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent/openWorld annotations, it discloses no auth or API key needed, no published rate limit (best-effort), automatic retry up to 3 attempts with exponential backoff, isError:true with a Portuguese message on persistent failure, HTTP 404 semantics, and that the SGS API publishes no metadata endpoint so no unit of measure is available. It also explains data provenance (curated 135-series catalog) and flags inferred periodicity via `periodicidadeInferida` — behavior an agent cannot infer from structured fields.

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 purpose, then cleanly segmented into Quando usar / Quando NÃO usar / Retorna / Limite da fonte / Comportamento. It is long and a few statements (e.g. restating the JSON return shape) duplicate the output schema, but almost every sentence carries actionable 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 an output schema exists, the description still usefully previews the returned fields and formats (dd/MM/yyyy dates, decimal values) and covers failure, retry, provenance, and source limitations. 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (codigo) with 100% schema description coverage, so the schema already documents it. The description adds surrounding context about series codes and source limitations but no syntax or format detail for the parameter itself; baseline 3 applies when the schema does the heavy lifting.

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 a descrição de UMA série do BCB') and immediately delimits scope with 'sem trazer a série histórica', enumerating the returned metadata fields. An agent can distinguish this from bcb_serie_valores and bcb_serie_ultimos 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?

Explicit 'Quando usar' (confirm what a series represents and its publication frequency before querying data) and 'Quando NÃO usar' clauses that name the two exact alternative tools for values. Both the positive and negative routing conditions are spelled out.

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: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
totalSeriesYesQuantidade total de séries retornadas

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe read-only, idempotent, closed-world operation, and the description corroborates rather than contradicts them ('Catálogo local: não faz chamada de rede'). It goes well beyond the annotations by explaining provenance of fonteNome ('portal' vs 'medido'), that 82 series carry a verified 'unidade', and what was actually verified for the rest.

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 verb/resource, then organized under clear labels (Quando usar, Quando NÃO usar, Retorna, Procedência). Every section is useful, though the procedência paragraph is granular and slightly long for a one-parameter listing tool.

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?

Complete for a filtered catalog tool: it covers scope, the filter's effect on output shape, local/no-network behavior, and provenance caveats. Since an output schema exists, the description need not carry the full return contract, yet it still summarizes it usefully.

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 baseline is 3, but the description adds meaning beyond the schema by tying the filter to the return shape ('objeto agrupado por categoria quando sem filtro, ou array plano quando filtrado'). It does not however document the accepted filter values beyond restating the category names already in the schema.

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 ('Lista o catálogo interno curado de 135 séries econômicas do BCB com seus códigos'), including size, grouping, and the accepted filter. It explicitly distinguishes itself from the sibling bcb_buscar_serie and from bcb_focus_expectativas, so an agent can pick it without opening any other 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?

Gives explicit 'Quando usar' (navigate/discover series by theme) and 'Quando NÃO usar' (keyword search → bcb_buscar_serie; no value lookup; Focus expectations → bcb_focus_expectativas). The routing conditions are stated, not inferred.

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. O que cada número é: data é a data de referência na convenção do SGS — em série mensal, trimestral ou anual, o PRIMEIRO dia do período (01/03/2026 = março de 2026). Algumas séries já chegam ACUMULADAS da origem e só o nome diz isso: acumulado no ano (PIB 4381, 4386) e acumulado em 12 meses (13522, 4382, 5793) — o valor numa data é o acumulado até aquele período, então não some esses valores nem subtraia um do outro; para o valor de um mês, use a série mensal. Revisões: o valor é o que o SGS publica no instante da extração (retrieved_at na proveniência). O BCB revisa séries como PIB, IBC-Br, balanço de pagamentos e crédito, e o SGS não guarda a versão originalmente divulgada — um ponto passado pode mudar entre duas consultas, e este servidor não tem como devolver o número da primeira divulgação. 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: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)
totalRegistrosYesQuantidade de observações retornadas

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already covering read-only, idempotent, and non-destructive status, the description goes well beyond them: no authentication required, best-effort rate limits, automatic retries with exponential backoff, HTTP 404 meaning, revision behavior, and a workaround for the native N>20 endpoint limit. It also flags accumulated series that should not be summed, which is critical for correct interpretation.

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 front-loaded: purpose, usage, return shape, then caveats. Some material duplicates the schema (quantidade limits) and output schema (return fields), keeping it from a perfect 5, but most sentences carry important financial-data semantics.

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 complex time-series tool with revisions, accumulated series, date conventions, and endpoint limits, the description covers all critical operational and interpretive details. With an output schema present, it also appropriately clarifies the response envelope and date format.

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% and both parameters are fully described in the schema, including the N>20 workaround. The description largely repeats this information (range 1–1000, default 10) without adding new input-parameter meaning, so the schema baseline 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?

States a specific verb and resource: obtains the last N observations of one BCB time series, most recent first. It explicitly distinguishes itself from the sibling bcb_serie_valores by scope, so an agent can pick correctly 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?

Provides explicit 'Quando usar' and 'Quando NÃO usar' sections, names the exact alternative (bcb_serie_valores) for date ranges or full history, and gives a concrete example (últimos 12 meses do IPCA). Routing is fully specified.

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. O que cada número é: data é a data de referência na convenção do SGS — em série mensal, trimestral ou anual, o PRIMEIRO dia do período (01/03/2026 = março de 2026). Algumas séries já chegam ACUMULADAS da origem e só o nome diz isso: acumulado no ano (PIB 4381, 4386) e acumulado em 12 meses (13522, 4382, 5793) — o valor numa data é o acumulado até aquele período, então não some esses valores nem subtraia um do outro; para o valor de um mês, use a série mensal. Revisões: o valor é o que o SGS publica no instante da extração (retrieved_at na proveniência). O BCB revisa séries como PIB, IBC-Br, balanço de pagamentos e crédito, e o SGS não guarda a versão originalmente divulgada — um ponto passado pode mudar entre duas consultas, e este servidor não tem como devolver o número da primeira divulgação. 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: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar
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.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, idempotent, openWorld, non-destructive), the description discloses operational behavior: no authentication or documented rate limit, automatic retries up to three attempts with exponential backoff, HTTP 406/404 handling, chunking of daily series beyond 10 years, harmonization behavior, and revision caveats for PIB/IBC-Br and similar series.

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 purpose, usage, and exclusions, and uses clear sections for return shape, period limits, harmonization, data conventions, revisions, and API behavior. It is information-dense, but the length and repetition of details already present in the schema and output schema keep it from being maximally concise.

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's complexity and the rich output schema, the description is exceptionally complete: it explains return structure, error behavior, date conventions, accumulated series caveats, revision caveats, chunking, and harmonization. An agent has all the context needed to call and interpret this tool correctly.

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%, and the schema already documents codigo, dataInicial, dataFinal, frequencia, and agregacao in detail. The description reinforces enum usage but adds little parameter-specific syntax or format information beyond what the schema already provides, so the baseline of 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 first sentence states a specific verb and resource: querying the historical values of ONE BCB time series by SGS code, optionally bounded by dates. It explicitly names the sibling tools it is not for (bcb_serie_ultimos, bcb_variacao, bcb_comparar), so an agent can disambiguate without opening another 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 gives explicit 'Quando usar' and 'Quando NÃO usar' sections, routing the agent to alternatives for recent points, percentage variation, series comparison, and code discovery. The conditions for selecting each alternative are clear.

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: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar
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.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare the safe-read profile, and the description adds substantial context beyond them: automatic chunking above 10 years (406 limit), periodos above 20 handled via date windows, refusal of moving-accumulated series (13522), no auth/rate limit, and automatic retry with exponential backoff. Error semantics (HTTP 404 meaning) are also disclosed.

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?

Despite its length, the core purpose is front-loaded and each sentence carries behavior an agent needs (chunking, precedence, retry). There is mild redundancy in re-describing the return format that the outputSchema already covers, but the density justifies the size.

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 an output schema, complex dual computation logic, and edge cases (series refusal, chunking, timeouts), the description is complete: it explains which series receive which calculation, how the period is chosen, and how failures surface. Nothing needed to call 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 coverage is 100%, so the baseline is 3, but the description adds real meaning: periodos takes precedence and ignores the dates, and above 20 the server switches to a date window. It also notes the dd/MM/yyyy and numeric formatting of results, which the schema does not cover per-parameter.

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+resource (calculate the percentage variation of ONE series plus descriptive statistics) and clarifies the two computational regimes (level series vs. already-per-period series). It explicitly names the sibling alternatives (bcb_comparar, bcb_serie_valores) so the agent can distinguish it without opening a 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?

Has an explicit 'Quando usar' and 'Quando NÃO usar' section that routes to bcb_comparar for multiple-series comparison and bcb_serie_valores for raw values. It also states a prerequisite (at least 2 observations) and gives concrete use-case examples ('quanto o IPCA acumulou em 2024').

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 (bloco de proveniência do portfólio; licenças nunca se fundem)
attributionYesURLs canônicas das fontes desta resposta (lista de atribuição)

TDQS

A4.6/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, so the safety profile is covered. The description adds real value beyond them: a live GET against the public source when the document is needed, and explicit error behavior for unknown ids. It stops short of describing the network failure/pagination surface, so not a 5.

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 return shape and canonical-url guidance, then contracts, then behavior. It is somewhat dense with parentheticals and mixes languages, but each sentence carries a distinct fact rather than padding.

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?

With an output schema present, the description need not explain return values, yet it still names the return shape, the citation url, the companion contract, id validity, error behavior, and sibling routing. Nothing needed to call 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 coverage is 100%, so the id parameter is already documented, giving a baseline of 3. The description adds provenance semantics beyond the schema: only ids from `search` are valid and an unknown id returns an error, which constrains how the value may be sourced.

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+resource (returns the full document for an id from `search`) and immediately names the sibling it is not, explicitly saying the bcb_* tools remain the tools for data queries. An agent can distinguish it from the fifteen bcb_* siblings 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?

Gives explicit when-to-use and when-not: valid only for ids returned by `search`, unknown ids error out, and data queries should go to bcb_* instead. The routing rule and the alternative tool are both named.

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.

  1. 17 tool updatesv1.18.1
    • Changedbcb_buscar_serie8 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Um bloco por procedência que contribuiu com esta resposta (contrato v1.1; licenças nunca se fundem)"New value: +"Um bloco por procedência que contribuiu com esta resposta (bloco de proveniência do portfólio; licenças nunca se fundem)"
      • changedOutput schema / properties / provenance / items / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar"
      • addedOutput schema / properties / provenance / items / properties / derivation_note
        Added value: +{
        +  "description": "O que o servidor calculou; presente junto com derived",
        +  "type": "string"
        +}
      • addedOutput schema / properties / provenance / items / properties / derived
        Added value: +{
        +  "description": "Presente (true) só quando o servidor calculou o valor em vez de repassá-lo como veio da fonte",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / provenance / items / properties / field_sources
        Added value: +{
        +  "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance / items / properties / notices
        Added value: +{
        +  "description": "Avisos que a fonte publica junto com o dado (quebra de série, unidade, frescor), verbatim. Ausente quando não há aviso",
        +  "items": {
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedOutput schema / properties / provenance / items / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante. Quando a resposta junta partes extraídas em momentos distintos, é o MAIS ANTIGO deles (field_sources diz cada um)"
      • addedOutput schema / properties / provenance / items / properties / revision
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Se o dado ainda pode mudar na fonte",
        +  "properties": {
        +    "note": {
        +      "description": "O específico da fonte: o que revisa, quando, por quê",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte",
        +      "enum": [
        +        "current",
        +        "provisional",
        +        "final"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "note"
        +  ],
        +  "type": "object"
        +}
    • Changedbcb_cambio_cotacao8 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Um bloco por procedência que contribuiu com esta resposta (contrato v1.1; licenças nunca se fundem)"New value: +"Um bloco por procedência que contribuiu com esta resposta (bloco de proveniência do portfólio; licenças nunca se fundem)"
      • changedOutput schema / properties / provenance / items / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar"
      • addedOutput schema / properties / provenance / items / properties / derivation_note
        Added value: +{
        +  "description": "O que o servidor calculou; presente junto com derived",
        +  "type": "string"
        +}
      • addedOutput schema / properties / provenance / items / properties / derived
        Added value: +{
        +  "description": "Presente (true) só quando o servidor calculou o valor em vez de repassá-lo como veio da fonte",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / provenance / items / properties / field_sources
        Added value: +{
        +  "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance / items / properties / notices
        Added value: +{
        +  "description": "Avisos que a fonte publica junto com o dado (quebra de série, unidade, frescor), verbatim. Ausente quando não há aviso",
        +  "items": {
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedOutput schema / properties / provenance / items / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante. Quando a resposta junta partes extraídas em momentos distintos, é o MAIS ANTIGO deles (field_sources diz cada um)"
      • addedOutput schema / properties / provenance / items / properties / revision
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Se o dado ainda pode mudar na fonte",
        +  "properties": {
        +    "note": {
        +      "description": "O específico da fonte: o que revisa, quando, por quê",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte",
        +      "enum": [
        +        "current",
        +        "provisional",
        +        "final"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "note"
        +  ],
        +  "type": "object"
        +}
    • Changedbcb_cambio_moedas7 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar"
      • addedOutput schema / properties / provenance / properties / derivation_note
        Added value: +{
        +  "description": "O que o servidor calculou; presente junto com derived",
        +  "type": "string"
        +}
      • addedOutput schema / properties / provenance / properties / derived
        Added value: +{
        +  "description": "Presente (true) só quando o servidor calculou o valor em vez de repassá-lo como veio da fonte",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance / properties / notices
        Added value: +{
        +  "description": "Avisos que a fonte publica junto com o dado (quebra de série, unidade, frescor), verbatim. Ausente quando não há aviso",
        +  "items": {
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante. Quando a resposta junta partes extraídas em momentos distintos, é o MAIS ANTIGO deles (field_sources diz cada um)"
      • addedOutput schema / properties / provenance / properties / revision
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Se o dado ainda pode mudar na fonte",
        +  "properties": {
        +    "note": {
        +      "description": "O específico da fonte: o que revisa, quando, por quê",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte",
        +      "enum": [
        +        "current",
        +        "provisional",
        +        "final"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "note"
        +  ],
        +  "type": "object"
        +}
    • Changedbcb_comparar7 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar"
      • addedOutput schema / properties / provenance / properties / derivation_note
        Added value: +{
        +  "description": "O que o servidor calculou; presente junto com derived",
        +  "type": "string"
        +}
      • addedOutput schema / properties / provenance / properties / derived
        Added value: +{
        +  "description": "Presente (true) só quando o servidor calculou o valor em vez de repassá-lo como veio da fonte",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance / properties / notices
        Added value: +{
        +  "description": "Avisos que a fonte publica junto com o dado (quebra de série, unidade, frescor), verbatim. Ausente quando não há aviso",
        +  "items": {
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante. Quando a resposta junta partes extraídas em momentos distintos, é o MAIS ANTIGO deles (field_sources diz cada um)"
      • addedOutput schema / properties / provenance / properties / revision
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Se o dado ainda pode mudar na fonte",
        +  "properties": {
        +    "note": {
        +      "description": "O específico da fonte: o que revisa, quando, por quê",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte",
        +      "enum": [
        +        "current",
        +        "provisional",
        +        "final"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "note"
        +  ],
        +  "type": "object"
        +}
    • Changedbcb_correlacao8 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar"
      • addedOutput schema / properties / provenance / properties / derivation_note
        Added value: +{
        +  "description": "O que o servidor calculou; presente junto com derived",
        +  "type": "string"
        +}
      • addedOutput schema / properties / provenance / properties / derived
        Added value: +{
        +  "description": "Presente (true) só quando o servidor calculou o valor em vez de repassá-lo como veio da fonte",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance / properties / notices
        Added value: +{
        +  "description": "Avisos que a fonte publica junto com o dado (quebra de série, unidade, frescor), verbatim. Ausente quando não há aviso",
        +  "items": {
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante. Quando a resposta junta partes extraídas em momentos distintos, é o MAIS ANTIGO deles (field_sources diz cada um)"
      • addedOutput schema / properties / provenance / properties / revision
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Se o dado ainda pode mudar na fonte",
        +  "properties": {
        +    "note": {
        +      "description": "O específico da fonte: o que revisa, quando, por quê",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte",
        +      "enum": [
        +        "current",
        +        "provisional",
        +        "final"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "note"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / series / items / properties / natureza
        Added value: +{
        +  "description": "O que o valor da série é em cada data: 'nivel' (o valor da grandeza no período — saldo, fluxo, preço, taxa vigente, razão ou índice), 'variacao_no_periodo' (a variação ou rendimento do próprio período, como o IPCA mensal), 'acumulado_no_ano' ou 'acumulado_12_meses' (o acumulado até aquela data: não some nem subtraia esses valores). null = tipo não identificado: a série está fora do catálogo curado ou o catálogo não diz o que ela mede.",
        +  "enum": [
        +    "nivel",
        +    "variacao_no_periodo",
        +    "acumulado_no_ano",
        +    "acumulado_12_meses",
        +    null
        +  ],
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedbcb_deflacionar8 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar"
      • addedOutput schema / properties / provenance / properties / derivation_note
        Added value: +{
        +  "description": "O que o servidor calculou; presente junto com derived",
        +  "type": "string"
        +}
      • addedOutput schema / properties / provenance / properties / derived
        Added value: +{
        +  "description": "Presente (true) só quando o servidor calculou o valor em vez de repassá-lo como veio da fonte",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance / properties / notices
        Added value: +{
        +  "description": "Avisos que a fonte publica junto com o dado (quebra de série, unidade, frescor), verbatim. Ausente quando não há aviso",
        +  "items": {
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante. Quando a resposta junta partes extraídas em momentos distintos, é o MAIS ANTIGO deles (field_sources diz cada um)"
      • addedOutput schema / properties / provenance / properties / revision
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Se o dado ainda pode mudar na fonte",
        +  "properties": {
        +    "note": {
        +      "description": "O específico da fonte: o que revisa, quando, por quê",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte",
        +      "enum": [
        +        "current",
        +        "provisional",
        +        "final"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "note"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / serie / properties / natureza
        Added value: +{
        +  "description": "O que o valor da série é em cada data: 'nivel' (o valor da grandeza no período — saldo, fluxo, preço, taxa vigente, razão ou índice), 'variacao_no_periodo' (a variação ou rendimento do próprio período, como o IPCA mensal), 'acumulado_no_ano' ou 'acumulado_12_meses' (o acumulado até aquela data: não some nem subtraia esses valores). null = tipo não identificado: a série está fora do catálogo curado ou o catálogo não diz o que ela mede.",
        +  "enum": [
        +    "nivel",
        +    "variacao_no_periodo",
        +    "acumulado_no_ano",
        +    "acumulado_12_meses",
        +    null
        +  ],
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedbcb_focus_expectativas7 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar"
      • addedOutput schema / properties / provenance / properties / derivation_note
        Added value: +{
        +  "description": "O que o servidor calculou; presente junto com derived",
        +  "type": "string"
        +}
      • addedOutput schema / properties / provenance / properties / derived
        Added value: +{
        +  "description": "Presente (true) só quando o servidor calculou o valor em vez de repassá-lo como veio da fonte",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance / properties / notices
        Added value: +{
        +  "description": "Avisos que a fonte publica junto com o dado (quebra de série, unidade, frescor), verbatim. Ausente quando não há aviso",
        +  "items": {
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante. Quando a resposta junta partes extraídas em momentos distintos, é o MAIS ANTIGO deles (field_sources diz cada um)"
      • addedOutput schema / properties / provenance / properties / revision
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Se o dado ainda pode mudar na fonte",
        +  "properties": {
        +    "note": {
        +      "description": "O específico da fonte: o que revisa, quando, por quê",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte",
        +      "enum": [
        +        "current",
        +        "provisional",
        +        "final"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "note"
        +  ],
        +  "type": "object"
        +}
    • Changedbcb_focus_referencias7 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar"
      • addedOutput schema / properties / provenance / properties / derivation_note
        Added value: +{
        +  "description": "O que o servidor calculou; presente junto com derived",
        +  "type": "string"
        +}
      • addedOutput schema / properties / provenance / properties / derived
        Added value: +{
        +  "description": "Presente (true) só quando o servidor calculou o valor em vez de repassá-lo como veio da fonte",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance / properties / notices
        Added value: +{
        +  "description": "Avisos que a fonte publica junto com o dado (quebra de série, unidade, frescor), verbatim. Ausente quando não há aviso",
        +  "items": {
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante. Quando a resposta junta partes extraídas em momentos distintos, é o MAIS ANTIGO deles (field_sources diz cada um)"
      • addedOutput schema / properties / provenance / properties / revision
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Se o dado ainda pode mudar na fonte",
        +  "properties": {
        +    "note": {
        +      "description": "O específico da fonte: o que revisa, quando, por quê",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte",
        +      "enum": [
        +        "current",
        +        "provisional",
        +        "final"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "note"
        +  ],
        +  "type": "object"
        +}
    • Changedbcb_focus_selic7 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar"
      • addedOutput schema / properties / provenance / properties / derivation_note
        Added value: +{
        +  "description": "O que o servidor calculou; presente junto com derived",
        +  "type": "string"
        +}
      • addedOutput schema / properties / provenance / properties / derived
        Added value: +{
        +  "description": "Presente (true) só quando o servidor calculou o valor em vez de repassá-lo como veio da fonte",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance / properties / notices
        Added value: +{
        +  "description": "Avisos que a fonte publica junto com o dado (quebra de série, unidade, frescor), verbatim. Ausente quando não há aviso",
        +  "items": {
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante. Quando a resposta junta partes extraídas em momentos distintos, é o MAIS ANTIGO deles (field_sources diz cada um)"
      • addedOutput schema / properties / provenance / properties / revision
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Se o dado ainda pode mudar na fonte",
        +  "properties": {
        +    "note": {
        +      "description": "O específico da fonte: o que revisa, quando, por quê",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte",
        +      "enum": [
        +        "current",
        +        "provisional",
        +        "final"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "note"
        +  ],
        +  "type": "object"
        +}
    • Changedbcb_indicadores_atuais7 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar"
      • addedOutput schema / properties / provenance / properties / derivation_note
        Added value: +{
        +  "description": "O que o servidor calculou; presente junto com derived",
        +  "type": "string"
        +}
      • addedOutput schema / properties / provenance / properties / derived
        Added value: +{
        +  "description": "Presente (true) só quando o servidor calculou o valor em vez de repassá-lo como veio da fonte",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance / properties / notices
        Added value: +{
        +  "description": "Avisos que a fonte publica junto com o dado (quebra de série, unidade, frescor), verbatim. Ausente quando não há aviso",
        +  "items": {
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante. Quando a resposta junta partes extraídas em momentos distintos, é o MAIS ANTIGO deles (field_sources diz cada um)"
      • addedOutput schema / properties / provenance / properties / revision
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Se o dado ainda pode mudar na fonte",
        +  "properties": {
        +    "note": {
        +      "description": "O específico da fonte: o que revisa, quando, por quê",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte",
        +      "enum": [
        +        "current",
        +        "provisional",
        +        "final"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "note"
        +  ],
        +  "type": "object"
        +}
    • Changedbcb_serie_metadados9 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Um bloco por procedência que contribuiu com esta resposta (contrato v1.1; licenças nunca se fundem)"New value: +"Um bloco por procedência que contribuiu com esta resposta (bloco de proveniência do portfólio; licenças nunca se fundem)"
      • changedOutput schema / properties / provenance / items / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar"
      • addedOutput schema / properties / provenance / items / properties / derivation_note
        Added value: +{
        +  "description": "O que o servidor calculou; presente junto com derived",
        +  "type": "string"
        +}
      • addedOutput schema / properties / provenance / items / properties / derived
        Added value: +{
        +  "description": "Presente (true) só quando o servidor calculou o valor em vez de repassá-lo como veio da fonte",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / provenance / items / properties / field_sources
        Added value: +{
        +  "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance / items / properties / notices
        Added value: +{
        +  "description": "Avisos que a fonte publica junto com o dado (quebra de série, unidade, frescor), verbatim. Ausente quando não há aviso",
        +  "items": {
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedOutput schema / properties / provenance / items / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante. Quando a resposta junta partes extraídas em momentos distintos, é o MAIS ANTIGO deles (field_sources diz cada um)"
      • addedOutput schema / properties / provenance / items / properties / revision
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Se o dado ainda pode mudar na fonte",
        +  "properties": {
        +    "note": {
        +      "description": "O específico da fonte: o que revisa, quando, por quê",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte",
        +      "enum": [
        +        "current",
        +        "provisional",
        +        "final"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "note"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / ultimoValor / properties / data / description
        Previous value: -"Data da observação (dd/MM/yyyy)"New value: +"Data de referência da observação (dd/MM/yyyy), na convenção do SGS: em série mensal, trimestral ou anual é o PRIMEIRO dia do período (01/03/2026 = março de 2026); em série diária, o próprio dia"
    • Changedbcb_serie_ultimos9 fields changed
      • changedOutput schema / properties / dados / items / properties / data / description
        Previous value: -"Data da observação (dd/MM/yyyy)"New value: +"Data de referência da observação (dd/MM/yyyy), na convenção do SGS: em série mensal, trimestral ou anual é o PRIMEIRO dia do período (01/03/2026 = março de 2026); em série diária, o próprio dia"
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar"
      • addedOutput schema / properties / provenance / properties / derivation_note
        Added value: +{
        +  "description": "O que o servidor calculou; presente junto com derived",
        +  "type": "string"
        +}
      • addedOutput schema / properties / provenance / properties / derived
        Added value: +{
        +  "description": "Presente (true) só quando o servidor calculou o valor em vez de repassá-lo como veio da fonte",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance / properties / notices
        Added value: +{
        +  "description": "Avisos que a fonte publica junto com o dado (quebra de série, unidade, frescor), verbatim. Ausente quando não há aviso",
        +  "items": {
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante. Quando a resposta junta partes extraídas em momentos distintos, é o MAIS ANTIGO deles (field_sources diz cada um)"
      • addedOutput schema / properties / provenance / properties / revision
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Se o dado ainda pode mudar na fonte",
        +  "properties": {
        +    "note": {
        +      "description": "O específico da fonte: o que revisa, quando, por quê",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte",
        +      "enum": [
        +        "current",
        +        "provisional",
        +        "final"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "note"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / serie / properties / natureza
        Added value: +{
        +  "description": "O que o valor da série é em cada data: 'nivel' (o valor da grandeza no período — saldo, fluxo, preço, taxa vigente, razão ou índice), 'variacao_no_periodo' (a variação ou rendimento do próprio período, como o IPCA mensal), 'acumulado_no_ano' ou 'acumulado_12_meses' (o acumulado até aquela data: não some nem subtraia esses valores). null = tipo não identificado: a série está fora do catálogo curado ou o catálogo não diz o que ela mede.",
        +  "enum": [
        +    "nivel",
        +    "variacao_no_periodo",
        +    "acumulado_no_ano",
        +    "acumulado_12_meses",
        +    null
        +  ],
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedbcb_serie_valores9 fields changed
      • changedOutput schema / properties / dados / items / properties / data / description
        Previous value: -"Data da observação (dd/MM/yyyy)"New value: +"Data de referência da observação (dd/MM/yyyy), na convenção do SGS: em série mensal, trimestral ou anual é o PRIMEIRO dia do período (01/03/2026 = março de 2026); em série diária, o próprio dia"
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar"
      • addedOutput schema / properties / provenance / properties / derivation_note
        Added value: +{
        +  "description": "O que o servidor calculou; presente junto com derived",
        +  "type": "string"
        +}
      • addedOutput schema / properties / provenance / properties / derived
        Added value: +{
        +  "description": "Presente (true) só quando o servidor calculou o valor em vez de repassá-lo como veio da fonte",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance / properties / notices
        Added value: +{
        +  "description": "Avisos que a fonte publica junto com o dado (quebra de série, unidade, frescor), verbatim. Ausente quando não há aviso",
        +  "items": {
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante. Quando a resposta junta partes extraídas em momentos distintos, é o MAIS ANTIGO deles (field_sources diz cada um)"
      • addedOutput schema / properties / provenance / properties / revision
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Se o dado ainda pode mudar na fonte",
        +  "properties": {
        +    "note": {
        +      "description": "O específico da fonte: o que revisa, quando, por quê",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte",
        +      "enum": [
        +        "current",
        +        "provisional",
        +        "final"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "note"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / serie / properties / natureza
        Added value: +{
        +  "description": "O que o valor da série é em cada data: 'nivel' (o valor da grandeza no período — saldo, fluxo, preço, taxa vigente, razão ou índice), 'variacao_no_periodo' (a variação ou rendimento do próprio período, como o IPCA mensal), 'acumulado_no_ano' ou 'acumulado_12_meses' (o acumulado até aquela data: não some nem subtraia esses valores). null = tipo não identificado: a série está fora do catálogo curado ou o catálogo não diz o que ela mede.",
        +  "enum": [
        +    "nivel",
        +    "variacao_no_periodo",
        +    "acumulado_no_ano",
        +    "acumulado_12_meses",
        +    null
        +  ],
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changedbcb_series_populares7 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar"
      • addedOutput schema / properties / provenance / properties / derivation_note
        Added value: +{
        +  "description": "O que o servidor calculou; presente junto com derived",
        +  "type": "string"
        +}
      • addedOutput schema / properties / provenance / properties / derived
        Added value: +{
        +  "description": "Presente (true) só quando o servidor calculou o valor em vez de repassá-lo como veio da fonte",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance / properties / notices
        Added value: +{
        +  "description": "Avisos que a fonte publica junto com o dado (quebra de série, unidade, frescor), verbatim. Ausente quando não há aviso",
        +  "items": {
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante. Quando a resposta junta partes extraídas em momentos distintos, é o MAIS ANTIGO deles (field_sources diz cada um)"
      • addedOutput schema / properties / provenance / properties / revision
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Se o dado ainda pode mudar na fonte",
        +  "properties": {
        +    "note": {
        +      "description": "O específico da fonte: o que revisa, quando, por quê",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte",
        +      "enum": [
        +        "current",
        +        "provisional",
        +        "final"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "note"
        +  ],
        +  "type": "object"
        +}
    • Changedbcb_variacao7 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar"
      • addedOutput schema / properties / provenance / properties / derivation_note
        Added value: +{
        +  "description": "O que o servidor calculou; presente junto com derived",
        +  "type": "string"
        +}
      • addedOutput schema / properties / provenance / properties / derived
        Added value: +{
        +  "description": "Presente (true) só quando o servidor calculou o valor em vez de repassá-lo como veio da fonte",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / provenance / properties / field_sources
        Added value: +{
        +  "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance / properties / notices
        Added value: +{
        +  "description": "Avisos que a fonte publica junto com o dado (quebra de série, unidade, frescor), verbatim. Ausente quando não há aviso",
        +  "items": {
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante. Quando a resposta junta partes extraídas em momentos distintos, é o MAIS ANTIGO deles (field_sources diz cada um)"
      • addedOutput schema / properties / provenance / properties / revision
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Se o dado ainda pode mudar na fonte",
        +  "properties": {
        +    "note": {
        +      "description": "O específico da fonte: o que revisa, quando, por quê",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte",
        +      "enum": [
        +        "current",
        +        "provisional",
        +        "final"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "note"
        +  ],
        +  "type": "object"
        +}
    • Changedfetch8 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Um bloco por procedência que contribuiu com esta resposta (contrato v1.1; licenças nunca se fundem)"New value: +"Um bloco por procedência que contribuiu com esta resposta (bloco de proveniência do portfólio; licenças nunca se fundem)"
      • changedOutput schema / properties / provenance / items / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar"
      • addedOutput schema / properties / provenance / items / properties / derivation_note
        Added value: +{
        +  "description": "O que o servidor calculou; presente junto com derived",
        +  "type": "string"
        +}
      • addedOutput schema / properties / provenance / items / properties / derived
        Added value: +{
        +  "description": "Presente (true) só quando o servidor calculou o valor em vez de repassá-lo como veio da fonte",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / provenance / items / properties / field_sources
        Added value: +{
        +  "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance / items / properties / notices
        Added value: +{
        +  "description": "Avisos que a fonte publica junto com o dado (quebra de série, unidade, frescor), verbatim. Ausente quando não há aviso",
        +  "items": {
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedOutput schema / properties / provenance / items / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante. Quando a resposta junta partes extraídas em momentos distintos, é o MAIS ANTIGO deles (field_sources diz cada um)"
      • addedOutput schema / properties / provenance / items / properties / revision
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Se o dado ainda pode mudar na fonte",
        +  "properties": {
        +    "note": {
        +      "description": "O específico da fonte: o que revisa, quando, por quê",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte",
        +      "enum": [
        +        "current",
        +        "provisional",
        +        "final"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "note"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch8 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Um bloco por procedência que contribuiu com esta resposta (contrato v1.1; licenças nunca se fundem)"New value: +"Um bloco por procedência que contribuiu com esta resposta (bloco de proveniência do portfólio; licenças nunca se fundem)"
      • changedOutput schema / properties / provenance / items / description
        Previous value: -"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"New value: +"Bloco de proveniência: fonte, URL, competência, extração, diagnóstico de origem, citação e licença; e, só quando há o que dizer, de onde veio cada parte, avisos da fonte, o que o servidor calculou e se o dado ainda pode mudar"
      • addedOutput schema / properties / provenance / items / properties / derivation_note
        Added value: +{
        +  "description": "O que o servidor calculou; presente junto com derived",
        +  "type": "string"
        +}
      • addedOutput schema / properties / provenance / items / properties / derived
        Added value: +{
        +  "description": "Presente (true) só quando o servidor calculou o valor em vez de repassá-lo como veio da fonte",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / provenance / items / properties / field_sources
        Added value: +{
        +  "description": "Presente só quando a resposta junta partes de origens ou momentos distintos: para cada grupo de campos, a URL, a extração e se veio do cache. Ausente nas respostas de uma origem só",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Proveniência de um grupo de campos da resposta: de onde veio e quando foi extraído",
        +    "properties": {
        +      "data_vintage": {
        +        "description": "Vintage/competência da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "dataset_id": {
        +        "description": "Identificador do conjunto da sub-fonte",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fields": {
        +        "description": "Campos do payload atribuídos a esta sub-fonte",
        +        "items": {
        +          "type": "string"
        +        },
        +        "minItems": 1,
        +        "type": "array"
        +      },
        +      "retrieved_at": {
        +        "description": "ISO-8601 da extração desta sub-fonte na origem",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "served_from_cache": {
        +        "description": "true se esta sub-fonte veio do cache do servidor (retrieved_at é o da extração original); false se foi buscada nesta chamada; null se o servidor não distingue",
        +        "type": [
        +          "boolean",
        +          "null"
        +        ]
        +      },
        +      "source_url": {
        +        "description": "URL canônica da sub-fonte que originou estes campos",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "fields",
        +      "source_url",
        +      "dataset_id",
        +      "data_vintage",
        +      "retrieved_at"
        +    ],
        +    "type": "object"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance / items / properties / notices
        Added value: +{
        +  "description": "Avisos que a fonte publica junto com o dado (quebra de série, unidade, frescor), verbatim. Ausente quando não há aviso",
        +  "items": {
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • changedOutput schema / properties / provenance / items / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante. Quando a resposta junta partes extraídas em momentos distintos, é o MAIS ANTIGO deles (field_sources diz cada um)"
      • addedOutput schema / properties / provenance / items / properties / revision
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Se o dado ainda pode mudar na fonte",
        +  "properties": {
        +    "note": {
        +      "description": "O específico da fonte: o que revisa, quando, por quê",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "status": {
        +      "description": "current = versão vigente, a fonte pode revisá-la; provisional = preliminar, incompleta ou sujeita a mudança (não compare como se fosse fechada); final = não muda mais, declarado pela fonte",
        +      "enum": [
        +        "current",
        +        "provisional",
        +        "final"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "note"
        +  ],
        +  "type": "object"
        +}
  2. 17 tool updatesv1.15.0
    • Changedbcb_buscar_serie9 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Um bloco por procedência que contribuiu com esta resposta (contrato v1.0; licenças nunca se fundem)"New value: +"Um bloco por procedência que contribuiu com esta resposta (contrato v1.1; licenças nunca se fundem)"
      • changedOutput schema / properties / provenance / items / description
        Previous value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • changedOutput schema / properties / provenance / items / properties / citation / description
        Previous value: -"Citação pronta para uso"New value: +"Citação/atribuição pronta para uso"
      • changedOutput schema / properties / provenance / items / properties / data_vintage / description
        Previous value: -"Competência do dado segundo a fonte; null quando a fonte não expõe"New value: +"Competência/vintage do dado segundo a fonte; null quando a fonte não expõe"
      • changedOutput schema / properties / provenance / items / properties / license / description
        Previous value: -"Regime legal do dado"New value: +"Regime legal do dado (id SPDX quando há, senão o nome da licença)"
      • addedOutput schema / properties / provenance / items / properties / retrieval
        Added value: +{
        +  "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade; null quando o servidor não mede",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / provenance / items / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante."New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"
      • changedOutput schema / properties / provenance / items / properties / source_url / description
        Previous value: -"URL canônica que reproduz a consulta"New value: +"URL canônica que reproduz a consulta na fonte"
      • changedOutput schema / properties / provenance / items / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedbcb_cambio_cotacao9 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Um bloco por procedência que contribuiu com esta resposta (contrato v1.0; licenças nunca se fundem)"New value: +"Um bloco por procedência que contribuiu com esta resposta (contrato v1.1; licenças nunca se fundem)"
      • changedOutput schema / properties / provenance / items / description
        Previous value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • changedOutput schema / properties / provenance / items / properties / citation / description
        Previous value: -"Citação pronta para uso"New value: +"Citação/atribuição pronta para uso"
      • changedOutput schema / properties / provenance / items / properties / data_vintage / description
        Previous value: -"Competência do dado segundo a fonte; null quando a fonte não expõe"New value: +"Competência/vintage do dado segundo a fonte; null quando a fonte não expõe"
      • changedOutput schema / properties / provenance / items / properties / license / description
        Previous value: -"Regime legal do dado"New value: +"Regime legal do dado (id SPDX quando há, senão o nome da licença)"
      • addedOutput schema / properties / provenance / items / properties / retrieval
        Added value: +{
        +  "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade; null quando o servidor não mede",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / provenance / items / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante."New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"
      • changedOutput schema / properties / provenance / items / properties / source_url / description
        Previous value: -"URL canônica que reproduz a consulta"New value: +"URL canônica que reproduz a consulta na fonte"
      • changedOutput schema / properties / provenance / items / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedbcb_cambio_moedas8 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • changedOutput schema / properties / provenance / properties / citation / description
        Previous value: -"Citação pronta para uso"New value: +"Citação/atribuição pronta para uso"
      • changedOutput schema / properties / provenance / properties / data_vintage / description
        Previous value: -"Competência do dado segundo a fonte; null quando a fonte não expõe"New value: +"Competência/vintage do dado segundo a fonte; null quando a fonte não expõe"
      • changedOutput schema / properties / provenance / properties / license / description
        Previous value: -"Regime legal do dado"New value: +"Regime legal do dado (id SPDX quando há, senão o nome da licença)"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade; null quando o servidor não mede",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante."New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"
      • changedOutput schema / properties / provenance / properties / source_url / description
        Previous value: -"URL canônica que reproduz a consulta"New value: +"URL canônica que reproduz a consulta na fonte"
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedbcb_comparar8 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • changedOutput schema / properties / provenance / properties / citation / description
        Previous value: -"Citação pronta para uso"New value: +"Citação/atribuição pronta para uso"
      • changedOutput schema / properties / provenance / properties / data_vintage / description
        Previous value: -"Competência do dado segundo a fonte; null quando a fonte não expõe"New value: +"Competência/vintage do dado segundo a fonte; null quando a fonte não expõe"
      • changedOutput schema / properties / provenance / properties / license / description
        Previous value: -"Regime legal do dado"New value: +"Regime legal do dado (id SPDX quando há, senão o nome da licença)"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade; null quando o servidor não mede",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante."New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"
      • changedOutput schema / properties / provenance / properties / source_url / description
        Previous value: -"URL canônica que reproduz a consulta"New value: +"URL canônica que reproduz a consulta na fonte"
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedbcb_correlacao8 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • changedOutput schema / properties / provenance / properties / citation / description
        Previous value: -"Citação pronta para uso"New value: +"Citação/atribuição pronta para uso"
      • changedOutput schema / properties / provenance / properties / data_vintage / description
        Previous value: -"Competência do dado segundo a fonte; null quando a fonte não expõe"New value: +"Competência/vintage do dado segundo a fonte; null quando a fonte não expõe"
      • changedOutput schema / properties / provenance / properties / license / description
        Previous value: -"Regime legal do dado"New value: +"Regime legal do dado (id SPDX quando há, senão o nome da licença)"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade; null quando o servidor não mede",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante."New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"
      • changedOutput schema / properties / provenance / properties / source_url / description
        Previous value: -"URL canônica que reproduz a consulta"New value: +"URL canônica que reproduz a consulta na fonte"
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedbcb_deflacionar8 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • changedOutput schema / properties / provenance / properties / citation / description
        Previous value: -"Citação pronta para uso"New value: +"Citação/atribuição pronta para uso"
      • changedOutput schema / properties / provenance / properties / data_vintage / description
        Previous value: -"Competência do dado segundo a fonte; null quando a fonte não expõe"New value: +"Competência/vintage do dado segundo a fonte; null quando a fonte não expõe"
      • changedOutput schema / properties / provenance / properties / license / description
        Previous value: -"Regime legal do dado"New value: +"Regime legal do dado (id SPDX quando há, senão o nome da licença)"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade; null quando o servidor não mede",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante."New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"
      • changedOutput schema / properties / provenance / properties / source_url / description
        Previous value: -"URL canônica que reproduz a consulta"New value: +"URL canônica que reproduz a consulta na fonte"
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedbcb_focus_expectativas8 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • changedOutput schema / properties / provenance / properties / citation / description
        Previous value: -"Citação pronta para uso"New value: +"Citação/atribuição pronta para uso"
      • changedOutput schema / properties / provenance / properties / data_vintage / description
        Previous value: -"Competência do dado segundo a fonte; null quando a fonte não expõe"New value: +"Competência/vintage do dado segundo a fonte; null quando a fonte não expõe"
      • changedOutput schema / properties / provenance / properties / license / description
        Previous value: -"Regime legal do dado"New value: +"Regime legal do dado (id SPDX quando há, senão o nome da licença)"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade; null quando o servidor não mede",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante."New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"
      • changedOutput schema / properties / provenance / properties / source_url / description
        Previous value: -"URL canônica que reproduz a consulta"New value: +"URL canônica que reproduz a consulta na fonte"
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedbcb_focus_referencias8 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • changedOutput schema / properties / provenance / properties / citation / description
        Previous value: -"Citação pronta para uso"New value: +"Citação/atribuição pronta para uso"
      • changedOutput schema / properties / provenance / properties / data_vintage / description
        Previous value: -"Competência do dado segundo a fonte; null quando a fonte não expõe"New value: +"Competência/vintage do dado segundo a fonte; null quando a fonte não expõe"
      • changedOutput schema / properties / provenance / properties / license / description
        Previous value: -"Regime legal do dado"New value: +"Regime legal do dado (id SPDX quando há, senão o nome da licença)"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade; null quando o servidor não mede",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante."New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"
      • changedOutput schema / properties / provenance / properties / source_url / description
        Previous value: -"URL canônica que reproduz a consulta"New value: +"URL canônica que reproduz a consulta na fonte"
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedbcb_focus_selic8 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • changedOutput schema / properties / provenance / properties / citation / description
        Previous value: -"Citação pronta para uso"New value: +"Citação/atribuição pronta para uso"
      • changedOutput schema / properties / provenance / properties / data_vintage / description
        Previous value: -"Competência do dado segundo a fonte; null quando a fonte não expõe"New value: +"Competência/vintage do dado segundo a fonte; null quando a fonte não expõe"
      • changedOutput schema / properties / provenance / properties / license / description
        Previous value: -"Regime legal do dado"New value: +"Regime legal do dado (id SPDX quando há, senão o nome da licença)"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade; null quando o servidor não mede",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante."New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"
      • changedOutput schema / properties / provenance / properties / source_url / description
        Previous value: -"URL canônica que reproduz a consulta"New value: +"URL canônica que reproduz a consulta na fonte"
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedbcb_indicadores_atuais8 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • changedOutput schema / properties / provenance / properties / citation / description
        Previous value: -"Citação pronta para uso"New value: +"Citação/atribuição pronta para uso"
      • changedOutput schema / properties / provenance / properties / data_vintage / description
        Previous value: -"Competência do dado segundo a fonte; null quando a fonte não expõe"New value: +"Competência/vintage do dado segundo a fonte; null quando a fonte não expõe"
      • changedOutput schema / properties / provenance / properties / license / description
        Previous value: -"Regime legal do dado"New value: +"Regime legal do dado (id SPDX quando há, senão o nome da licença)"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade; null quando o servidor não mede",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante."New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"
      • changedOutput schema / properties / provenance / properties / source_url / description
        Previous value: -"URL canônica que reproduz a consulta"New value: +"URL canônica que reproduz a consulta na fonte"
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedbcb_serie_metadados9 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Um bloco por procedência que contribuiu com esta resposta (contrato v1.0; licenças nunca se fundem)"New value: +"Um bloco por procedência que contribuiu com esta resposta (contrato v1.1; licenças nunca se fundem)"
      • changedOutput schema / properties / provenance / items / description
        Previous value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • changedOutput schema / properties / provenance / items / properties / citation / description
        Previous value: -"Citação pronta para uso"New value: +"Citação/atribuição pronta para uso"
      • changedOutput schema / properties / provenance / items / properties / data_vintage / description
        Previous value: -"Competência do dado segundo a fonte; null quando a fonte não expõe"New value: +"Competência/vintage do dado segundo a fonte; null quando a fonte não expõe"
      • changedOutput schema / properties / provenance / items / properties / license / description
        Previous value: -"Regime legal do dado"New value: +"Regime legal do dado (id SPDX quando há, senão o nome da licença)"
      • addedOutput schema / properties / provenance / items / properties / retrieval
        Added value: +{
        +  "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade; null quando o servidor não mede",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / provenance / items / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante."New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"
      • changedOutput schema / properties / provenance / items / properties / source_url / description
        Previous value: -"URL canônica que reproduz a consulta"New value: +"URL canônica que reproduz a consulta na fonte"
      • changedOutput schema / properties / provenance / items / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedbcb_serie_ultimos8 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • changedOutput schema / properties / provenance / properties / citation / description
        Previous value: -"Citação pronta para uso"New value: +"Citação/atribuição pronta para uso"
      • changedOutput schema / properties / provenance / properties / data_vintage / description
        Previous value: -"Competência do dado segundo a fonte; null quando a fonte não expõe"New value: +"Competência/vintage do dado segundo a fonte; null quando a fonte não expõe"
      • changedOutput schema / properties / provenance / properties / license / description
        Previous value: -"Regime legal do dado"New value: +"Regime legal do dado (id SPDX quando há, senão o nome da licença)"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade; null quando o servidor não mede",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante."New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"
      • changedOutput schema / properties / provenance / properties / source_url / description
        Previous value: -"URL canônica que reproduz a consulta"New value: +"URL canônica que reproduz a consulta na fonte"
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedbcb_serie_valores8 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • changedOutput schema / properties / provenance / properties / citation / description
        Previous value: -"Citação pronta para uso"New value: +"Citação/atribuição pronta para uso"
      • changedOutput schema / properties / provenance / properties / data_vintage / description
        Previous value: -"Competência do dado segundo a fonte; null quando a fonte não expõe"New value: +"Competência/vintage do dado segundo a fonte; null quando a fonte não expõe"
      • changedOutput schema / properties / provenance / properties / license / description
        Previous value: -"Regime legal do dado"New value: +"Regime legal do dado (id SPDX quando há, senão o nome da licença)"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade; null quando o servidor não mede",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante."New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"
      • changedOutput schema / properties / provenance / properties / source_url / description
        Previous value: -"URL canônica que reproduz a consulta"New value: +"URL canônica que reproduz a consulta na fonte"
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedbcb_series_populares8 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • changedOutput schema / properties / provenance / properties / citation / description
        Previous value: -"Citação pronta para uso"New value: +"Citação/atribuição pronta para uso"
      • changedOutput schema / properties / provenance / properties / data_vintage / description
        Previous value: -"Competência do dado segundo a fonte; null quando a fonte não expõe"New value: +"Competência/vintage do dado segundo a fonte; null quando a fonte não expõe"
      • changedOutput schema / properties / provenance / properties / license / description
        Previous value: -"Regime legal do dado"New value: +"Regime legal do dado (id SPDX quando há, senão o nome da licença)"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade; null quando o servidor não mede",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante."New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"
      • changedOutput schema / properties / provenance / properties / source_url / description
        Previous value: -"URL canônica que reproduz a consulta"New value: +"URL canônica que reproduz a consulta na fonte"
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedbcb_variacao8 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • changedOutput schema / properties / provenance / properties / citation / description
        Previous value: -"Citação pronta para uso"New value: +"Citação/atribuição pronta para uso"
      • changedOutput schema / properties / provenance / properties / data_vintage / description
        Previous value: -"Competência do dado segundo a fonte; null quando a fonte não expõe"New value: +"Competência/vintage do dado segundo a fonte; null quando a fonte não expõe"
      • changedOutput schema / properties / provenance / properties / license / description
        Previous value: -"Regime legal do dado"New value: +"Regime legal do dado (id SPDX quando há, senão o nome da licença)"
      • addedOutput schema / properties / provenance / properties / retrieval
        Added value: +{
        +  "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade; null quando o servidor não mede",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / provenance / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante."New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"
      • changedOutput schema / properties / provenance / properties / source_url / description
        Previous value: -"URL canônica que reproduz a consulta"New value: +"URL canônica que reproduz a consulta na fonte"
      • changedOutput schema / properties / provenance / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedfetch9 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Um bloco por procedência que contribuiu com esta resposta (contrato v1.0; licenças nunca se fundem)"New value: +"Um bloco por procedência que contribuiu com esta resposta (contrato v1.1; licenças nunca se fundem)"
      • changedOutput schema / properties / provenance / items / description
        Previous value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • changedOutput schema / properties / provenance / items / properties / citation / description
        Previous value: -"Citação pronta para uso"New value: +"Citação/atribuição pronta para uso"
      • changedOutput schema / properties / provenance / items / properties / data_vintage / description
        Previous value: -"Competência do dado segundo a fonte; null quando a fonte não expõe"New value: +"Competência/vintage do dado segundo a fonte; null quando a fonte não expõe"
      • changedOutput schema / properties / provenance / items / properties / license / description
        Previous value: -"Regime legal do dado"New value: +"Regime legal do dado (id SPDX quando há, senão o nome da licença)"
      • addedOutput schema / properties / provenance / items / properties / retrieval
        Added value: +{
        +  "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade; null quando o servidor não mede",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / provenance / items / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante."New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"
      • changedOutput schema / properties / provenance / items / properties / source_url / description
        Previous value: -"URL canônica que reproduz a consulta"New value: +"URL canônica que reproduz a consulta na fonte"
      • changedOutput schema / properties / provenance / items / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
    • Changedsearch9 fields changed
      • changedOutput schema / properties / provenance / description
        Previous value: -"Um bloco por procedência que contribuiu com esta resposta (contrato v1.0; licenças nunca se fundem)"New value: +"Um bloco por procedência que contribuiu com esta resposta (contrato v1.1; licenças nunca se fundem)"
      • changedOutput schema / properties / provenance / items / description
        Previous value: -"Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença"New value: +"Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença"
      • changedOutput schema / properties / provenance / items / properties / citation / description
        Previous value: -"Citação pronta para uso"New value: +"Citação/atribuição pronta para uso"
      • changedOutput schema / properties / provenance / items / properties / data_vintage / description
        Previous value: -"Competência do dado segundo a fonte; null quando a fonte não expõe"New value: +"Competência/vintage do dado segundo a fonte; null quando a fonte não expõe"
      • changedOutput schema / properties / provenance / items / properties / license / description
        Previous value: -"Regime legal do dado"New value: +"Regime legal do dado (id SPDX quando há, senão o nome da licença)"
      • addedOutput schema / properties / provenance / items / properties / retrieval
        Added value: +{
        +  "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade; null quando o servidor não mede",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "Diagnóstico de origem da chamada: como o dado foi obtido. Medição real do servidor; unstable=true pede ao agente que trate o dado como obtido com dificuldade",
        +      "properties": {
        +        "anomalies": {
        +          "description": "Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma",
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "count": {
        +                "description": "Ocorrências desta classe na chamada",
        +                "minimum": 1,
        +                "type": "integer"
        +              },
        +              "kind": {
        +                "description": "Classe da anomalia (vocabulário fechado do contrato)",
        +                "enum": [
        +                  "timeout",
        +                  "network",
        +                  "http_4xx",
        +                  "http_5xx",
        +                  "rate_limited",
        +                  "malformed_body"
        +                ],
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "kind",
        +              "count"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        "attempts": {
        +          "description": "Tentativas somadas, incluindo as repetidas (>= requests)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "requests": {
        +          "description": "Idas distintas à origem que compõem esta resposta (fatias, páginas)",
        +          "minimum": 1,
        +          "type": "integer"
        +        },
        +        "unstable": {
        +          "description": "true se houve repetição (attempts > requests) ou alguma anomalia",
        +          "type": "boolean"
        +        }
        +      },
        +      "required": [
        +        "requests",
        +        "attempts",
        +        "anomalies",
        +        "unstable"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ]
        +}
      • changedOutput schema / properties / provenance / items / properties / retrieved_at / description
        Previous value: -"Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante."New value: +"Instante REAL da extração na origem (ISO-8601, fuso do servidor). Resposta servida de cache mantém o instante do fetch original, que é a data de extração relevante"
      • changedOutput schema / properties / provenance / items / properties / source_url / description
        Previous value: -"URL canônica que reproduz a consulta"New value: +"URL canônica que reproduz a consulta na fonte"
      • changedOutput schema / properties / provenance / items / required
        Previous value: -[
        -  "source",
        -  "source_url",
        -  "data_vintage",
        -  "retrieved_at",
        -  "citation",
        -  "license"
        -]New value: +[
        +  "source",
        +  "source_url",
        +  "data_vintage",
        +  "retrieved_at",
        +  "retrieval",
        +  "citation",
        +  "license"
        +]
  3. 3 tool updatesv1.12.1
    • Changedbcb_buscar_serie2 fields changed
      • changedInput schema / properties / termo / description
        Previous value: -"Termo de busca (mínimo 2 caracteres) ou o código da série. Vários termos são combinados com E."New value: +"Termo de busca (mínimo 2 caracteres) ou o código da série. Vários termos são combinados com E, sem distinção de acento; a palavra de todo dia é traduzida para a do BCB (déficit→resultado primário, calote→inadimplência, desemprego→desocupação) e a resposta diz quando isso aconteceu (notasVocabulario)."
      • addedOutput schema / properties / notasVocabulario
        Added value: +{
        +  "description": "Quando um termo foi ampliado para a palavra que o BCB usa (déficit→resultado primário), diz qual",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Addedfetch
    • Addedsearch
  4. 15 tool updatesv1.9.2
    • Changedbcb_buscar_serie4 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "description": "Um bloco por procedência que contribuiu com esta resposta (contrato v1.0; licenças nunca se fundem)",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença",
        +    "properties": {
        +      "citation": {
        +        "description": "Citação pronta para uso",
        +        "type": "string"
        +      },
        +      "data_vintage": {
        +        "description": "Competência do dado segundo a fonte; null quando a fonte não expõe",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "license": {
        +        "description": "Regime legal do dado",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "retrieved_at": {
        +        "description": "Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante.",
        +        "type": "string"
        +      },
        +      "source": {
        +        "description": "Fonte oficial do dado",
        +        "type": "string"
        +      },
        +      "source_url": {
        +        "description": "URL canônica que reproduz a consulta",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "source",
        +      "source_url",
        +      "data_vintage",
        +      "retrieved_at",
        +      "citation",
        +      "license"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / series / items / properties / fonteNome
        Added value: +{
        +  "description": "Só quando `origem` = curado. 'portal' = nome transcrito do dataset da série no Portal de Dados Abertos do BCB; 'medido' = série sem dataset no portal, nome herdado e apenas periodicidade e ordem de grandeza verificadas contra a origem.",
        +  "enum": [
        +    "portal",
        +    "medido"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "termo",
        -  "totalEncontradas",
        -  "series",
        -  "catalogo"
        -]New value: +[
        +  "termo",
        +  "totalEncontradas",
        +  "series",
        +  "catalogo",
        +  "provenance",
        +  "attribution"
        +]
    • Changedbcb_cambio_cotacao3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "description": "Um bloco por procedência que contribuiu com esta resposta (contrato v1.0; licenças nunca se fundem)",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença",
        +    "properties": {
        +      "citation": {
        +        "description": "Citação pronta para uso",
        +        "type": "string"
        +      },
        +      "data_vintage": {
        +        "description": "Competência do dado segundo a fonte; null quando a fonte não expõe",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "license": {
        +        "description": "Regime legal do dado",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "retrieved_at": {
        +        "description": "Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante.",
        +        "type": "string"
        +      },
        +      "source": {
        +        "description": "Fonte oficial do dado",
        +        "type": "string"
        +      },
        +      "source_url": {
        +        "description": "URL canônica que reproduz a consulta",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "source",
        +      "source_url",
        +      "data_vintage",
        +      "retrieved_at",
        +      "citation",
        +      "license"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "moeda",
        -  "periodo",
        -  "totalRegistros",
        -  "cotacoes",
        -  "disclaimer",
        -  "urlConsulta",
        -  "consultadoEm"
        -]New value: +[
        +  "moeda",
        +  "periodo",
        +  "totalRegistros",
        +  "cotacoes",
        +  "disclaimer",
        +  "urlConsulta",
        +  "consultadoEm",
        +  "provenance",
        +  "attribution"
        +]
    • Changedbcb_cambio_moedas3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença",
        +  "properties": {
        +    "citation": {
        +      "description": "Citação pronta para uso",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "description": "Competência do dado segundo a fonte; null quando a fonte não expõe",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "description": "Regime legal do dado",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "retrieved_at": {
        +      "description": "Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Fonte oficial do dado",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "URL canônica que reproduz a consulta",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "totalMoedas",
        -  "moedas",
        -  "disclaimer",
        -  "urlConsulta",
        -  "consultadoEm"
        -]New value: +[
        +  "totalMoedas",
        +  "moedas",
        +  "disclaimer",
        +  "urlConsulta",
        +  "consultadoEm",
        +  "provenance",
        +  "attribution"
        +]
    • Changedbcb_comparar5 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença",
        +  "properties": {
        +    "citation": {
        +      "description": "Citação pronta para uso",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "description": "Competência do dado segundo a fonte; null quando a fonte não expõe",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "description": "Regime legal do dado",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "retrieved_at": {
        +      "description": "Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Fonte oficial do dado",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "URL canônica que reproduz a consulta",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / ranking / items / properties / metodo
        Added value: +{
        +  "description": "Como a variação foi medida: `nivel` = (último − primeiro) / primeiro, para série de nível; `encadeamento` = acumulado composto de todas as observações, para série que já é uma variação percentual por período (IPCA, INPC, IGP-M mensais e os núcleos/grupos do IPCA do catálogo; Selic e CDI acumulados no mês, 4390/4391; rentabilidade da poupança, 25/195 — nesta, uma observação por mês). A detecção cobre as séries de variação do catálogo curado; código fora dele é tratado como nível.",
        +  "enum": [
        +    "nivel",
        +    "encadeamento"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / ranking / items / properties / variacaoPercentual / description
        Added value: +"Variação entre as pontas (metodo nivel) ou acumulado encadeado do período (metodo encadeamento), em %"
      • changedOutput schema / required
        Previous value: -[
        -  "periodo",
        -  "totalSeries",
        -  "seriesComDados",
        -  "seriesComErro",
        -  "ranking",
        -  "erros",
        -  "derivacao"
        -]New value: +[
        +  "periodo",
        +  "totalSeries",
        +  "seriesComDados",
        +  "seriesComErro",
        +  "ranking",
        +  "erros",
        +  "derivacao",
        +  "provenance",
        +  "attribution"
        +]
    • Changedbcb_correlacao3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença",
        +  "properties": {
        +    "citation": {
        +      "description": "Citação pronta para uso",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "description": "Competência do dado segundo a fonte; null quando a fonte não expõe",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "description": "Regime legal do dado",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "retrieved_at": {
        +      "description": "Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Fonte oficial do dado",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "URL canônica que reproduz a consulta",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "periodo",
        -  "metodo",
        -  "base",
        -  "series",
        -  "alinhamento",
        -  "pares",
        -  "erros",
        -  "derivacao"
        -]New value: +[
        +  "periodo",
        +  "metodo",
        +  "base",
        +  "series",
        +  "alinhamento",
        +  "pares",
        +  "erros",
        +  "derivacao",
        +  "provenance",
        +  "attribution"
        +]
    • Changedbcb_deflacionar3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença",
        +  "properties": {
        +    "citation": {
        +      "description": "Citação pronta para uso",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "description": "Competência do dado segundo a fonte; null quando a fonte não expõe",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "description": "Regime legal do dado",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "retrieved_at": {
        +      "description": "Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Fonte oficial do dado",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "URL canônica que reproduz a consulta",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "serie",
        -  "deflator",
        -  "base",
        -  "periodo",
        -  "dados",
        -  "variacao",
        -  "derivacao"
        -]New value: +[
        +  "serie",
        +  "deflator",
        +  "base",
        +  "periodo",
        +  "dados",
        +  "variacao",
        +  "derivacao",
        +  "provenance",
        +  "attribution"
        +]
    • Changedbcb_focus_expectativas3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença",
        +  "properties": {
        +    "citation": {
        +      "description": "Citação pronta para uso",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "description": "Competência do dado segundo a fonte; null quando a fonte não expõe",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "description": "Regime legal do dado",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "retrieved_at": {
        +      "description": "Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Fonte oficial do dado",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "URL canônica que reproduz a consulta",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "indicador",
        -  "horizonte",
        -  "base",
        -  "filtro",
        -  "totalRegistros",
        -  "expectativas",
        -  "urlConsulta",
        -  "consultadoEm"
        -]New value: +[
        +  "indicador",
        +  "horizonte",
        +  "base",
        +  "filtro",
        +  "totalRegistros",
        +  "expectativas",
        +  "urlConsulta",
        +  "consultadoEm",
        +  "provenance",
        +  "attribution"
        +]
    • Changedbcb_focus_referencias3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença",
        +  "properties": {
        +    "citation": {
        +      "description": "Citação pronta para uso",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "description": "Competência do dado segundo a fonte; null quando a fonte não expõe",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "description": "Regime legal do dado",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "retrieved_at": {
        +      "description": "Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Fonte oficial do dado",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "URL canônica que reproduz a consulta",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "indicadores",
        -  "referencias",
        -  "escopos",
        -  "janela",
        -  "totalRegistros",
        -  "consultadoEm"
        -]New value: +[
        +  "indicadores",
        +  "referencias",
        +  "escopos",
        +  "janela",
        +  "totalRegistros",
        +  "consultadoEm",
        +  "provenance",
        +  "attribution"
        +]
    • Changedbcb_focus_selic3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença",
        +  "properties": {
        +    "citation": {
        +      "description": "Citação pronta para uso",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "description": "Competência do dado segundo a fonte; null quando a fonte não expõe",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "description": "Regime legal do dado",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "retrieved_at": {
        +      "description": "Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Fonte oficial do dado",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "URL canônica que reproduz a consulta",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "base",
        -  "filtro",
        -  "totalRegistros",
        -  "expectativas",
        -  "urlConsulta",
        -  "consultadoEm"
        -]New value: +[
        +  "base",
        +  "filtro",
        +  "totalRegistros",
        +  "expectativas",
        +  "urlConsulta",
        +  "consultadoEm",
        +  "provenance",
        +  "attribution"
        +]
    • Changedbcb_indicadores_atuais3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença",
        +  "properties": {
        +    "citation": {
        +      "description": "Citação pronta para uso",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "description": "Competência do dado segundo a fonte; null quando a fonte não expõe",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "description": "Regime legal do dado",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "retrieved_at": {
        +      "description": "Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Fonte oficial do dado",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "URL canônica que reproduz a consulta",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "consultadoEm",
        -  "indicadores"
        -]New value: +[
        +  "consultadoEm",
        +  "indicadores",
        +  "provenance",
        +  "attribution"
        +]
    • Changedbcb_serie_metadados3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "description": "Um bloco por procedência que contribuiu com esta resposta (contrato v1.0; licenças nunca se fundem)",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença",
        +    "properties": {
        +      "citation": {
        +        "description": "Citação pronta para uso",
        +        "type": "string"
        +      },
        +      "data_vintage": {
        +        "description": "Competência do dado segundo a fonte; null quando a fonte não expõe",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "license": {
        +        "description": "Regime legal do dado",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "retrieved_at": {
        +        "description": "Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante.",
        +        "type": "string"
        +      },
        +      "source": {
        +        "description": "Fonte oficial do dado",
        +        "type": "string"
        +      },
        +      "source_url": {
        +        "description": "URL canônica que reproduz a consulta",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "source",
        +      "source_url",
        +      "data_vintage",
        +      "retrieved_at",
        +      "citation",
        +      "license"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "codigo",
        -  "nome",
        -  "fonte"
        -]New value: +[
        +  "codigo",
        +  "nome",
        +  "fonte",
        +  "provenance",
        +  "attribution"
        +]
    • Changedbcb_serie_ultimos3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença",
        +  "properties": {
        +    "citation": {
        +      "description": "Citação pronta para uso",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "description": "Competência do dado segundo a fonte; null quando a fonte não expõe",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "description": "Regime legal do dado",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "retrieved_at": {
        +      "description": "Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Fonte oficial do dado",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "URL canônica que reproduz a consulta",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "serie",
        -  "totalRegistros",
        -  "dados"
        -]New value: +[
        +  "serie",
        +  "totalRegistros",
        +  "dados",
        +  "provenance",
        +  "attribution"
        +]
    • Changedbcb_serie_valores3 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença",
        +  "properties": {
        +    "citation": {
        +      "description": "Citação pronta para uso",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "description": "Competência do dado segundo a fonte; null quando a fonte não expõe",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "description": "Regime legal do dado",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "retrieved_at": {
        +      "description": "Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Fonte oficial do dado",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "URL canônica que reproduz a consulta",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "serie",
        -  "totalRegistros",
        -  "dados"
        -]New value: +[
        +  "serie",
        +  "totalRegistros",
        +  "dados",
        +  "provenance",
        +  "attribution"
        +]
    • Changedbcb_series_populares4 fields changed
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença",
        +  "properties": {
        +    "citation": {
        +      "description": "Citação pronta para uso",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "description": "Competência do dado segundo a fonte; null quando a fonte não expõe",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "description": "Regime legal do dado",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "retrieved_at": {
        +      "description": "Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Fonte oficial do dado",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "URL canônica que reproduz a consulta",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / series / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "additionalProperties": false,
        -      "description": "Identificação da série temporal",
        -      "properties": {
        -        "categoria": {
        -          "description": "Categoria econômica",
        -          "type": "string"
        -        },
        -        "codigo": {
        -          "description": "Código da série no SGS/BCB",
        -          "type": "number"
        -        },
        -        "nome": {
        -          "description": "Nome da série",
        -          "type": "string"
        -        },
        -        "periodicidade": {
        -          "description": "Periodicidade (Diária, Mensal, etc.)",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "codigo",
        -        "nome"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "additionalProperties": {
        -      "items": {
        -        "additionalProperties": false,
        -        "description": "Identificação da série temporal",
        -        "properties": {
        -          "categoria": {
        -            "description": "Categoria econômica",
        -            "type": "string"
        -          },
        -          "codigo": {
        -            "description": "Código da série no SGS/BCB",
        -            "type": "number"
        -          },
        -          "nome": {
        -            "description": "Nome da série",
        -            "type": "string"
        -          },
        -          "periodicidade": {
        -            "description": "Periodicidade (Diária, Mensal, etc.)",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "codigo",
        -          "nome"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "additionalProperties": false,
        +      "description": "Identificação da série temporal",
        +      "properties": {
        +        "categoria": {
        +          "description": "Categoria econômica",
        +          "type": "string"
        +        },
        +        "codigo": {
        +          "description": "Código da série no SGS/BCB",
        +          "type": "number"
        +        },
        +        "fonteNome": {
        +          "description": "Procedência do `nome`: 'portal' = transcrito do dataset da série no Portal de Dados Abertos do BCB; 'medido' = a série não tem dataset no portal, o nome é herdado e só a periodicidade e a ordem de grandeza foram verificadas contra a origem.",
        +          "enum": [
        +            "portal",
        +            "medido"
        +          ],
        +          "type": "string"
        +        },
        +        "nome": {
        +          "description": "Nome da série",
        +          "type": "string"
        +        },
        +        "periodicidade": {
        +          "description": "Periodicidade (Diária, Mensal, etc.)",
        +          "type": "string"
        +        },
        +        "unidade": {
        +          "description": "Unidade de medida publicada pelo portal. Ausente nas séries sem dataset (fonteNome 'medido').",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "codigo",
        +        "nome"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "additionalProperties": {
        +      "items": {
        +        "additionalProperties": false,
        +        "description": "Identificação da série temporal",
        +        "properties": {
        +          "categoria": {
        +            "description": "Categoria econômica",
        +            "type": "string"
        +          },
        +          "codigo": {
        +            "description": "Código da série no SGS/BCB",
        +            "type": "number"
        +          },
        +          "fonteNome": {
        +            "description": "Procedência do `nome`: 'portal' = transcrito do dataset da série no Portal de Dados Abertos do BCB; 'medido' = a série não tem dataset no portal, o nome é herdado e só a periodicidade e a ordem de grandeza foram verificadas contra a origem.",
        +            "enum": [
        +              "portal",
        +              "medido"
        +            ],
        +            "type": "string"
        +          },
        +          "nome": {
        +            "description": "Nome da série",
        +            "type": "string"
        +          },
        +          "periodicidade": {
        +            "description": "Periodicidade (Diária, Mensal, etc.)",
        +            "type": "string"
        +          },
        +          "unidade": {
        +            "description": "Unidade de medida publicada pelo portal. Ausente nas séries sem dataset (fonteNome 'medido').",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "codigo",
        +          "nome"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "type": "object"
        +  }
        +]
      • changedOutput schema / required
        Previous value: -[
        -  "totalSeries",
        -  "categorias",
        -  "series"
        -]New value: +[
        +  "totalSeries",
        +  "categorias",
        +  "series",
        +  "provenance",
        +  "attribution"
        +]
    • Changedbcb_variacao11 fields changed
      • changedOutput schema / properties / analise / description
        Previous value: -"Resultado da variação entre o primeiro e o último valor"New value: +"Resultado da variação no período. Em `metodo: \"nivel\"` é a variação entre o primeiro e o último valor; em `metodo: \"encadeamento\"` (série que já é variação por período, como IPCA e IGP-M mensais) é o acumulado composto de todas as observações"
      • addedOutput schema / properties / analise / properties / diferencaAbsoluta / description
        Added value: +"valorFinal − valorInicial em série de nível; NULO em série encadeada, onde não se aplica"
      • changedOutput schema / properties / analise / properties / diferencaAbsoluta / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • addedOutput schema / properties / analise / properties / metodo
        Added value: +{
        +  "description": "Como a variação foi medida: `nivel` = (último − primeiro) / primeiro, para série de nível; `encadeamento` = acumulado composto de todas as observações, para série que já é uma variação percentual por período (IPCA, INPC, IGP-M mensais e os núcleos/grupos do IPCA do catálogo; Selic e CDI acumulados no mês, 4390/4391; rentabilidade da poupança, 25/195 — nesta, uma observação por mês). A detecção cobre as séries de variação do catálogo curado; código fora dele é tratado como nível.",
        +  "enum": [
        +    "nivel",
        +    "encadeamento"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / analise / properties / valorFinal / description
        Added value: +"Última observação do período, verbatim da fonte"
      • addedOutput schema / properties / analise / properties / valorInicial / description
        Added value: +"Primeira observação do período, verbatim da fonte"
      • addedOutput schema / properties / analise / properties / variacaoPercentual / description
        Added value: +"Variação (nível) ou acumulado (encadeamento), em %"
      • changedOutput schema / properties / analise / required
        Previous value: -[
        -  "valorInicial",
        -  "valorFinal",
        -  "diferencaAbsoluta",
        -  "variacaoPercentual",
        -  "variacaoFormatada"
        -]New value: +[
        +  "metodo",
        +  "valorInicial",
        +  "valorFinal",
        +  "diferencaAbsoluta",
        +  "variacaoPercentual",
        +  "variacaoFormatada"
        +]
      • addedOutput schema / properties / attribution
        Added value: +{
        +  "description": "URLs canônicas das fontes desta resposta (lista de atribuição)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / provenance
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Bloco de proveniência (contrato v1.0): fonte, URL, competência, extração e licença",
        +  "properties": {
        +    "citation": {
        +      "description": "Citação pronta para uso",
        +      "type": "string"
        +    },
        +    "data_vintage": {
        +      "description": "Competência do dado segundo a fonte; null quando a fonte não expõe",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "license": {
        +      "description": "Regime legal do dado",
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "retrieved_at": {
        +      "description": "Instante REAL da extração na origem (ISO-8601, horário de Brasília). Resposta servida de cache mantém o instante do fetch ORIGINAL, que é a data de extração relevante.",
        +      "type": "string"
        +    },
        +    "source": {
        +      "description": "Fonte oficial do dado",
        +      "type": "string"
        +    },
        +    "source_url": {
        +      "description": "URL canônica que reproduz a consulta",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "source",
        +    "source_url",
        +    "data_vintage",
        +    "retrieved_at",
        +    "citation",
        +    "license"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "serie",
        -  "periodo",
        -  "analise",
        -  "estatisticas",
        -  "derivacao"
        -]New value: +[
        +  "serie",
        +  "periodo",
        +  "analise",
        +  "estatisticas",
        +  "derivacao",
        +  "provenance",
        +  "attribution"
        +]
  5. 15 tool updatesv1.6.0
    • Changedbcb_buscar_serie16 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • addedInput schema / properties / limite
        Added value: +{
        +  "default": 20,
        +  "description": "Máximo de séries a devolver (1-100, padrão: 20). `totalEncontradas` traz o total antes do corte.",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "type": "number"
        +}
      • changedInput schema / properties / termo / description
        Previous value: -"Termo de busca (mínimo 2 caracteres)"New value: +"Termo de busca (mínimo 2 caracteres) ou o código da série. Vários termos são combinados com E."
      • removedOutput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • addedOutput schema / properties / avisos
        Added value: +{
        +  "description": "Avisos de degradação (índice vencido ou indisponível)",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / catalogo
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Proveniência do índice usado na busca",
        +  "properties": {
        +    "cobertura": {
        +      "description": "Limite explícito de cobertura do índice",
        +      "type": "string"
        +    },
        +    "obtidoEm": {
        +      "description": "Timestamp ISO 8601 em que o índice do portal foi obtido",
        +      "type": "string"
        +    },
        +    "origem": {
        +      "description": "Camadas consultadas",
        +      "type": "string"
        +    },
        +    "seriesIndexadas": {
        +      "description": "Quantidade de séries no índice consultado",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "origem",
        +    "seriesIndexadas",
        +    "cobertura"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / observacao
        Added value: +{
        +  "description": "Aviso de corte quando há mais resultados que `limite`",
        +  "type": "string"
        +}
      • changedOutput schema / properties / series / description
        Previous value: -"Séries que correspondem ao termo"New value: +"Séries que correspondem ao termo — as do catálogo curado primeiro"
      • changedOutput schema / properties / series / items / properties / categoria / description
        Previous value: -"Categoria econômica"New value: +"Categoria econômica (só no catálogo curado)"
      • addedOutput schema / properties / series / items / properties / dataset
        Added value: +{
        +  "description": "Página do dataset no portal de dados abertos (só quando `origem` = indice)",
        +  "type": "string"
        +}
      • changedOutput schema / properties / series / items / properties / nome / description
        Previous value: -"Nome da série"New value: +"Nome da série (revisado quando `origem` = curado; derivado do slug do portal quando = indice)"
      • addedOutput schema / properties / series / items / properties / origem
        Added value: +{
        +  "description": "Camada de onde veio o achado",
        +  "enum": [
        +    "curado",
        +    "indice"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / series / items / properties / periodicidade / description
        Previous value: -"Periodicidade da série"New value: +"Periodicidade (só no catálogo curado)"
      • changedOutput schema / properties / series / items / required
        Previous value: -[
        -  "codigo",
        -  "nome"
        -]New value: +[
        +  "codigo",
        +  "nome",
        +  "origem"
        +]
      • changedOutput schema / properties / totalEncontradas / description
        Previous value: -"Quantidade de séries encontradas"New value: +"Quantidade de séries encontradas, antes do corte por `limite`"
      • changedOutput schema / required
        Previous value: -[
        -  "termo",
        -  "totalEncontradas",
        -  "series"
        -]New value: +[
        +  "termo",
        +  "totalEncontradas",
        +  "series",
        +  "catalogo"
        +]
    • Addedbcb_cambio_cotacao
    • Addedbcb_cambio_moedas
    • Changedbcb_comparar9 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • addedInput schema / properties / agregacao
        Added value: +{
        +  "default": "ultimo",
        +  "description": "Como agregar os valores de cada período quando `frequencia` é informada. `ultimo` (padrão) serve a nível de preço, taxa e índice; `soma` a fluxo; `acumulada` a séries que JÁ SÃO variação percentual (IPCA mensal, por exemplo), compondo geometricamente — somar 12 variações mensais NÃO dá a inflação do ano.",
        +  "enum": [
        +    "ultimo",
        +    "primeiro",
        +    "media",
        +    "soma",
        +    "acumulada"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / frequencia
        Added value: +{
        +  "description": "Opcional: reamostra a série para esta frequência antes de responder (só agrega para períodos MAIORES; pedir frequência mais fina que a da série é recusado). Útil para comparar séries de periodicidades diferentes.",
        +  "enum": [
        +    "mensal",
        +    "trimestral",
        +    "anual"
        +  ],
        +  "type": "string"
        +}
      • removedOutput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • addedOutput schema / properties / aviso
        Added value: +{
        +  "description": "Presente quando as séries comparadas têm periodicidades diferentes e nenhuma harmonização foi pedida — os números do ranking, nesse caso, não são diretamente comparáveis entre si.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / derivacao
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Origem dos números calculados: o que é derivado, por qual motor e com quais convenções",
        +  "properties": {
        +    "derived": {
        +      "description": "Sempre true: há número calculado nesta resposta",
        +      "type": "boolean"
        +    },
        +    "motor": {
        +      "description": "Componente que computou a estatística",
        +      "type": "string"
        +    },
        +    "nota": {
        +      "description": "Convenções de cálculo e arredondamento, em prosa",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "derived",
        +    "motor",
        +    "nota"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / harmonizacao
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Presente quando `frequencia` foi informada: descreve a reamostragem aplicada. Valor DERIVADO — calculado por este servidor, não publicado pelo Banco Central.",
        +  "properties": {
        +    "agregacao": {
        +      "description": "Convenção usada para agregar os valores de cada período",
        +      "enum": [
        +        "ultimo",
        +        "primeiro",
        +        "media",
        +        "soma",
        +        "acumulada"
        +      ],
        +      "type": "string"
        +    },
        +    "derived": {
        +      "description": "Sempre true: o valor é derivado, não publicado pela fonte",
        +      "type": "boolean"
        +    },
        +    "frequencia": {
        +      "description": "Frequência de destino",
        +      "enum": [
        +        "mensal",
        +        "trimestral",
        +        "anual"
        +      ],
        +      "type": "string"
        +    },
        +    "nota": {
        +      "description": "Descrição em prosa do que foi calculado",
        +      "type": "string"
        +    },
        +    "observacoesOriginais": {
        +      "description": "Observações antes da agregação",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "frequencia",
        +    "agregacao",
        +    "derived",
        +    "nota"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / ranking / items / properties / posicao / description
        Added value: +"Posição no ranking"
      • changedOutput schema / required
        Previous value: -[
        -  "periodo",
        -  "totalSeries",
        -  "seriesComDados",
        -  "seriesComErro",
        -  "ranking",
        -  "erros"
        -]New value: +[
        +  "periodo",
        +  "totalSeries",
        +  "seriesComDados",
        +  "seriesComErro",
        +  "ranking",
        +  "erros",
        +  "derivacao"
        +]
    • Addedbcb_correlacao
    • Addedbcb_deflacionar
    • Addedbcb_focus_expectativas
    • Addedbcb_focus_referencias
    • Addedbcb_focus_selic
    • Changedbcb_indicadores_atuais5 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • removedOutput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • changedOutput schema / properties / indicadores / description
        Previous value: -"Indicadores com seus valores mais recentes"New value: +"Lista de indicadores com seus valores mais recentes"
      • changedOutput schema / properties / indicadores / items / properties / erro / description
        Previous value: -"Mensagem de erro quando indisponível"New value: +"Mensagem de erro quando o indicador não pôde ser obtido"
    • Changedbcb_serie_metadados6 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedOutput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedOutput schema / properties / especial
        Removed value: -{
        -  "description": "Indica se é uma série especial",
        -  "type": "boolean"
        -}
      • addedOutput schema / properties / periodicidadeInferida
        Added value: +{
        +  "description": "Presente e true quando a periodicidade foi inferida do espaçamento das observações",
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / ultimoValor / description
        Previous value: -"Última observação disponível (fallback)"New value: +"Última observação disponível"
      • removedOutput schema / properties / unidade
        Removed value: -{
        -  "description": "Unidade de medida",
        -  "type": "string"
        -}
    • Changedbcb_serie_ultimos7 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • changedInput schema / properties / quantidade / description
        Previous value: -"Quantidade de valores a retornar (1-1000, padrão: 10)"New value: +"Quantidade de valores a retornar (1-1000, padrão: 10). A API do BCB tem teto de 20 no endpoint nativo; acima disso o servidor busca por janela de datas e devolve os N últimos."
      • removedOutput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • addedOutput schema / properties / chunking
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Presente quando a consulta foi fatiada em várias requisições à origem, por causa do limite de 10 anos por janela em séries diárias. As fatias são fundidas e ordenadas antes de responder.",
        +  "properties": {
        +    "fatiaAnos": {
        +      "description": "Largura máxima de cada janela, em anos",
        +      "type": "number"
        +    },
        +    "janelas": {
        +      "description": "Quantidade de janelas consultadas",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "janelas",
        +    "fatiaAnos"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / serie / description
        Added value: +"Identificação da série temporal"
      • changedOutput schema / properties / serie / properties / periodicidade / description
        Previous value: -"Periodicidade da série"New value: +"Periodicidade (Diária, Mensal, etc.)"
      • addedOutput schema / properties / serie / properties / periodicidadeInferida
        Added value: +{
        +  "description": "Presente e true quando a periodicidade foi inferida do espaçamento das observações, e não lida do catálogo — a API do SGS não publica metadados de série.",
        +  "type": "boolean"
        +}
    • Changedbcb_serie_valores11 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • addedInput schema / properties / agregacao
        Added value: +{
        +  "default": "ultimo",
        +  "description": "Como agregar os valores de cada período quando `frequencia` é informada. `ultimo` (padrão) serve a nível de preço, taxa e índice; `soma` a fluxo; `acumulada` a séries que JÁ SÃO variação percentual (IPCA mensal, por exemplo), compondo geometricamente — somar 12 variações mensais NÃO dá a inflação do ano.",
        +  "enum": [
        +    "ultimo",
        +    "primeiro",
        +    "media",
        +    "soma",
        +    "acumulada"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / frequencia
        Added value: +{
        +  "description": "Opcional: reamostra a série para esta frequência antes de responder (só agrega para períodos MAIORES; pedir frequência mais fina que a da série é recusado). Útil para comparar séries de periodicidades diferentes.",
        +  "enum": [
        +    "mensal",
        +    "trimestral",
        +    "anual"
        +  ],
        +  "type": "string"
        +}
      • removedOutput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • addedOutput schema / properties / chunking
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Presente quando a consulta foi fatiada em várias requisições à origem, por causa do limite de 10 anos por janela em séries diárias. As fatias são fundidas e ordenadas antes de responder.",
        +  "properties": {
        +    "fatiaAnos": {
        +      "description": "Largura máxima de cada janela, em anos",
        +      "type": "number"
        +    },
        +    "janelas": {
        +      "description": "Quantidade de janelas consultadas",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "janelas",
        +    "fatiaAnos"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / dados / items / properties / observacoes
        Added value: +{
        +  "description": "Só em resposta harmonizada: observações de origem agregadas neste ponto",
        +  "type": "number"
        +}
      • addedOutput schema / properties / harmonizacao
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Presente quando `frequencia` foi informada: descreve a reamostragem aplicada. Valor DERIVADO — calculado por este servidor, não publicado pelo Banco Central.",
        +  "properties": {
        +    "agregacao": {
        +      "description": "Convenção usada para agregar os valores de cada período",
        +      "enum": [
        +        "ultimo",
        +        "primeiro",
        +        "media",
        +        "soma",
        +        "acumulada"
        +      ],
        +      "type": "string"
        +    },
        +    "derived": {
        +      "description": "Sempre true: o valor é derivado, não publicado pela fonte",
        +      "type": "boolean"
        +    },
        +    "frequencia": {
        +      "description": "Frequência de destino",
        +      "enum": [
        +        "mensal",
        +        "trimestral",
        +        "anual"
        +      ],
        +      "type": "string"
        +    },
        +    "nota": {
        +      "description": "Descrição em prosa do que foi calculado",
        +      "type": "string"
        +    },
        +    "observacoesOriginais": {
        +      "description": "Observações antes da agregação",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "frequencia",
        +    "agregacao",
        +    "derived",
        +    "nota"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / janelaAplicada
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Presente quando o período pedido estava aberto numa série diária e o servidor aplicou uma janela própria (a origem recusa janela aberta em série diária com HTTP 406).",
        +  "properties": {
        +    "dataFinal": {
        +      "description": "Fim da janela efetivamente consultada (dd/MM/yyyy)",
        +      "type": "string"
        +    },
        +    "dataInicial": {
        +      "description": "Início da janela efetivamente consultada (dd/MM/yyyy)",
        +      "type": "string"
        +    },
        +    "motivo": {
        +      "description": "Por que a janela foi aplicada e como pedir outra",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "dataInicial",
        +    "dataFinal",
        +    "motivo"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / serie / description
        Added value: +"Identificação da série temporal"
      • changedOutput schema / properties / serie / properties / periodicidade / description
        Previous value: -"Periodicidade da série"New value: +"Periodicidade (Diária, Mensal, etc.)"
      • addedOutput schema / properties / serie / properties / periodicidadeInferida
        Added value: +{
        +  "description": "Presente e true quando a periodicidade foi inferida do espaçamento das observações, e não lida do catálogo — a API do SGS não publica metadados de série.",
        +  "type": "boolean"
        +}
    • Changedbcb_series_populares4 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • removedOutput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • changedOutput schema / properties / series / anyOf
        Previous value: -[
        -  {
        -    "items": {
        -      "additionalProperties": false,
        -      "properties": {
        -        "categoria": {
        -          "description": "Categoria econômica",
        -          "type": "string"
        -        },
        -        "codigo": {
        -          "description": "Código da série no SGS/BCB",
        -          "type": "number"
        -        },
        -        "nome": {
        -          "description": "Nome da série",
        -          "type": "string"
        -        },
        -        "periodicidade": {
        -          "description": "Periodicidade da série",
        -          "type": "string"
        -        }
        -      },
        -      "required": [
        -        "codigo",
        -        "nome"
        -      ],
        -      "type": "object"
        -    },
        -    "type": "array"
        -  },
        -  {
        -    "additionalProperties": {
        -      "items": {
        -        "$ref": "#/properties/series/anyOf/0/items"
        -      },
        -      "type": "array"
        -    },
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "items": {
        +      "additionalProperties": false,
        +      "description": "Identificação da série temporal",
        +      "properties": {
        +        "categoria": {
        +          "description": "Categoria econômica",
        +          "type": "string"
        +        },
        +        "codigo": {
        +          "description": "Código da série no SGS/BCB",
        +          "type": "number"
        +        },
        +        "nome": {
        +          "description": "Nome da série",
        +          "type": "string"
        +        },
        +        "periodicidade": {
        +          "description": "Periodicidade (Diária, Mensal, etc.)",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "codigo",
        +        "nome"
        +      ],
        +      "type": "object"
        +    },
        +    "type": "array"
        +  },
        +  {
        +    "additionalProperties": {
        +      "items": {
        +        "additionalProperties": false,
        +        "description": "Identificação da série temporal",
        +        "properties": {
        +          "categoria": {
        +            "description": "Categoria econômica",
        +            "type": "string"
        +          },
        +          "codigo": {
        +            "description": "Código da série no SGS/BCB",
        +            "type": "number"
        +          },
        +          "nome": {
        +            "description": "Nome da série",
        +            "type": "string"
        +          },
        +          "periodicidade": {
        +            "description": "Periodicidade (Diária, Mensal, etc.)",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "codigo",
        +          "nome"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "type": "object"
        +  }
        +]
      • changedOutput schema / properties / series / description
        Previous value: -"Séries encontradas (array quando filtrado; objeto agrupado por categoria caso contrário)"New value: +"Séries encontradas. Objeto agrupado por categoria quando sem filtro; array plano quando filtrado por categoria."
    • Changedbcb_variacao7 fields changed
      • removedInput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • changedInput schema / properties / periodos / description
        Previous value: -"Alternativa: calcular variação dos últimos N períodos (ignora datas se informado)"New value: +"Alternativa: calcular variação dos últimos N períodos (ignora datas se informado). Acima de 20 o servidor busca por janela de datas, porque o endpoint nativo do BCB tem esse teto."
      • removedOutput schema / $schema
        Removed value: -"http://json-schema.org/draft-07/schema#"
      • addedOutput schema / properties / chunking
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Presente quando a consulta foi fatiada em várias requisições à origem, por causa do limite de 10 anos por janela em séries diárias. As fatias são fundidas e ordenadas antes de responder.",
        +  "properties": {
        +    "fatiaAnos": {
        +      "description": "Largura máxima de cada janela, em anos",
        +      "type": "number"
        +    },
        +    "janelas": {
        +      "description": "Quantidade de janelas consultadas",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "janelas",
        +    "fatiaAnos"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / derivacao
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Origem dos números calculados: o que é derivado, por qual motor e com quais convenções",
        +  "properties": {
        +    "derived": {
        +      "description": "Sempre true: há número calculado nesta resposta",
        +      "type": "boolean"
        +    },
        +    "motor": {
        +      "description": "Componente que computou a estatística",
        +      "type": "string"
        +    },
        +    "nota": {
        +      "description": "Convenções de cálculo e arredondamento, em prosa",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "derived",
        +    "motor",
        +    "nota"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / janelaAplicada
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Presente quando o período pedido estava aberto numa série diária e o servidor aplicou uma janela própria (a origem recusa janela aberta em série diária com HTTP 406).",
        +  "properties": {
        +    "dataFinal": {
        +      "description": "Fim da janela efetivamente consultada (dd/MM/yyyy)",
        +      "type": "string"
        +    },
        +    "dataInicial": {
        +      "description": "Início da janela efetivamente consultada (dd/MM/yyyy)",
        +      "type": "string"
        +    },
        +    "motivo": {
        +      "description": "Por que a janela foi aplicada e como pedir outra",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "dataInicial",
        +    "dataFinal",
        +    "motivo"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "serie",
        -  "periodo",
        -  "analise",
        -  "estatisticas"
        -]New value: +[
        +  "serie",
        +  "periodo",
        +  "analise",
        +  "estatisticas",
        +  "derivacao"
        +]
  6. 8 tool updatesv1.3.5
    • Changedbcb_buscar_serie1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "mensagem": {
        +      "description": "Mensagem exibida quando nada é encontrado",
        +      "type": "string"
        +    },
        +    "series": {
        +      "description": "Séries que correspondem ao termo",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "categoria": {
        +            "description": "Categoria econômica",
        +            "type": "string"
        +          },
        +          "codigo": {
        +            "description": "Código da série no SGS/BCB",
        +            "type": "number"
        +          },
        +          "nome": {
        +            "description": "Nome da série",
        +            "type": "string"
        +          },
        +          "periodicidade": {
        +            "description": "Periodicidade da série",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "codigo",
        +          "nome"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "sugestao": {
        +      "description": "Sugestões de termos alternativos",
        +      "type": "string"
        +    },
        +    "termo": {
        +      "description": "Termo pesquisado",
        +      "type": "string"
        +    },
        +    "totalEncontradas": {
        +      "description": "Quantidade de séries encontradas",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "termo",
        +    "totalEncontradas",
        +    "series"
        +  ],
        +  "type": "object"
        +}
    • Changedbcb_comparar1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "erros": {
        +      "description": "Séries que não retornaram dados, com o motivo",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "codigo": {
        +            "type": "number"
        +          },
        +          "erro": {
        +            "type": "string"
        +          },
        +          "nome": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "codigo",
        +          "erro"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "periodo": {
        +      "additionalProperties": false,
        +      "description": "Janela temporal comparada",
        +      "properties": {
        +        "dataFinal": {
        +          "type": "string"
        +        },
        +        "dataInicial": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "dataInicial",
        +        "dataFinal"
        +      ],
        +      "type": "object"
        +    },
        +    "ranking": {
        +      "description": "Séries ordenadas pela variação percentual (maior para menor)",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "categoria": {
        +            "type": "string"
        +          },
        +          "codigo": {
        +            "type": "number"
        +          },
        +          "maximo": {
        +            "type": "number"
        +          },
        +          "media": {
        +            "type": "number"
        +          },
        +          "minimo": {
        +            "type": "number"
        +          },
        +          "nome": {
        +            "type": "string"
        +          },
        +          "periodicidade": {
        +            "type": "string"
        +          },
        +          "posicao": {
        +            "type": "number"
        +          },
        +          "totalRegistros": {
        +            "type": "number"
        +          },
        +          "valorFinal": {
        +            "type": "number"
        +          },
        +          "valorInicial": {
        +            "type": "number"
        +          },
        +          "variacaoFormatada": {
        +            "type": "string"
        +          },
        +          "variacaoPercentual": {
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "posicao",
        +          "codigo",
        +          "nome"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "seriesComDados": {
        +      "description": "Quantidade de séries com dados no período",
        +      "type": "number"
        +    },
        +    "seriesComErro": {
        +      "description": "Quantidade de séries sem dados ou com erro",
        +      "type": "number"
        +    },
        +    "totalSeries": {
        +      "description": "Quantidade de séries solicitadas",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "periodo",
        +    "totalSeries",
        +    "seriesComDados",
        +    "seriesComErro",
        +    "ranking",
        +    "erros"
        +  ],
        +  "type": "object"
        +}
    • Changedbcb_indicadores_atuais1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "consultadoEm": {
        +      "description": "Timestamp ISO 8601 da consulta",
        +      "type": "string"
        +    },
        +    "indicadores": {
        +      "description": "Indicadores com seus valores mais recentes",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "codigo": {
        +            "description": "Código da série no SGS/BCB",
        +            "type": "number"
        +          },
        +          "data": {
        +            "description": "Data da observação",
        +            "type": "string"
        +          },
        +          "erro": {
        +            "description": "Mensagem de erro quando indisponível",
        +            "type": "string"
        +          },
        +          "indicador": {
        +            "description": "Nome do indicador",
        +            "type": "string"
        +          },
        +          "valor": {
        +            "description": "Valor mais recente",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "indicador",
        +          "codigo"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "consultadoEm",
        +    "indicadores"
        +  ],
        +  "type": "object"
        +}
    • Changedbcb_serie_metadados1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "categoria": {
        +      "description": "Categoria econômica",
        +      "type": "string"
        +    },
        +    "codigo": {
        +      "description": "Código da série no SGS/BCB",
        +      "type": "number"
        +    },
        +    "especial": {
        +      "description": "Indica se é uma série especial",
        +      "type": "boolean"
        +    },
        +    "fonte": {
        +      "description": "Fonte dos dados",
        +      "type": "string"
        +    },
        +    "nome": {
        +      "description": "Nome da série",
        +      "type": "string"
        +    },
        +    "observacao": {
        +      "description": "Observação sobre a origem dos metadados",
        +      "type": "string"
        +    },
        +    "periodicidade": {
        +      "description": "Periodicidade da série",
        +      "type": "string"
        +    },
        +    "ultimoValor": {
        +      "additionalProperties": false,
        +      "description": "Última observação disponível (fallback)",
        +      "properties": {
        +        "data": {
        +          "description": "Data da observação (dd/MM/yyyy)",
        +          "type": "string"
        +        },
        +        "valor": {
        +          "description": "Valor numérico da observação",
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "data",
        +        "valor"
        +      ],
        +      "type": "object"
        +    },
        +    "unidade": {
        +      "description": "Unidade de medida",
        +      "type": "string"
        +    },
        +    "urlConsulta": {
        +      "description": "URL da API do BCB para consulta completa",
        +      "type": "string"
        +    },
        +    "urlUltimos10": {
        +      "description": "URL da API do BCB para os últimos 10 valores",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "codigo",
        +    "nome",
        +    "fonte"
        +  ],
        +  "type": "object"
        +}
    • Changedbcb_serie_ultimos1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "dados": {
        +      "description": "Observações mais recentes",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "data": {
        +            "description": "Data da observação (dd/MM/yyyy)",
        +            "type": "string"
        +          },
        +          "valor": {
        +            "description": "Valor numérico da observação",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "data",
        +          "valor"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "observacao": {
        +      "description": "Mensagem informativa (ex.: quando não há dados)",
        +      "type": "string"
        +    },
        +    "serie": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "categoria": {
        +          "description": "Categoria econômica",
        +          "type": "string"
        +        },
        +        "codigo": {
        +          "description": "Código da série no SGS/BCB",
        +          "type": "number"
        +        },
        +        "nome": {
        +          "description": "Nome da série",
        +          "type": "string"
        +        },
        +        "periodicidade": {
        +          "description": "Periodicidade da série",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "codigo",
        +        "nome"
        +      ],
        +      "type": "object"
        +    },
        +    "totalRegistros": {
        +      "description": "Quantidade de observações retornadas",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "serie",
        +    "totalRegistros",
        +    "dados"
        +  ],
        +  "type": "object"
        +}
    • Changedbcb_serie_valores1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "dados": {
        +      "description": "Observações históricas",
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "data": {
        +            "description": "Data da observação (dd/MM/yyyy)",
        +            "type": "string"
        +          },
        +          "valor": {
        +            "description": "Valor numérico da observação",
        +            "type": "number"
        +          }
        +        },
        +        "required": [
        +          "data",
        +          "valor"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "observacao": {
        +      "description": "Mensagem informativa (ex.: quando não há dados)",
        +      "type": "string"
        +    },
        +    "periodoFinal": {
        +      "description": "Data da última observação",
        +      "type": "string"
        +    },
        +    "periodoInicial": {
        +      "description": "Data da primeira observação",
        +      "type": "string"
        +    },
        +    "serie": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "categoria": {
        +          "description": "Categoria econômica",
        +          "type": "string"
        +        },
        +        "codigo": {
        +          "description": "Código da série no SGS/BCB",
        +          "type": "number"
        +        },
        +        "nome": {
        +          "description": "Nome da série",
        +          "type": "string"
        +        },
        +        "periodicidade": {
        +          "description": "Periodicidade da série",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "codigo",
        +        "nome"
        +      ],
        +      "type": "object"
        +    },
        +    "totalRegistros": {
        +      "description": "Quantidade de observações retornadas",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "serie",
        +    "totalRegistros",
        +    "dados"
        +  ],
        +  "type": "object"
        +}
    • Changedbcb_series_populares1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "categorias": {
        +      "description": "Quantidade de categorias distintas",
        +      "type": "number"
        +    },
        +    "observacao": {
        +      "description": "Dica de uso",
        +      "type": "string"
        +    },
        +    "series": {
        +      "anyOf": [
        +        {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "categoria": {
        +                "description": "Categoria econômica",
        +                "type": "string"
        +              },
        +              "codigo": {
        +                "description": "Código da série no SGS/BCB",
        +                "type": "number"
        +              },
        +              "nome": {
        +                "description": "Nome da série",
        +                "type": "string"
        +              },
        +              "periodicidade": {
        +                "description": "Periodicidade da série",
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "codigo",
        +              "nome"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        },
        +        {
        +          "additionalProperties": {
        +            "items": {
        +              "$ref": "#/properties/series/anyOf/0/items"
        +            },
        +            "type": "array"
        +          },
        +          "type": "object"
        +        }
        +      ],
        +      "description": "Séries encontradas (array quando filtrado; objeto agrupado por categoria caso contrário)"
        +    },
        +    "totalSeries": {
        +      "description": "Quantidade total de séries retornadas",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "totalSeries",
        +    "categorias",
        +    "series"
        +  ],
        +  "type": "object"
        +}
    • Changedbcb_variacao1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "analise": {
        +      "additionalProperties": false,
        +      "description": "Resultado da variação entre o primeiro e o último valor",
        +      "properties": {
        +        "diferencaAbsoluta": {
        +          "type": "number"
        +        },
        +        "valorFinal": {
        +          "type": "number"
        +        },
        +        "valorInicial": {
        +          "type": "number"
        +        },
        +        "variacaoFormatada": {
        +          "type": "string"
        +        },
        +        "variacaoPercentual": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "valorInicial",
        +        "valorFinal",
        +        "diferencaAbsoluta",
        +        "variacaoPercentual",
        +        "variacaoFormatada"
        +      ],
        +      "type": "object"
        +    },
        +    "estatisticas": {
        +      "additionalProperties": false,
        +      "description": "Estatísticas descritivas dos valores no período",
        +      "properties": {
        +        "amplitude": {
        +          "type": "number"
        +        },
        +        "maximo": {
        +          "type": "number"
        +        },
        +        "media": {
        +          "type": "number"
        +        },
        +        "minimo": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "maximo",
        +        "minimo",
        +        "media",
        +        "amplitude"
        +      ],
        +      "type": "object"
        +    },
        +    "periodo": {
        +      "additionalProperties": false,
        +      "description": "Janela temporal analisada",
        +      "properties": {
        +        "dataFinal": {
        +          "type": "string"
        +        },
        +        "dataInicial": {
        +          "type": "string"
        +        },
        +        "totalPeriodos": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "dataInicial",
        +        "dataFinal",
        +        "totalPeriodos"
        +      ],
        +      "type": "object"
        +    },
        +    "serie": {
        +      "additionalProperties": false,
        +      "description": "Identificação da série",
        +      "properties": {
        +        "categoria": {
        +          "type": "string"
        +        },
        +        "codigo": {
        +          "type": "number"
        +        },
        +        "nome": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "codigo",
        +        "nome"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "serie",
        +    "periodo",
        +    "analise",
        +    "estatisticas"
        +  ],
        +  "type": "object"
        +}
  7. 8 tool updatesv1.0.0
    • First observedbcb_buscar_serie
    • First observedbcb_comparar
    • First observedbcb_indicadores_atuais
    • First observedbcb_serie_metadados
    • First observedbcb_serie_ultimos
    • First observedbcb_serie_valores
    • First observedbcb_series_populares
    • First observedbcb_variacao

TDQS

A4.6/5.0

Scored across 17 tools

Disambiguation5/5

Every tool has a clearly distinct purpose, and the descriptions go further with explicit 'Quando usar / Quando NÃO usar' sections plus cross-references (e.g. bcb_serie_ultimos vs bcb_serie_valores vs bcb_serie_metadados; bcb_variacao vs bcb_comparar vs bcb_correlacao). The boundary between the data tools and the Deep Research search/fetch pair is also stated explicitly. Overlap that would otherwise exist (multiple ways to get a series) is resolved in-text.

Naming Consistency4/5

15 of 17 tools use a consistent bcb_ prefix with snake_case, strongly signaling a single server family. Within that, the pattern mixes resource-first (bcb_serie_valores, bcb_cambio_cotacao) and verb-first (bcb_buscar_serie, bcb_comparar), which is readable but not a single template. The bare English search/fetch break the prefix convention, though they are deliberately carved out for the Deep Research contract.

Tool Count4/5

17 tools is on the higher side but each one earns its place across genuinely distinct sub-domains (series discovery/values/derived analytics, Focus expectations, PTAX cambio, and the search/fetch pair). The set is cohesive rather than padded; a couple of fixtures like bcb_indicadores_atuais and bcb_series_populares are convenience shortcuts that could be argued as redundant but are clearly scoped.

Completeness5/5

The surface covers the full lifecycle: discovery (bcb_buscar_serie, bcb_series_populares), metadata (bcb_serie_metadados), raw data (bcb_serie_valores, bcb_serie_ultimos), derived analytics (bcb_variacao, bcb_comparar, bcb_correlacao, bcb_deflacionar), Focus expectations including a reference vocabulary tool, and cambio quotes plus currency lookup. Endpoints for guidance when a query would be empty are provided, so there are no obvious dead ends.

Maintenance

ActivityActive
ResponsivenessWithin a week

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that provides tools to search and retrieve economic data series from the Federal Reserve Economic Data (FRED) API.
    2
    157 npm
    11
    AGPL 3.0
  • A
    license
    C
    quality
    A
    maintenance
    Enables AI assistants to access and analyze financial data including stock information, company fundamentals, and market insights through the Financial Modeling Prep API.
    267
    867 npm
    150
    TypeScript
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides AI assistants with access to comprehensive financial data including real-time stock quotes, company fundamentals, financial statements, market analysis, SEC filings, and economic indicators through 253+ tools across 24 categories.
    867 npm
    Apache 2.0