MCP 서버

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

io.github.SidneyBissoli/bcb-br-mcp

이 MCP로 할 수 있는 일

Queries Banco Central do Brasil time series, exchange rates, Focus expectations, economic indicators, historical values, comparisons, correlations, and inflation-adjusted data.

bcb_buscar_serie
Buscar série no catálogo
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.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', 'required': ['termo'], 'properties': {'termo': {'type': 'string', 'minLength': 2, 'description': 'Termo de busca (mÃ\xadnimo 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â\x86\x92resultado primário, caloteâ\x86\x92inadimplência, desempregoâ\x86\x92desocupação) e a resposta diz quando isso aconteceu (notasVocabulario).'}, 'limite': {'type': 'number', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Máximo de séries a devolver (1-100, padrão: 20). `totalEncontradas` traz o total antes do corte.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['termo', 'totalEncontradas', 'series', 'catalogo', 'provenance', 'attribution'], 'properties': {'termo': {'type': 'string', 'description': 'Termo pesquisado'}, 'avisos': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Avisos de degradação (Ã\xadndice vencido ou indisponÃ\xadvel)'}, 'series': {'type': 'array', 'items': {'type': 'object', 'required': ['codigo', 'nome', 'origem'], 'properties': {'nome': {'type': 'string', 'description': 'Nome da série (revisado quando `origem` = curado; derivado do slug do portal quando = indice)'}, 'codigo': {'type': 'number', 'description': 'Código da série no SGS/BCB'}, 'origem': {'enum': ['curado', 'indice'], 'type': 'string', 'description': 'Camada de onde veio o achado'}, 'dataset': {'type': 'string', 'description': 'Página do dataset no portal de dados abertos (só quando `origem` = indice)'}, 'categoria': {'type': 'string', 'description': 'Categoria econômica (só no catálogo curado)'}, 'fonteNome': {'enum': ['portal', 'medido'], 'type': 'string', '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."}, 'periodicidade': {'type': 'string', 'description': 'Periodicidade (só no catálogo curado)'}}, 'additionalProperties': False}, 'description': 'Séries que correspondem ao termo â\x80\x94 as do catálogo curado primeiro'}, 'catalogo': {'type': 'object', 'required': ['origem', 'seriesIndexadas', 'cobertura'], 'properties': {'origem': {'type': 'string', 'description': 'Camadas consultadas'}, 'obtidoEm': {'type': 'string', 'description': 'Timestamp ISO 8601 em que o Ã\xadndice do portal foi obtido'}, 'cobertura': {'type': 'string', 'description': 'Limite explÃ\xadcito de cobertura do Ã\xadndice'}, 'seriesIndexadas': {'type': 'number', 'description': 'Quantidade de séries no Ã\xadndice consultado'}}, 'description': 'Proveniência do Ã\xadndice usado na busca', 'additionalProperties': False}, 'mensagem': {'type': 'string', 'description': 'Mensagem exibida quando nada é encontrado'}, 'sugestao': {'type': 'string', 'description': 'Sugestões de termos alternativos'}, 'observacao': {'type': 'string', 'description': 'Aviso de corte quando há mais resultados que `limite`'}, 'provenance': {'type': 'array', 'items': {'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string', 'description': 'Fonte oficial do dado'}, 'license': {'type': ['string', 'null'], 'description': 'Regime legal do dado (id SPDX quando há, senão o nome da licença)'}, 'citation': {'type': 'string', 'description': 'Citação/atribuição pronta para uso'}, 'retrieval': {'oneOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'minimum': 1, 'description': 'Tentativas somadas, incluindo as repetidas (>= requests)'}, 'requests': {'type': 'integer', 'minimum': 1, 'description': 'Idas distintas Ã\xa0 origem que compõem esta resposta (fatias, páginas)'}, 'unstable': {'type': 'boolean', 'description': 'true se houve repetição (attempts > requests) ou alguma anomalia'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string', 'description': 'Classe da anomalia (vocabulário fechado do contrato)'}, 'count': {'type': 'integer', 'minimum': 1, 'description': 'Ocorrências desta classe na chamada'}}, 'additionalProperties': False}, 'description': 'Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma'}}, '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', 'additionalProperties': False}, {'type': 'null'}], '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'}, 'source_url': {'type': 'string', 'description': 'URL canônica que reproduz a consulta na fonte'}, 'data_vintage': {'type': ['string', 'null'], 'description': 'Competência/vintage do dado segundo a fonte; null quando a fonte não expõe'}, 'retrieved_at': {'type': 'string', 'description': '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'}}, 'description': 'Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença', 'additionalProperties': False}, 'description': 'Um bloco por procedência que contribuiu com esta resposta (contrato v1.1; licenças nunca se fundem)'}, 'attribution': {'type': 'array', 'items': {'type': 'string'}, 'description': 'URLs canônicas das fontes desta resposta (lista de atribuição)'}, 'notasVocabulario': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Quando um termo foi ampliado para a palavra que o BCB usa (déficitâ\x86\x92resultado primário), diz qual'}, 'totalEncontradas': {'type': 'number', 'description': 'Quantidade de séries encontradas, antes do corte por `limite`'}}, 'additionalProperties': False}
bcb_cambio_cotacao
Cotação de câmbio (PTAX)
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.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', 'properties': {'data': {'type': 'string', 'description': 'Dia especÃ\xadfico (yyyy-MM-dd ou dd/MM/yyyy). Não combine com dataInicial/dataFinal.'}, 'moeda': {'type': 'string', 'default': 'USD', 'description': 'SÃ\xadmbolo da moeda (ex.: USD, EUR, GBP, JPY). Padrão: USD.'}, 'limite': {'type': 'number', 'default': 100, 'maximum': 1000, 'minimum': 1, 'description': 'Máximo de boletins a devolver (1-1000, padrão 100)'}, 'dataFinal': {'type': 'string', 'description': 'Fim do intervalo (yyyy-MM-dd ou dd/MM/yyyy). Padrão: hoje.'}, 'dataInicial': {'type': 'string', 'description': 'InÃ\xadcio do intervalo (yyyy-MM-dd ou dd/MM/yyyy). Padrão: 7 dias antes do fim.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['moeda', 'periodo', 'totalRegistros', 'cotacoes', 'disclaimer', 'urlConsulta', 'consultadoEm', 'provenance', 'attribution'], 'properties': {'moeda': {'type': 'string'}, 'periodo': {'type': 'object', 'required': ['dataInicial', 'dataFinal', 'janelaPadrao'], 'properties': {'dataFinal': {'type': 'string'}, 'dataInicial': {'type': 'string'}, 'janelaPadrao': {'type': 'boolean', 'description': 'true quando a janela de 7 dias foi assumida'}}, 'additionalProperties': False}, 'cotacoes': {'type': 'array', 'items': {'type': 'object', 'required': ['dataHora'], 'properties': {'dataHora': {'type': ['string', 'null'], 'description': 'Data e hora da cotação'}, 'tipoBoletim': {'type': ['string', 'null'], 'description': 'Tipo de boletim (ex.: Fechamento, Abertura, Intermediário). Nulo em USD: a fonte não publica este campo nos recursos de dólar, só nos de moeda.'}, 'cotacaoVenda': {'type': ['number', 'null']}, 'cotacaoCompra': {'type': ['number', 'null']}, 'paridadeVenda': {'type': ['number', 'null'], 'description': 'Paridade de venda contra o USD (moedas não-dólar; origem: agência de informação)'}, 'paridadeCompra': {'type': ['number', 'null'], 'description': 'Paridade de compra contra o USD (moedas não-dólar; origem: agência de informação)'}}, 'additionalProperties': False}}, 'disclaimer': {'type': 'string', 'description': 'Disclaimer de responsabilidade do BCB, repassado literalmente'}, 'observacao': {'type': 'string'}, 'provenance': {'type': 'array', 'items': {'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string', 'description': 'Fonte oficial do dado'}, 'license': {'type': ['string', 'null'], 'description': 'Regime legal do dado (id SPDX quando há, senão o nome da licença)'}, 'citation': {'type': 'string', 'description': 'Citação/atribuição pronta para uso'}, 'retrieval': {'oneOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'minimum': 1, 'description': 'Tentativas somadas, incluindo as repetidas (>= requests)'}, 'requests': {'type': 'integer', 'minimum': 1, 'description': 'Idas distintas Ã\xa0 origem que compõem esta resposta (fatias, páginas)'}, 'unstable': {'type': 'boolean', 'description': 'true se houve repetição (attempts > requests) ou alguma anomalia'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string', 'description': 'Classe da anomalia (vocabulário fechado do contrato)'}, 'count': {'type': 'integer', 'minimum': 1, 'description': 'Ocorrências desta classe na chamada'}}, 'additionalProperties': False}, 'description': 'Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma'}}, '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', 'additionalProperties': False}, {'type': 'null'}], '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'}, 'source_url': {'type': 'string', 'description': 'URL canônica que reproduz a consulta na fonte'}, 'data_vintage': {'type': ['string', 'null'], 'description': 'Competência/vintage do dado segundo a fonte; null quando a fonte não expõe'}, 'retrieved_at': {'type': 'string', 'description': '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'}}, 'description': 'Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença', 'additionalProperties': False}, 'description': 'Um bloco por procedência que contribuiu com esta resposta (contrato v1.1; licenças nunca se fundem)'}, 'attribution': {'type': 'array', 'items': {'type': 'string'}, 'description': 'URLs canônicas das fontes desta resposta (lista de atribuição)'}, 'urlConsulta': {'type': 'string'}, 'consultadoEm': {'type': 'string'}, 'totalRegistros': {'type': 'number'}, 'qualificacaoParidade': {'type': 'string', 'description': 'Qualificação da origem das paridades não-dólar'}}, 'additionalProperties': False}
bcb_cambio_moedas
Moedas com cotação no BCB
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.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', 'properties': {'termo': {'type': 'string', 'description': "Filtro por sÃ\xadmbolo ou nome (ex.: 'EUR', 'libra'). Opcional."}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['totalMoedas', 'moedas', 'disclaimer', 'urlConsulta', 'consultadoEm', 'provenance', 'attribution'], 'properties': {'termo': {'type': ['string', 'null'], 'description': 'Termo aplicado no filtro; nulo quando não foi informado'}, 'moedas': {'type': 'array', 'items': {'type': 'object', 'required': ['simbolo'], 'properties': {'nome': {'type': ['string', 'null']}, 'tipo': {'type': ['string', 'null'], 'description': 'Tipo da moeda conforme a fonte (A ou B)'}, 'simbolo': {'type': ['string', 'null'], 'description': 'SÃ\xadmbolo a usar em bcb_cambio_cotacao'}}, 'additionalProperties': False}}, 'disclaimer': {'type': 'string'}, 'observacao': {'type': 'string'}, 'provenance': {'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string', 'description': 'Fonte oficial do dado'}, 'license': {'type': ['string', 'null'], 'description': 'Regime legal do dado (id SPDX quando há, senão o nome da licença)'}, 'citation': {'type': 'string', 'description': 'Citação/atribuição pronta para uso'}, 'retrieval': {'oneOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'minimum': 1, 'description': 'Tentativas somadas, incluindo as repetidas (>= requests)'}, 'requests': {'type': 'integer', 'minimum': 1, 'description': 'Idas distintas Ã\xa0 origem que compõem esta resposta (fatias, páginas)'}, 'unstable': {'type': 'boolean', 'description': 'true se houve repetição (attempts > requests) ou alguma anomalia'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string', 'description': 'Classe da anomalia (vocabulário fechado do contrato)'}, 'count': {'type': 'integer', 'minimum': 1, 'description': 'Ocorrências desta classe na chamada'}}, 'additionalProperties': False}, 'description': 'Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma'}}, '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', 'additionalProperties': False}, {'type': 'null'}], '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'}, 'source_url': {'type': 'string', 'description': 'URL canônica que reproduz a consulta na fonte'}, 'data_vintage': {'type': ['string', 'null'], 'description': 'Competência/vintage do dado segundo a fonte; null quando a fonte não expõe'}, 'retrieved_at': {'type': 'string', 'description': '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'}}, 'description': 'Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença', 'additionalProperties': False}, 'attribution': {'type': 'array', 'items': {'type': 'string'}, 'description': 'URLs canônicas das fontes desta resposta (lista de atribuição)'}, 'totalMoedas': {'type': 'number'}, 'urlConsulta': {'type': 'string'}, 'consultadoEm': {'type': 'string'}, 'qualificacaoParidade': {'type': 'string'}}, 'additionalProperties': False}
bcb_comparar
Comparar séries
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).
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', 'required': ['codigos', 'dataInicial', 'dataFinal'], 'properties': {'codigos': {'type': 'array', 'items': {'type': 'number'}, 'maxItems': 5, 'minItems': 2, 'description': 'Array com 2 a 5 códigos de séries para comparar'}, 'agregacao': {'enum': ['ultimo', 'primeiro', 'media', 'soma', 'acumulada'], 'type': 'string', 'default': 'ultimo', 'description': 'Como agregar os valores de cada perÃ\xadodo quando `frequencia` é informada. `ultimo` (padrão) serve a nÃ\xadvel de preço, taxa e Ã\xadndice; `soma` a fluxo; `acumulada` a séries que JÃ\x81 SÃ\x83O variação percentual (IPCA mensal, por exemplo), compondo geometricamente â\x80\x94 somar 12 variações mensais NÃ\x83O dá a inflação do ano.'}, 'dataFinal': {'type': 'string', 'description': 'Data final (yyyy-MM-dd ou dd/MM/yyyy)'}, 'frequencia': {'enum': ['mensal', 'trimestral', 'anual'], 'type': 'string', 'description': 'Opcional: reamostra a série para esta frequência antes de responder (só agrega para perÃ\xadodos MAIORES; pedir frequência mais fina que a da série é recusado). Ã\x9atil para comparar séries de periodicidades diferentes.'}, 'dataInicial': {'type': 'string', 'description': 'Data inicial (yyyy-MM-dd ou dd/MM/yyyy)'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['periodo', 'totalSeries', 'seriesComDados', 'seriesComErro', 'ranking', 'erros', 'derivacao', 'provenance', 'attribution'], 'properties': {'aviso': {'type': 'string', 'description': 'Presente quando as séries comparadas têm periodicidades diferentes e nenhuma harmonização foi pedida â\x80\x94 os números do ranking, nesse caso, não são diretamente comparáveis entre si.'}, 'erros': {'type': 'array', 'items': {'type': 'object', 'required': ['codigo', 'erro'], 'properties': {'erro': {'type': 'string'}, 'nome': {'type': 'string'}, 'codigo': {'type': 'number'}}, 'additionalProperties': False}, 'description': 'Séries que não retornaram dados, com o motivo'}, 'periodo': {'type': 'object', 'required': ['dataInicial', 'dataFinal'], 'properties': {'dataFinal': {'type': 'string'}, 'dataInicial': {'type': 'string'}}, 'description': 'Janela temporal comparada', 'additionalProperties': False}, 'ranking': {'type': 'array', 'items': {'type': 'object', 'required': ['posicao', 'codigo', 'nome'], 'properties': {'nome': {'type': 'string'}, 'media': {'type': 'number'}, 'codigo': {'type': 'number'}, 'maximo': {'type': 'number'}, 'metodo': {'enum': ['nivel', 'encadeamento'], 'type': 'string', 'description': 'Como a variação foi medida: `nivel` = (último â\x88\x92 primeiro) / primeiro, para série de nÃ\xadvel; `encadeamento` = acumulado composto de todas as observações, para série que já é uma variação percentual por perÃ\xadodo (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 â\x80\x94 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Ã\xadvel.'}, 'minimo': {'type': 'number'}, 'posicao': {'type': 'number', 'description': 'Posição no ranking'}, 'categoria': {'type': 'string'}, 'valorFinal': {'type': 'number'}, 'valorInicial': {'type': 'number'}, 'periodicidade': {'type': 'string'}, 'totalRegistros': {'type': 'number'}, 'variacaoFormatada': {'type': 'string'}, 'variacaoPercentual': {'type': 'number', 'description': 'Variação entre as pontas (metodo nivel) ou acumulado encadeado do perÃ\xadodo (metodo encadeamento), em %'}}, 'additionalProperties': False}, 'description': 'Séries ordenadas pela variação percentual (maior para menor)'}, 'derivacao': {'type': 'object', 'required': ['derived', 'motor', 'nota'], 'properties': {'nota': {'type': 'string', 'description': 'Convenções de cálculo e arredondamento, em prosa'}, 'motor': {'type': 'string', 'description': 'Componente que computou a estatÃ\xadstica'}, 'derived': {'type': 'boolean', 'description': 'Sempre true: há número calculado nesta resposta'}}, 'description': 'Origem dos números calculados: o que é derivado, por qual motor e com quais convenções', 'additionalProperties': False}, 'provenance': {'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string', 'description': 'Fonte oficial do dado'}, 'license': {'type': ['string', 'null'], 'description': 'Regime legal do dado (id SPDX quando há, senão o nome da licença)'}, 'citation': {'type': 'string', 'description': 'Citação/atribuição pronta para uso'}, 'retrieval': {'oneOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'minimum': 1, 'description': 'Tentativas somadas, incluindo as repetidas (>= requests)'}, 'requests': {'type': 'integer', 'minimum': 1, 'description': 'Idas distintas Ã\xa0 origem que compõem esta resposta (fatias, páginas)'}, 'unstable': {'type': 'boolean', 'description': 'true se houve repetição (attempts > requests) ou alguma anomalia'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string', 'description': 'Classe da anomalia (vocabulário fechado do contrato)'}, 'count': {'type': 'integer', 'minimum': 1, 'description': 'Ocorrências desta classe na chamada'}}, 'additionalProperties': False}, 'description': 'Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma'}}, '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', 'additionalProperties': False}, {'type': 'null'}], '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'}, 'source_url': {'type': 'string', 'description': 'URL canônica que reproduz a consulta na fonte'}, 'data_vintage': {'type': ['string', 'null'], 'description': 'Competência/vintage do dado segundo a fonte; null quando a fonte não expõe'}, 'retrieved_at': {'type': 'string', 'description': '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'}}, 'description': 'Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença', 'additionalProperties': False}, 'attribution': {'type': 'array', 'items': {'type': 'string'}, 'description': 'URLs canônicas das fontes desta resposta (lista de atribuição)'}, 'totalSeries': {'type': 'number', 'description': 'Quantidade de séries solicitadas'}, 'harmonizacao': {'type': 'object', 'required': ['frequencia', 'agregacao', 'derived', 'nota'], 'properties': {'nota': {'type': 'string', 'description': 'Descrição em prosa do que foi calculado'}, 'derived': {'type': 'boolean', 'description': 'Sempre true: o valor é derivado, não publicado pela fonte'}, 'agregacao': {'enum': ['ultimo', 'primeiro', 'media', 'soma', 'acumulada'], 'type': 'string', 'description': 'Convenção usada para agregar os valores de cada perÃ\xadodo'}, 'frequencia': {'enum': ['mensal', 'trimestral', 'anual'], 'type': 'string', 'description': 'Frequência de destino'}, 'observacoesOriginais': {'type': 'number', 'description': 'Observações antes da agregação'}}, 'description': 'Presente quando `frequencia` foi informada: descreve a reamostragem aplicada. Valor DERIVADO â\x80\x94 calculado por este servidor, não publicado pelo Banco Central.', 'additionalProperties': False}, 'seriesComErro': {'type': 'number', 'description': 'Quantidade de séries sem dados ou com erro'}, 'seriesComDados': {'type': 'number', 'description': 'Quantidade de séries com dados no perÃ\xadodo'}}, 'additionalProperties': False}
bcb_correlacao
Correlacionar séries
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).
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', 'required': ['codigos', 'dataInicial', 'dataFinal'], 'properties': {'base': {'enum': ['nivel', 'variacao'], 'type': 'string', 'default': 'nivel', 'description': '`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Ã\xadvel de duas séries crescentes tem correlação alta só porque ambas crescem com o tempo.'}, 'metodo': {'enum': ['pearson', 'spearman'], 'type': 'string', 'default': 'pearson', 'description': '`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.'}, 'codigos': {'type': 'array', 'items': {'type': 'number'}, 'maxItems': 5, 'minItems': 2, 'description': 'Array com 2 a 5 códigos de séries para correlacionar par a par'}, 'agregacao': {'enum': ['ultimo', 'primeiro', 'media', 'soma', 'acumulada'], 'type': 'string', 'default': 'ultimo', 'description': 'Como agregar os valores de cada perÃ\xadodo quando `frequencia` é informada. `ultimo` (padrão) serve a nÃ\xadvel de preço, taxa e Ã\xadndice; `soma` a fluxo; `acumulada` a séries que JÃ\x81 SÃ\x83O variação percentual (IPCA mensal, por exemplo), compondo geometricamente â\x80\x94 somar 12 variações mensais NÃ\x83O dá a inflação do ano.'}, 'dataFinal': {'type': 'string', 'description': 'Data final (yyyy-MM-dd ou dd/MM/yyyy)'}, 'frequencia': {'enum': ['mensal', 'trimestral', 'anual'], 'type': 'string', 'description': 'Opcional: reamostra a série para esta frequência antes de responder (só agrega para perÃ\xadodos MAIORES; pedir frequência mais fina que a da série é recusado). Ã\x9atil para comparar séries de periodicidades diferentes.'}, 'dataInicial': {'type': 'string', 'description': 'Data inicial (yyyy-MM-dd ou dd/MM/yyyy)'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['periodo', 'metodo', 'base', 'series', 'alinhamento', 'pares', 'erros', 'derivacao', 'provenance', 'attribution'], 'properties': {'base': {'enum': ['nivel', 'variacao'], 'type': 'string', 'description': 'Se o cálculo usou os valores ou as variações'}, 'erros': {'type': 'array', 'items': {'type': 'object', 'required': ['codigo', 'erro'], 'properties': {'erro': {'type': 'string'}, 'nome': {'type': 'string'}, 'codigo': {'type': 'number'}}, 'additionalProperties': False}, 'description': 'Séries que não retornaram dados, com o motivo'}, 'pares': {'type': 'array', 'items': {'type': 'object', 'required': ['codigoA', 'codigoB', 'coeficiente', 'n', 'descartados', 'interpretacao'], 'properties': {'n': {'type': 'number', 'description': 'Pares de valores efetivamente usados'}, 'nomeA': {'type': 'string'}, 'nomeB': {'type': 'string'}, 'motivo': {'type': 'string', 'description': 'Por que o coeficiente é `null`; ausente quando há coeficiente'}, 'codigoA': {'type': 'number'}, 'codigoB': {'type': 'number'}, 'coeficiente': {'type': ['number', 'null'], 'description': 'Coeficiente entre -1 e 1; `null` quando indefinido (ver `motivo`) â\x80\x94 nunca 0 por omissão'}, 'descartados': {'type': 'number', 'description': 'Datas descartadas por falta de valor em uma das pontas'}, 'interpretacao': {'type': ['string', 'null'], 'description': 'Leitura em prosa da força e do sentido; `null` quando não há coeficiente'}}, 'additionalProperties': False}, 'description': 'Um item por par de séries'}, 'metodo': {'enum': ['pearson', 'spearman'], 'type': 'string', 'description': 'Método aplicado'}, 'series': {'type': 'array', 'items': {'type': 'object', 'required': ['codigo', 'nome'], 'properties': {'nome': {'type': 'string'}, 'codigo': {'type': 'number'}, 'categoria': {'type': 'string'}, 'periodicidade': {'type': 'string'}, 'totalRegistros': {'type': 'number'}, 'periodicidadeInferida': {'type': 'boolean'}}, 'additionalProperties': False}, 'description': 'Séries que entraram no cálculo'}, 'periodo': {'type': 'object', 'required': ['dataInicial', 'dataFinal'], 'properties': {'dataFinal': {'type': 'string'}, 'dataInicial': {'type': 'string'}}, 'description': 'Janela temporal correlacionada', 'additionalProperties': False}, 'derivacao': {'type': 'object', 'required': ['derived', 'motor', 'nota'], 'properties': {'nota': {'type': 'string', 'description': 'Convenções de cálculo e arredondamento, em prosa'}, 'motor': {'type': 'string', 'description': 'Componente que computou a estatÃ\xadstica'}, 'derived': {'type': 'boolean', 'description': 'Sempre true: há número calculado nesta resposta'}}, 'description': 'Origem dos números calculados: o que é derivado, por qual motor e com quais convenções', 'additionalProperties': False}, 'provenance': {'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string', 'description': 'Fonte oficial do dado'}, 'license': {'type': ['string', 'null'], 'description': 'Regime legal do dado (id SPDX quando há, senão o nome da licença)'}, 'citation': {'type': 'string', 'description': 'Citação/atribuição pronta para uso'}, 'retrieval': {'oneOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'minimum': 1, 'description': 'Tentativas somadas, incluindo as repetidas (>= requests)'}, 'requests': {'type': 'integer', 'minimum': 1, 'description': 'Idas distintas Ã\xa0 origem que compõem esta resposta (fatias, páginas)'}, 'unstable': {'type': 'boolean', 'description': 'true se houve repetição (attempts > requests) ou alguma anomalia'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string', 'description': 'Classe da anomalia (vocabulário fechado do contrato)'}, 'count': {'type': 'integer', 'minimum': 1, 'description': 'Ocorrências desta classe na chamada'}}, 'additionalProperties': False}, 'description': 'Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma'}}, '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', 'additionalProperties': False}, {'type': 'null'}], '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'}, 'source_url': {'type': 'string', 'description': 'URL canônica que reproduz a consulta na fonte'}, 'data_vintage': {'type': ['string', 'null'], 'description': 'Competência/vintage do dado segundo a fonte; null quando a fonte não expõe'}, 'retrieved_at': {'type': 'string', 'description': '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'}}, 'description': 'Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença', 'additionalProperties': False}, 'alinhamento': {'type': 'object', 'required': ['datas', 'completas', 'parciais'], 'properties': {'datas': {'type': 'number', 'description': 'Datas distintas na união das séries'}, 'grade': {'type': 'string', 'description': 'Grade temporal usada no cruzamento'}, 'parciais': {'type': 'number', 'description': 'Datas em que ao menos uma série não publica'}, 'completas': {'type': 'number', 'description': 'Datas em que todas as séries publicam'}}, 'description': 'Como as grades foram cruzadas. `completas` é o que efetivamente entra num coeficiente: datas em que TODAS as séries publicam. A distância entre `datas` e `completas` é a medida de quanto as séries não se sobrepõem.', 'additionalProperties': False}, 'attribution': {'type': 'array', 'items': {'type': 'string'}, 'description': 'URLs canônicas das fontes desta resposta (lista de atribuição)'}, 'harmonizacao': {'type': 'object', 'required': ['frequencia', 'agregacao', 'derived', 'nota'], 'properties': {'nota': {'type': 'string', 'description': 'Descrição em prosa do que foi calculado'}, 'derived': {'type': 'boolean', 'description': 'Sempre true: o valor é derivado, não publicado pela fonte'}, 'agregacao': {'enum': ['ultimo', 'primeiro', 'media', 'soma', 'acumulada'], 'type': 'string', 'description': 'Convenção usada para agregar os valores de cada perÃ\xadodo'}, 'frequencia': {'enum': ['mensal', 'trimestral', 'anual'], 'type': 'string', 'description': 'Frequência de destino'}, 'observacoesOriginais': {'type': 'number', 'description': 'Observações antes da agregação'}}, 'description': 'Presente quando `frequencia` foi informada: descreve a reamostragem aplicada. Valor DERIVADO â\x80\x94 calculado por este servidor, não publicado pelo Banco Central.', 'additionalProperties': False}}, 'additionalProperties': False}
bcb_deflacionar
Deflacionar série (valores reais)
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).
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', 'required': ['codigo', 'dataInicial', 'dataFinal'], 'properties': {'codigo': {'type': 'number', 'description': 'Código da série NOMINAL a deflacionar (ex.: 1619 para salário mÃ\xadnimo)'}, 'indice': {'enum': ['ipca', 'inpc', 'igpm'], 'type': 'string', 'default': 'ipca', 'description': 'Ã\x8dndice de preços usado como deflator: IPCA (433), INPC (188) ou IGP-M (189)'}, 'mesBase': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}$', 'description': "Mês em cujos preços os valores serão expressos, no formato yyyy-MM. Sem ele, usa o último mês publicado do Ã\xadndice â\x80\x94 isto é, 'em reais de hoje'."}, 'agregacao': {'enum': ['ultimo', 'primeiro', 'media', 'soma', 'acumulada'], 'type': 'string', 'default': 'ultimo', 'description': 'Como agregar os valores de cada perÃ\xadodo quando `frequencia` é informada. `ultimo` (padrão) serve a nÃ\xadvel de preço, taxa e Ã\xadndice; `soma` a fluxo; `acumulada` a séries que JÃ\x81 SÃ\x83O variação percentual (IPCA mensal, por exemplo), compondo geometricamente â\x80\x94 somar 12 variações mensais NÃ\x83O dá a inflação do ano.'}, 'dataFinal': {'type': 'string', 'description': 'Data final (yyyy-MM-dd ou dd/MM/yyyy)'}, 'frequencia': {'enum': ['mensal', 'trimestral', 'anual'], 'type': 'string', 'description': 'Opcional: reamostra a série para esta frequência antes de responder (só agrega para perÃ\xadodos MAIORES; pedir frequência mais fina que a da série é recusado). Ã\x9atil para comparar séries de periodicidades diferentes.'}, 'dataInicial': {'type': 'string', 'description': 'Data inicial (yyyy-MM-dd ou dd/MM/yyyy)'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['serie', 'deflator', 'base', 'periodo', 'dados', 'variacao', 'derivacao', 'provenance', 'attribution'], 'properties': {'base': {'type': 'object', 'required': ['mes', 'descricao'], 'properties': {'mes': {'type': 'string', 'description': 'MM/yyyy'}, 'descricao': {'type': 'string'}}, 'description': 'Mês em cujos preços os valores reais estão expressos', 'additionalProperties': False}, 'dados': {'type': 'array', 'items': {'type': 'object', 'required': ['data', 'valorNominal', 'valorReal', 'fator'], 'properties': {'data': {'type': 'string', 'description': 'dd/MM/yyyy'}, 'fator': {'type': ['number', 'null'], 'description': 'Multiplicador aplicado; `null` pelo mesmo motivo'}, 'valorReal': {'type': ['number', 'null'], 'description': 'Valor em reais do mês base; `null` quando a data cai fora da cobertura do Ã\xadndice'}, 'valorNominal': {'type': 'number', 'description': 'Valor como o BCB publicou'}}, 'additionalProperties': False}, 'description': 'Observações com o valor publicado e o valor em moeda constante'}, 'serie': {'type': 'object', 'required': ['codigo', 'nome'], 'properties': {'nome': {'type': 'string'}, 'codigo': {'type': 'number'}, 'categoria': {'type': 'string'}, 'periodicidade': {'type': 'string'}, 'totalRegistros': {'type': 'number'}, 'periodicidadeInferida': {'type': 'boolean'}}, 'description': 'Identificação da série nominal', 'additionalProperties': False}, 'avisos': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Ressalvas sobre cobertura do Ã\xadndice ou mês base substituÃ\xaddo'}, 'periodo': {'type': 'object', 'required': ['dataInicial', 'dataFinal'], 'properties': {'dataFinal': {'type': 'string'}, 'dataInicial': {'type': 'string'}}, 'additionalProperties': False}, 'chunking': {'type': 'object', 'required': ['janelas', 'fatiaAnos'], 'properties': {'janelas': {'type': 'number', 'description': 'Quantidade de janelas consultadas'}, 'fatiaAnos': {'type': 'number', 'description': 'Largura máxima de cada janela, em anos'}}, 'description': 'Presente quando a consulta foi fatiada em várias requisições Ã\xa0 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.', 'additionalProperties': False}, 'deflator': {'type': 'object', 'required': ['indice', 'codigo', 'nome', 'cobertura'], 'properties': {'nome': {'type': 'string'}, 'codigo': {'type': 'number'}, 'indice': {'type': 'string'}, 'cobertura': {'type': 'object', 'required': ['primeiroMes', 'ultimoMes'], 'properties': {'ultimoMes': {'type': 'string', 'description': 'MM/yyyy'}, 'primeiroMes': {'type': 'string', 'description': 'MM/yyyy'}}, 'additionalProperties': False}}, 'description': 'Ã\x8dndice de preços usado e o intervalo que ele cobre', 'additionalProperties': False}, 'variacao': {'type': ['object', 'null'], 'required': ['nominal', 'real', 'dataInicial', 'dataFinal'], 'properties': {'real': {'type': 'number', 'description': 'Variação percentual em poder de compra'}, 'nominal': {'type': 'number', 'description': 'Variação percentual sem descontar inflação'}, 'dataFinal': {'type': 'string'}, 'dataInicial': {'type': 'string'}}, 'description': 'Variação percentual do perÃ\xadodo em moeda corrente ao lado da variação em moeda constante â\x80\x94 é a comparação que a tool existe para entregar. `null` quando há menos de duas observações deflacionadas.'}, 'derivacao': {'type': 'object', 'required': ['derived', 'motor', 'nota'], 'properties': {'nota': {'type': 'string', 'description': 'Convenções de cálculo e arredondamento, em prosa'}, 'motor': {'type': 'string', 'description': 'Componente que computou a estatÃ\xadstica'}, 'derived': {'type': 'boolean', 'description': 'Sempre true: há número calculado nesta resposta'}}, 'description': 'Origem dos números calculados: o que é derivado, por qual motor e com quais convenções', 'additionalProperties': False}, 'provenance': {'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string', 'description': 'Fonte oficial do dado'}, 'license': {'type': ['string', 'null'], 'description': 'Regime legal do dado (id SPDX quando há, senão o nome da licença)'}, 'citation': {'type': 'string', 'description': 'Citação/atribuição pronta para uso'}, 'retrieval': {'oneOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'minimum': 1, 'description': 'Tentativas somadas, incluindo as repetidas (>= requests)'}, 'requests': {'type': 'integer', 'minimum': 1, 'description': 'Idas distintas Ã\xa0 origem que compõem esta resposta (fatias, páginas)'}, 'unstable': {'type': 'boolean', 'description': 'true se houve repetição (attempts > requests) ou alguma anomalia'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string', 'description': 'Classe da anomalia (vocabulário fechado do contrato)'}, 'count': {'type': 'integer', 'minimum': 1, 'description': 'Ocorrências desta classe na chamada'}}, 'additionalProperties': False}, 'description': 'Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma'}}, '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', 'additionalProperties': False}, {'type': 'null'}], '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'}, 'source_url': {'type': 'string', 'description': 'URL canônica que reproduz a consulta na fonte'}, 'data_vintage': {'type': ['string', 'null'], 'description': 'Competência/vintage do dado segundo a fonte; null quando a fonte não expõe'}, 'retrieved_at': {'type': 'string', 'description': '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'}}, 'description': 'Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença', 'additionalProperties': False}, 'attribution': {'type': 'array', 'items': {'type': 'string'}, 'description': 'URLs canônicas das fontes desta resposta (lista de atribuição)'}, 'harmonizacao': {'type': 'object', 'required': ['frequencia', 'agregacao', 'derived', 'nota'], 'properties': {'nota': {'type': 'string', 'description': 'Descrição em prosa do que foi calculado'}, 'derived': {'type': 'boolean', 'description': 'Sempre true: o valor é derivado, não publicado pela fonte'}, 'agregacao': {'enum': ['ultimo', 'primeiro', 'media', 'soma', 'acumulada'], 'type': 'string', 'description': 'Convenção usada para agregar os valores de cada perÃ\xadodo'}, 'frequencia': {'enum': ['mensal', 'trimestral', 'anual'], 'type': 'string', 'description': 'Frequência de destino'}, 'observacoesOriginais': {'type': 'number', 'description': 'Observações antes da agregação'}}, 'description': 'Presente quando `frequencia` foi informada: descreve a reamostragem aplicada. Valor DERIVADO â\x80\x94 calculado por este servidor, não publicado pelo Banco Central.', 'additionalProperties': False}, 'janelaAplicada': {'type': 'object', 'required': ['dataInicial', 'dataFinal', 'motivo'], 'properties': {'motivo': {'type': 'string', 'description': 'Por que a janela foi aplicada e como pedir outra'}, 'dataFinal': {'type': 'string', 'description': 'Fim da janela efetivamente consultada (dd/MM/yyyy)'}, 'dataInicial': {'type': 'string', 'description': 'InÃ\xadcio da janela efetivamente consultada (dd/MM/yyyy)'}}, 'description': 'Presente quando o perÃ\xadodo 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).', 'additionalProperties': False}}, 'additionalProperties': False}
bcb_focus_expectativas
Expectativas de mercado (Focus)
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.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', 'required': ['indicador', 'horizonte'], 'properties': {'top5': {'type': 'boolean', 'default': False, 'description': 'Expectativas do Top 5 (as cinco instituições mais assertivas) em vez do consenso; existe nos cinco horizontes'}, 'limite': {'type': 'number', 'default': 50, 'maximum': 500, 'minimum': 1, 'description': 'Máximo de coletas a devolver (1-500, padrão 50)'}, 'dataFinal': {'type': 'string', 'description': 'Fim da janela de COLETA (yyyy-MM-dd ou dd/MM/yyyy). Padrão: hoje.'}, 'horizonte': {'enum': ['mensal', 'trimestral', 'anual', 'inflacao_12m', 'inflacao_24m'], 'type': 'string', 'description': 'mensal, trimestral e anual usam `referencia`; inflacao_12m e inflacao_24m são rolantes e não usam'}, 'indicador': {'type': 'string', 'minLength': 2, 'description': "Indicador exatamente como a fonte publica (ex.: 'IPCA', 'IGP-M', 'PIB Total', 'Câmbio'). Veja bcb_focus_referencias."}, 'suavizada': {'type': 'boolean', 'description': 'Só nos horizontes rolantes: série suavizada (true) ou não suavizada (false)'}, 'referencia': {'type': 'string', 'description': 'Alvo da expectativa: MM/yyyy (mensal), T/yyyy (trimestral) ou yyyy (anual). Obrigatória nesses três; proibida nos rolantes.'}, 'dataInicial': {'type': 'string', 'description': 'InÃ\xadcio da janela de COLETA (yyyy-MM-dd ou dd/MM/yyyy). Padrão: 30 dias antes do fim.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['indicador', 'horizonte', 'base', 'filtro', 'totalRegistros', 'expectativas', 'urlConsulta', 'consultadoEm', 'provenance', 'attribution'], 'properties': {'base': {'enum': ['consenso', 'top5'], 'type': 'string'}, 'filtro': {'type': 'object', 'required': ['dataInicial', 'dataFinal', 'janelaPadrao'], 'properties': {'dataFinal': {'type': 'string'}, 'suavizada': {'type': ['boolean', 'null']}, 'referencia': {'type': ['string', 'null']}, 'dataInicial': {'type': 'string'}, 'janelaPadrao': {'type': 'boolean', 'description': 'true quando a janela de 30 dias foi assumida'}}, 'description': 'Filtro efetivamente aplicado na origem; nulo onde o parâmetro não foi informado', 'additionalProperties': False}, 'horizonte': {'enum': ['mensal', 'trimestral', 'anual', 'inflacao_12m', 'inflacao_24m'], 'type': 'string'}, 'indicador': {'type': 'string'}, 'observacao': {'type': 'string'}, 'provenance': {'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string', 'description': 'Fonte oficial do dado'}, 'license': {'type': ['string', 'null'], 'description': 'Regime legal do dado (id SPDX quando há, senão o nome da licença)'}, 'citation': {'type': 'string', 'description': 'Citação/atribuição pronta para uso'}, 'retrieval': {'oneOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'minimum': 1, 'description': 'Tentativas somadas, incluindo as repetidas (>= requests)'}, 'requests': {'type': 'integer', 'minimum': 1, 'description': 'Idas distintas Ã\xa0 origem que compõem esta resposta (fatias, páginas)'}, 'unstable': {'type': 'boolean', 'description': 'true se houve repetição (attempts > requests) ou alguma anomalia'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string', 'description': 'Classe da anomalia (vocabulário fechado do contrato)'}, 'count': {'type': 'integer', 'minimum': 1, 'description': 'Ocorrências desta classe na chamada'}}, 'additionalProperties': False}, 'description': 'Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma'}}, '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', 'additionalProperties': False}, {'type': 'null'}], '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'}, 'source_url': {'type': 'string', 'description': 'URL canônica que reproduz a consulta na fonte'}, 'data_vintage': {'type': ['string', 'null'], 'description': 'Competência/vintage do dado segundo a fonte; null quando a fonte não expõe'}, 'retrieved_at': {'type': 'string', 'description': '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'}}, 'description': 'Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença', 'additionalProperties': False}, 'attribution': {'type': 'array', 'items': {'type': 'string'}, 'description': 'URLs canônicas das fontes desta resposta (lista de atribuição)'}, 'urlConsulta': {'type': 'string', 'description': 'URL OData consultada, reproduzÃ\xadvel no navegador'}, 'consultadoEm': {'type': 'string', 'description': 'Timestamp ISO 8601 da consulta'}, 'expectativas': {'type': 'array', 'items': {'type': 'object', 'required': ['indicador', 'coletadoEm', 'mediana'], 'properties': {'media': {'type': ['number', 'null'], 'description': 'Média das expectativas'}, 'maximo': {'type': ['number', 'null'], 'description': 'Maior expectativa informada'}, 'minimo': {'type': ['number', 'null'], 'description': 'Menor expectativa informada'}, 'mediana': {'type': ['number', 'null'], 'description': 'Mediana das expectativas'}, 'indicador': {'type': ['string', 'null'], 'description': 'Indicador conforme publicado pela fonte'}, 'suavizada': {'type': ['boolean', 'null'], 'description': 'Só nos horizontes rolantes: indica a série suavizada'}, 'coletadoEm': {'type': ['string', 'null'], 'description': 'Data da coleta das expectativas (yyyy-MM-dd)'}, 'referencia': {'type': ['string', 'null'], 'description': 'Alvo da expectativa (data de referência ou reunião do Copom); nulo nos horizontes rolantes'}, 'baseCalculo': {'type': ['number', 'null'], 'description': 'Base de cálculo usada pela fonte; nulo no Top 5'}, 'tipoCalculo': {'type': ['string', 'null'], 'description': 'Só no Top 5: tipo de cálculo publicado pela fonte'}, 'desvioPadrao': {'type': ['number', 'null'], 'description': 'Desvio padrão das expectativas'}, 'respondentes': {'type': ['number', 'null'], 'description': 'Número de instituições respondentes; nulo no Top 5, que a fonte não acompanha deste campo'}, 'indicadorDetalhe': {'type': ['string', 'null'], 'description': 'Detalhe do indicador, quando a fonte publica'}, 'coeficienteVariacao': {'type': ['number', 'null'], 'description': 'Só no Top 5 da Selic: único recurso da fonte que publica este campo'}}, 'additionalProperties': False}}, 'totalRegistros': {'type': 'number', 'description': 'Coletas encontradas (contagem client-side)'}}, 'additionalProperties': False}
bcb_focus_referencias
Indicadores e referências do Focus
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.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', 'properties': {'escopo': {'enum': ['mensal', 'trimestral', 'anual', 'inflacao_12m', 'inflacao_24m', 'selic'], 'type': 'string', 'description': "Restringe a descoberta a um escopo (opcional). 'selic' descobre as reuniões do Copom para bcb_focus_selic; os demais são os horizontes de bcb_focus_expectativas."}, 'indicador': {'type': 'string', 'description': 'Filtrar por um indicador especÃ\xadfico, para ver em quais escopos ele existe (opcional)'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['indicadores', 'referencias', 'escopos', 'janela', 'totalRegistros', 'consultadoEm', 'provenance', 'attribution'], 'properties': {'falhas': {'type': 'array', 'items': {'type': 'object', 'required': ['escopo', 'erro'], 'properties': {'erro': {'type': 'string'}, 'escopo': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Escopos que não responderam nesta consulta'}, 'filtro': {'type': 'object', 'properties': {'escopo': {'type': ['string', 'null'], 'description': 'Um de: mensal, trimestral, anual, inflacao_12m, inflacao_24m, selic; nulo quando a consulta cobriu todos'}, 'indicador': {'type': ['string', 'null']}}, 'description': 'Filtro pedido; nulo onde o parâmetro não foi informado', 'additionalProperties': False}, 'janela': {'type': 'object', 'required': ['dataInicial', 'dataFinal'], 'properties': {'dataFinal': {'type': 'string'}, 'dataInicial': {'type': 'string'}}, 'description': 'Janela de coleta observada para montar as listas', 'additionalProperties': False}, 'escopos': {'type': 'array', 'items': {'type': 'object', 'required': ['escopo', 'tool', 'exigeReferencia', 'temTop5', 'indicadores', 'referencias', 'urlConsulta', 'disponivel'], 'properties': {'tool': {'type': 'string', 'description': 'Tool que consome este escopo'}, 'escopo': {'enum': ['mensal', 'trimestral', 'anual', 'inflacao_12m', 'inflacao_24m', 'selic'], 'type': 'string'}, 'temTop5': {'type': 'boolean'}, 'disponivel': {'type': 'boolean', 'description': 'false quando a origem não respondeu por este escopo â\x80\x94 listas vazias por indisponibilidade, não por ausência de dado'}, 'indicadores': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Indicadores publicados NESTE escopo'}, 'referencias': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Referências publicadas NESTE escopo; vazio nos rolantes, que não têm alvo de calendário'}, 'urlConsulta': {'type': 'string'}, 'exigeReferencia': {'type': 'boolean', 'description': 'true nos horizontes de calendário, onde `referencia` é obrigatória'}, 'formatoReferencia': {'type': ['string', 'null'], 'description': 'Formato da referência; nulo nos horizontes rolantes, que não têm alvo de calendário'}}, 'additionalProperties': False}, 'description': 'Um bloco por escopo: regras do contrato mais o que a fonte publica nele'}, 'observacao': {'type': 'string'}, 'provenance': {'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string', 'description': 'Fonte oficial do dado'}, 'license': {'type': ['string', 'null'], 'description': 'Regime legal do dado (id SPDX quando há, senão o nome da licença)'}, 'citation': {'type': 'string', 'description': 'Citação/atribuição pronta para uso'}, 'retrieval': {'oneOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'minimum': 1, 'description': 'Tentativas somadas, incluindo as repetidas (>= requests)'}, 'requests': {'type': 'integer', 'minimum': 1, 'description': 'Idas distintas Ã\xa0 origem que compõem esta resposta (fatias, páginas)'}, 'unstable': {'type': 'boolean', 'description': 'true se houve repetição (attempts > requests) ou alguma anomalia'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string', 'description': 'Classe da anomalia (vocabulário fechado do contrato)'}, 'count': {'type': 'integer', 'minimum': 1, 'description': 'Ocorrências desta classe na chamada'}}, 'additionalProperties': False}, 'description': 'Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma'}}, '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', 'additionalProperties': False}, {'type': 'null'}], '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'}, 'source_url': {'type': 'string', 'description': 'URL canônica que reproduz a consulta na fonte'}, 'data_vintage': {'type': ['string', 'null'], 'description': 'Competência/vintage do dado segundo a fonte; null quando a fonte não expõe'}, 'retrieved_at': {'type': 'string', 'description': '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'}}, 'description': 'Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença', 'additionalProperties': False}, 'attribution': {'type': 'array', 'items': {'type': 'string'}, 'description': 'URLs canônicas das fontes desta resposta (lista de atribuição)'}, 'indicadores': {'type': 'array', 'items': {'type': 'string'}, 'description': 'União dos indicadores de todos os escopos consultados'}, 'referencias': {'type': 'array', 'items': {'type': 'string'}, 'description': 'União das referências de todos os escopos consultados'}, 'consultadoEm': {'type': 'string'}, 'totalRegistros': {'type': 'number'}, 'observacaoFalhas': {'type': 'string'}}, 'additionalProperties': False}
bcb_focus_selic
Expectativas de Selic (Focus)
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.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', 'properties': {'top5': {'type': 'boolean', 'default': False, 'description': 'Expectativas do Top 5 em vez do consenso'}, 'limite': {'type': 'number', 'default': 50, 'maximum': 500, 'minimum': 1, 'description': 'Máximo de coletas a devolver (1-500, padrão 50)'}, 'reuniao': {'type': 'string', 'description': 'Reunião do Copom no formato R1/2026 (opcional; sem ela, todas as reuniões da janela)'}, 'dataFinal': {'type': 'string', 'description': 'Fim da janela de COLETA (yyyy-MM-dd ou dd/MM/yyyy). Padrão: hoje.'}, 'dataInicial': {'type': 'string', 'description': 'InÃ\xadcio da janela de COLETA (yyyy-MM-dd ou dd/MM/yyyy). Padrão: 30 dias antes do fim.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['base', 'filtro', 'totalRegistros', 'expectativas', 'urlConsulta', 'consultadoEm', 'provenance', 'attribution'], 'properties': {'base': {'enum': ['consenso', 'top5'], 'type': 'string'}, 'filtro': {'type': 'object', 'required': ['dataInicial', 'dataFinal', 'janelaPadrao'], 'properties': {'reuniao': {'type': ['string', 'null']}, 'dataFinal': {'type': 'string'}, 'dataInicial': {'type': 'string'}, 'janelaPadrao': {'type': 'boolean'}}, 'description': 'Filtro efetivamente aplicado; `reuniao` é nula quando não foi informada', 'additionalProperties': False}, 'observacao': {'type': 'string'}, 'provenance': {'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string', 'description': 'Fonte oficial do dado'}, 'license': {'type': ['string', 'null'], 'description': 'Regime legal do dado (id SPDX quando há, senão o nome da licença)'}, 'citation': {'type': 'string', 'description': 'Citação/atribuição pronta para uso'}, 'retrieval': {'oneOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'minimum': 1, 'description': 'Tentativas somadas, incluindo as repetidas (>= requests)'}, 'requests': {'type': 'integer', 'minimum': 1, 'description': 'Idas distintas Ã\xa0 origem que compõem esta resposta (fatias, páginas)'}, 'unstable': {'type': 'boolean', 'description': 'true se houve repetição (attempts > requests) ou alguma anomalia'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string', 'description': 'Classe da anomalia (vocabulário fechado do contrato)'}, 'count': {'type': 'integer', 'minimum': 1, 'description': 'Ocorrências desta classe na chamada'}}, 'additionalProperties': False}, 'description': 'Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma'}}, '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', 'additionalProperties': False}, {'type': 'null'}], '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'}, 'source_url': {'type': 'string', 'description': 'URL canônica que reproduz a consulta na fonte'}, 'data_vintage': {'type': ['string', 'null'], 'description': 'Competência/vintage do dado segundo a fonte; null quando a fonte não expõe'}, 'retrieved_at': {'type': 'string', 'description': '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'}}, 'description': 'Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença', 'additionalProperties': False}, 'attribution': {'type': 'array', 'items': {'type': 'string'}, 'description': 'URLs canônicas das fontes desta resposta (lista de atribuição)'}, 'urlConsulta': {'type': 'string'}, 'consultadoEm': {'type': 'string'}, 'expectativas': {'type': 'array', 'items': {'type': 'object', 'required': ['indicador', 'coletadoEm', 'mediana'], 'properties': {'media': {'type': ['number', 'null'], 'description': 'Média das expectativas'}, 'maximo': {'type': ['number', 'null'], 'description': 'Maior expectativa informada'}, 'minimo': {'type': ['number', 'null'], 'description': 'Menor expectativa informada'}, 'mediana': {'type': ['number', 'null'], 'description': 'Mediana das expectativas'}, 'indicador': {'type': ['string', 'null'], 'description': 'Indicador conforme publicado pela fonte'}, 'suavizada': {'type': ['boolean', 'null'], 'description': 'Só nos horizontes rolantes: indica a série suavizada'}, 'coletadoEm': {'type': ['string', 'null'], 'description': 'Data da coleta das expectativas (yyyy-MM-dd)'}, 'referencia': {'type': ['string', 'null'], 'description': 'Alvo da expectativa (data de referência ou reunião do Copom); nulo nos horizontes rolantes'}, 'baseCalculo': {'type': ['number', 'null'], 'description': 'Base de cálculo usada pela fonte; nulo no Top 5'}, 'tipoCalculo': {'type': ['string', 'null'], 'description': 'Só no Top 5: tipo de cálculo publicado pela fonte'}, 'desvioPadrao': {'type': ['number', 'null'], 'description': 'Desvio padrão das expectativas'}, 'respondentes': {'type': ['number', 'null'], 'description': 'Número de instituições respondentes; nulo no Top 5, que a fonte não acompanha deste campo'}, 'indicadorDetalhe': {'type': ['string', 'null'], 'description': 'Detalhe do indicador, quando a fonte publica'}, 'coeficienteVariacao': {'type': ['number', 'null'], 'description': 'Só no Top 5 da Selic: único recurso da fonte que publica este campo'}}, 'additionalProperties': False}}, 'observacaoEixo': {'type': 'string'}, 'totalRegistros': {'type': 'number'}}, 'additionalProperties': False}
bcb_indicadores_atuais
Indicadores econômicos atuais
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).
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', 'properties': {}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['consultadoEm', 'indicadores', 'provenance', 'attribution'], 'properties': {'provenance': {'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string', 'description': 'Fonte oficial do dado'}, 'license': {'type': ['string', 'null'], 'description': 'Regime legal do dado (id SPDX quando há, senão o nome da licença)'}, 'citation': {'type': 'string', 'description': 'Citação/atribuição pronta para uso'}, 'retrieval': {'oneOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'minimum': 1, 'description': 'Tentativas somadas, incluindo as repetidas (>= requests)'}, 'requests': {'type': 'integer', 'minimum': 1, 'description': 'Idas distintas Ã\xa0 origem que compõem esta resposta (fatias, páginas)'}, 'unstable': {'type': 'boolean', 'description': 'true se houve repetição (attempts > requests) ou alguma anomalia'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string', 'description': 'Classe da anomalia (vocabulário fechado do contrato)'}, 'count': {'type': 'integer', 'minimum': 1, 'description': 'Ocorrências desta classe na chamada'}}, 'additionalProperties': False}, 'description': 'Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma'}}, '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', 'additionalProperties': False}, {'type': 'null'}], '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'}, 'source_url': {'type': 'string', 'description': 'URL canônica que reproduz a consulta na fonte'}, 'data_vintage': {'type': ['string', 'null'], 'description': 'Competência/vintage do dado segundo a fonte; null quando a fonte não expõe'}, 'retrieved_at': {'type': 'string', 'description': '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'}}, 'description': 'Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença', 'additionalProperties': False}, 'attribution': {'type': 'array', 'items': {'type': 'string'}, 'description': 'URLs canônicas das fontes desta resposta (lista de atribuição)'}, 'indicadores': {'type': 'array', 'items': {'type': 'object', 'required': ['indicador', 'codigo'], 'properties': {'data': {'type': 'string', 'description': 'Data da observação'}, 'erro': {'type': 'string', 'description': 'Mensagem de erro quando o indicador não pôde ser obtido'}, 'valor': {'type': 'number', 'description': 'Valor mais recente'}, 'codigo': {'type': 'number', 'description': 'Código da série no SGS/BCB'}, 'indicador': {'type': 'string', 'description': 'Nome do indicador'}}, 'additionalProperties': False}, 'description': 'Lista de indicadores com seus valores mais recentes'}, 'consultadoEm': {'type': 'string', 'description': 'Timestamp ISO 8601 da consulta'}}, 'additionalProperties': False}
bcb_serie_metadados
Metadados da série
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).
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', 'required': ['codigo'], 'properties': {'codigo': {'type': 'number', 'description': 'Código da série no SGS/BCB'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['codigo', 'nome', 'fonte', 'provenance', 'attribution'], 'properties': {'nome': {'type': 'string', 'description': 'Nome da série'}, 'fonte': {'type': 'string', 'description': 'Fonte dos dados'}, 'codigo': {'type': 'number', 'description': 'Código da série no SGS/BCB'}, 'categoria': {'type': 'string', 'description': 'Categoria econômica'}, 'observacao': {'type': 'string', 'description': 'Observação sobre a origem dos metadados'}, 'provenance': {'type': 'array', 'items': {'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string', 'description': 'Fonte oficial do dado'}, 'license': {'type': ['string', 'null'], 'description': 'Regime legal do dado (id SPDX quando há, senão o nome da licença)'}, 'citation': {'type': 'string', 'description': 'Citação/atribuição pronta para uso'}, 'retrieval': {'oneOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'minimum': 1, 'description': 'Tentativas somadas, incluindo as repetidas (>= requests)'}, 'requests': {'type': 'integer', 'minimum': 1, 'description': 'Idas distintas Ã\xa0 origem que compõem esta resposta (fatias, páginas)'}, 'unstable': {'type': 'boolean', 'description': 'true se houve repetição (attempts > requests) ou alguma anomalia'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string', 'description': 'Classe da anomalia (vocabulário fechado do contrato)'}, 'count': {'type': 'integer', 'minimum': 1, 'description': 'Ocorrências desta classe na chamada'}}, 'additionalProperties': False}, 'description': 'Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma'}}, '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', 'additionalProperties': False}, {'type': 'null'}], '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'}, 'source_url': {'type': 'string', 'description': 'URL canônica que reproduz a consulta na fonte'}, 'data_vintage': {'type': ['string', 'null'], 'description': 'Competência/vintage do dado segundo a fonte; null quando a fonte não expõe'}, 'retrieved_at': {'type': 'string', 'description': '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'}}, 'description': 'Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença', 'additionalProperties': False}, 'description': 'Um bloco por procedência que contribuiu com esta resposta (contrato v1.1; licenças nunca se fundem)'}, 'attribution': {'type': 'array', 'items': {'type': 'string'}, 'description': 'URLs canônicas das fontes desta resposta (lista de atribuição)'}, 'ultimoValor': {'type': 'object', 'required': ['data', 'valor'], 'properties': {'data': {'type': 'string', 'description': 'Data da observação (dd/MM/yyyy)'}, 'valor': {'type': 'number', 'description': 'Valor numérico da observação'}}, 'description': 'Ã\x9altima observação disponÃ\xadvel', 'additionalProperties': False}, 'urlConsulta': {'type': 'string', 'description': 'URL da API do BCB para consulta completa'}, 'urlUltimos10': {'type': 'string', 'description': 'URL da API do BCB para os últimos 10 valores'}, 'periodicidade': {'type': 'string', 'description': 'Periodicidade da série'}, 'periodicidadeInferida': {'type': 'boolean', 'description': 'Presente e true quando a periodicidade foi inferida do espaçamento das observações'}}, 'additionalProperties': False}
bcb_series_populares
Listar séries populares
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {'categoria': {'type': 'string', 'description': 'Filtrar por categoria: Juros, Inflação, Câmbio, Atividade Econômica, Emprego, Fiscal, Setor Externo, Crédito, Agregados Monetários, Poupança, Ã\x8dndices de Mercado, Expectativas'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['totalSeries', 'categorias', 'series', 'provenance', 'attribution'], 'properties': {'series': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'required': ['codigo', 'nome'], 'properties': {'nome': {'type': 'string', 'description': 'Nome da série'}, 'codigo': {'type': 'number', 'description': 'Código da série no SGS/BCB'}, 'unidade': {'type': 'string', 'description': "Unidade de medida publicada pelo portal. Ausente nas séries sem dataset (fonteNome 'medido')."}, 'categoria': {'type': 'string', 'description': 'Categoria econômica'}, 'fonteNome': {'enum': ['portal', 'medido'], 'type': 'string', '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."}, 'periodicidade': {'type': 'string', 'description': 'Periodicidade (Diária, Mensal, etc.)'}}, 'description': 'Identificação da série temporal', 'additionalProperties': False}}, {'type': 'object', 'additionalProperties': {'type': 'array', 'items': {'type': 'object', 'required': ['codigo', 'nome'], 'properties': {'nome': {'type': 'string', 'description': 'Nome da série'}, 'codigo': {'type': 'number', 'description': 'Código da série no SGS/BCB'}, 'unidade': {'type': 'string', 'description': "Unidade de medida publicada pelo portal. Ausente nas séries sem dataset (fonteNome 'medido')."}, 'categoria': {'type': 'string', 'description': 'Categoria econômica'}, 'fonteNome': {'enum': ['portal', 'medido'], 'type': 'string', '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."}, 'periodicidade': {'type': 'string', 'description': 'Periodicidade (Diária, Mensal, etc.)'}}, 'description': 'Identificação da série temporal', 'additionalProperties': False}}}], 'description': 'Séries encontradas. Objeto agrupado por categoria quando sem filtro; array plano quando filtrado por categoria.'}, 'categorias': {'type': 'number', 'description': 'Quantidade de categorias distintas'}, 'observacao': {'type': 'string', 'description': 'Dica de uso'}, 'provenance': {'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string', 'description': 'Fonte oficial do dado'}, 'license': {'type': ['string', 'null'], 'description': 'Regime legal do dado (id SPDX quando há, senão o nome da licença)'}, 'citation': {'type': 'string', 'description': 'Citação/atribuição pronta para uso'}, 'retrieval': {'oneOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'minimum': 1, 'description': 'Tentativas somadas, incluindo as repetidas (>= requests)'}, 'requests': {'type': 'integer', 'minimum': 1, 'description': 'Idas distintas Ã\xa0 origem que compõem esta resposta (fatias, páginas)'}, 'unstable': {'type': 'boolean', 'description': 'true se houve repetição (attempts > requests) ou alguma anomalia'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string', 'description': 'Classe da anomalia (vocabulário fechado do contrato)'}, 'count': {'type': 'integer', 'minimum': 1, 'description': 'Ocorrências desta classe na chamada'}}, 'additionalProperties': False}, 'description': 'Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma'}}, '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', 'additionalProperties': False}, {'type': 'null'}], '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'}, 'source_url': {'type': 'string', 'description': 'URL canônica que reproduz a consulta na fonte'}, 'data_vintage': {'type': ['string', 'null'], 'description': 'Competência/vintage do dado segundo a fonte; null quando a fonte não expõe'}, 'retrieved_at': {'type': 'string', 'description': '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'}}, 'description': 'Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença', 'additionalProperties': False}, 'attribution': {'type': 'array', 'items': {'type': 'string'}, 'description': 'URLs canônicas das fontes desta resposta (lista de atribuição)'}, 'totalSeries': {'type': 'number', 'description': 'Quantidade total de séries retornadas'}}, 'additionalProperties': False}
bcb_serie_ultimos
Últimos valores da série
Obtém as últimas N observações de UMA série temporal do BCB (mais recentes primeiro a partir do fim da série). Quando usar: para ver os dados mais recentes sem precisar calcular datas (ex.: últimos 12 meses do IPCA). Quantidade entre 1 e 1000 (padrão 10). Quando NÃO usar: para um intervalo de datas ou o histórico completo use bcb_serie_valores. Retorna: objeto `serie`, `totalRegistros` e `dados` (array de {data, valor}); sem dados, `totalRegistros` = 0 com `observacao`. Acima de 20: o endpoint nativo do BCB rejeita N > 20 em qualquer periodicidade, então o servidor descobre a periodicidade da série e busca por janela de datas, devolvendo os N últimos pontos. Comportamento: consome a API pública SGS do Banco Central do Brasil — sem autenticação, chave de API ou cadastro, e sem limite de requisições divulgado (uso é best-effort). Em falha transitória ou timeout a chamada é repetida automaticamente (até 3 tentativas, backoff exponencial); persistindo o erro, retorna `isError: true` com mensagem em português (HTTP 404 = série inexistente ou sem dados no período solicitado). O resultado vem como JSON tanto em texto quanto em `structuredContent` (conforme o outputSchema); datas no formato dd/MM/yyyy e valores numéricos (ponto decimal).
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', 'required': ['codigo'], 'properties': {'codigo': {'type': 'number', 'description': 'Código da série no SGS/BCB'}, 'quantidade': {'type': 'number', 'default': 10, 'maximum': 1000, 'minimum': 1, 'description': '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.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['serie', 'totalRegistros', 'dados', 'provenance', 'attribution'], 'properties': {'dados': {'type': 'array', 'items': {'type': 'object', 'required': ['data', 'valor'], 'properties': {'data': {'type': 'string', 'description': 'Data da observação (dd/MM/yyyy)'}, 'valor': {'type': 'number', 'description': 'Valor numérico da observação'}}, 'additionalProperties': False}, 'description': 'Observações mais recentes'}, 'serie': {'type': 'object', 'required': ['codigo', 'nome'], 'properties': {'nome': {'type': 'string', 'description': 'Nome da série'}, 'codigo': {'type': 'number', 'description': 'Código da série no SGS/BCB'}, 'categoria': {'type': 'string', 'description': 'Categoria econômica'}, 'periodicidade': {'type': 'string', 'description': 'Periodicidade (Diária, Mensal, etc.)'}, 'periodicidadeInferida': {'type': 'boolean', 'description': 'Presente e true quando a periodicidade foi inferida do espaçamento das observações, e não lida do catálogo â\x80\x94 a API do SGS não publica metadados de série.'}}, 'description': 'Identificação da série temporal', 'additionalProperties': False}, 'chunking': {'type': 'object', 'required': ['janelas', 'fatiaAnos'], 'properties': {'janelas': {'type': 'number', 'description': 'Quantidade de janelas consultadas'}, 'fatiaAnos': {'type': 'number', 'description': 'Largura máxima de cada janela, em anos'}}, 'description': 'Presente quando a consulta foi fatiada em várias requisições Ã\xa0 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.', 'additionalProperties': False}, 'observacao': {'type': 'string', 'description': 'Mensagem informativa (ex.: quando não há dados)'}, 'provenance': {'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string', 'description': 'Fonte oficial do dado'}, 'license': {'type': ['string', 'null'], 'description': 'Regime legal do dado (id SPDX quando há, senão o nome da licença)'}, 'citation': {'type': 'string', 'description': 'Citação/atribuição pronta para uso'}, 'retrieval': {'oneOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'minimum': 1, 'description': 'Tentativas somadas, incluindo as repetidas (>= requests)'}, 'requests': {'type': 'integer', 'minimum': 1, 'description': 'Idas distintas Ã\xa0 origem que compõem esta resposta (fatias, páginas)'}, 'unstable': {'type': 'boolean', 'description': 'true se houve repetição (attempts > requests) ou alguma anomalia'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string', 'description': 'Classe da anomalia (vocabulário fechado do contrato)'}, 'count': {'type': 'integer', 'minimum': 1, 'description': 'Ocorrências desta classe na chamada'}}, 'additionalProperties': False}, 'description': 'Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma'}}, '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', 'additionalProperties': False}, {'type': 'null'}], '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'}, 'source_url': {'type': 'string', 'description': 'URL canônica que reproduz a consulta na fonte'}, 'data_vintage': {'type': ['string', 'null'], 'description': 'Competência/vintage do dado segundo a fonte; null quando a fonte não expõe'}, 'retrieved_at': {'type': 'string', 'description': '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'}}, 'description': 'Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença', 'additionalProperties': False}, 'attribution': {'type': 'array', 'items': {'type': 'string'}, 'description': 'URLs canônicas das fontes desta resposta (lista de atribuição)'}, 'totalRegistros': {'type': 'number', 'description': 'Quantidade de observações retornadas'}}, 'additionalProperties': False}
bcb_serie_valores
Consultar valores da série
Consulta o histórico de valores de UMA série temporal do BCB pelo código SGS, opcionalmente limitado por um intervalo de datas (dataInicial/dataFinal). Quando usar: para obter a série histórica completa ou uma janela de datas específica. Quando NÃO usar: para apenas os pontos mais recentes use bcb_serie_ultimos; para a variação percentual use bcb_variacao; para comparar várias séries use bcb_comparar; se não souber o código, descubra-o antes com bcb_buscar_serie ou bcb_series_populares. Retorna: objeto `serie` (codigo, nome, categoria, periodicidade), `totalRegistros`, `periodoInicial`, `periodoFinal` e `dados` (array de {data, valor}); quando não há dados, `totalRegistros` = 0 e uma `observacao` explicativa. Períodos longos: a API do BCB limita séries DIÁRIAS a 10 anos por consulta e recusa janela aberta (HTTP 406). Isso é tratado automaticamente — a janela é fatiada em requisições de até 3 anos e o resultado vem fundido e ordenado, com `chunking` na resposta dizendo quantas janelas foram usadas; se o período pedido estava aberto numa série diária, `janelaAplicada` diz qual janela foi usada e por quê. Harmonização: `frequencia` (mensal|trimestral|anual) reamostra a série antes de responder, com a convenção escolhida em `agregacao`; a resposta traz `harmonizacao` com `derived: true` e a nota do cálculo. Comportamento: consome a API pública SGS do Banco Central do Brasil — sem autenticação, chave de API ou cadastro, e sem limite de requisições divulgado (uso é best-effort). Em falha transitória ou timeout a chamada é repetida automaticamente (até 3 tentativas, backoff exponencial); persistindo o erro, retorna `isError: true` com mensagem em português (HTTP 404 = série inexistente ou sem dados no período solicitado). O resultado vem como JSON tanto em texto quanto em `structuredContent` (conforme o outputSchema); datas no formato dd/MM/yyyy e valores numéricos (ponto decimal).
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', 'required': ['codigo'], 'properties': {'codigo': {'type': 'number', 'description': 'Código da série no SGS/BCB (ex: 433 para IPCA mensal, 11 para Selic)'}, 'agregacao': {'enum': ['ultimo', 'primeiro', 'media', 'soma', 'acumulada'], 'type': 'string', 'default': 'ultimo', 'description': 'Como agregar os valores de cada perÃ\xadodo quando `frequencia` é informada. `ultimo` (padrão) serve a nÃ\xadvel de preço, taxa e Ã\xadndice; `soma` a fluxo; `acumulada` a séries que JÃ\x81 SÃ\x83O variação percentual (IPCA mensal, por exemplo), compondo geometricamente â\x80\x94 somar 12 variações mensais NÃ\x83O dá a inflação do ano.'}, 'dataFinal': {'type': 'string', 'description': 'Data final no formato yyyy-MM-dd ou dd/MM/yyyy (opcional)'}, 'frequencia': {'enum': ['mensal', 'trimestral', 'anual'], 'type': 'string', 'description': 'Opcional: reamostra a série para esta frequência antes de responder (só agrega para perÃ\xadodos MAIORES; pedir frequência mais fina que a da série é recusado). Ã\x9atil para comparar séries de periodicidades diferentes.'}, 'dataInicial': {'type': 'string', 'description': 'Data inicial no formato yyyy-MM-dd ou dd/MM/yyyy (opcional)'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['serie', 'totalRegistros', 'dados', 'provenance', 'attribution'], 'properties': {'dados': {'type': 'array', 'items': {'type': 'object', 'required': ['data', 'valor'], 'properties': {'data': {'type': 'string', 'description': 'Data da observação (dd/MM/yyyy)'}, 'valor': {'type': 'number', 'description': 'Valor numérico da observação'}, 'observacoes': {'type': 'number', 'description': 'Só em resposta harmonizada: observações de origem agregadas neste ponto'}}, 'additionalProperties': False}, 'description': 'Observações históricas'}, 'serie': {'type': 'object', 'required': ['codigo', 'nome'], 'properties': {'nome': {'type': 'string', 'description': 'Nome da série'}, 'codigo': {'type': 'number', 'description': 'Código da série no SGS/BCB'}, 'categoria': {'type': 'string', 'description': 'Categoria econômica'}, 'periodicidade': {'type': 'string', 'description': 'Periodicidade (Diária, Mensal, etc.)'}, 'periodicidadeInferida': {'type': 'boolean', 'description': 'Presente e true quando a periodicidade foi inferida do espaçamento das observações, e não lida do catálogo â\x80\x94 a API do SGS não publica metadados de série.'}}, 'description': 'Identificação da série temporal', 'additionalProperties': False}, 'chunking': {'type': 'object', 'required': ['janelas', 'fatiaAnos'], 'properties': {'janelas': {'type': 'number', 'description': 'Quantidade de janelas consultadas'}, 'fatiaAnos': {'type': 'number', 'description': 'Largura máxima de cada janela, em anos'}}, 'description': 'Presente quando a consulta foi fatiada em várias requisições Ã\xa0 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.', 'additionalProperties': False}, 'observacao': {'type': 'string', 'description': 'Mensagem informativa (ex.: quando não há dados)'}, 'provenance': {'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string', 'description': 'Fonte oficial do dado'}, 'license': {'type': ['string', 'null'], 'description': 'Regime legal do dado (id SPDX quando há, senão o nome da licença)'}, 'citation': {'type': 'string', 'description': 'Citação/atribuição pronta para uso'}, 'retrieval': {'oneOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'minimum': 1, 'description': 'Tentativas somadas, incluindo as repetidas (>= requests)'}, 'requests': {'type': 'integer', 'minimum': 1, 'description': 'Idas distintas Ã\xa0 origem que compõem esta resposta (fatias, páginas)'}, 'unstable': {'type': 'boolean', 'description': 'true se houve repetição (attempts > requests) ou alguma anomalia'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string', 'description': 'Classe da anomalia (vocabulário fechado do contrato)'}, 'count': {'type': 'integer', 'minimum': 1, 'description': 'Ocorrências desta classe na chamada'}}, 'additionalProperties': False}, 'description': 'Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma'}}, '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', 'additionalProperties': False}, {'type': 'null'}], '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'}, 'source_url': {'type': 'string', 'description': 'URL canônica que reproduz a consulta na fonte'}, 'data_vintage': {'type': ['string', 'null'], 'description': 'Competência/vintage do dado segundo a fonte; null quando a fonte não expõe'}, 'retrieved_at': {'type': 'string', 'description': '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'}}, 'description': 'Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença', 'additionalProperties': False}, 'attribution': {'type': 'array', 'items': {'type': 'string'}, 'description': 'URLs canônicas das fontes desta resposta (lista de atribuição)'}, 'harmonizacao': {'type': 'object', 'required': ['frequencia', 'agregacao', 'derived', 'nota'], 'properties': {'nota': {'type': 'string', 'description': 'Descrição em prosa do que foi calculado'}, 'derived': {'type': 'boolean', 'description': 'Sempre true: o valor é derivado, não publicado pela fonte'}, 'agregacao': {'enum': ['ultimo', 'primeiro', 'media', 'soma', 'acumulada'], 'type': 'string', 'description': 'Convenção usada para agregar os valores de cada perÃ\xadodo'}, 'frequencia': {'enum': ['mensal', 'trimestral', 'anual'], 'type': 'string', 'description': 'Frequência de destino'}, 'observacoesOriginais': {'type': 'number', 'description': 'Observações antes da agregação'}}, 'description': 'Presente quando `frequencia` foi informada: descreve a reamostragem aplicada. Valor DERIVADO â\x80\x94 calculado por este servidor, não publicado pelo Banco Central.', 'additionalProperties': False}, 'periodoFinal': {'type': 'string', 'description': 'Data da última observação'}, 'janelaAplicada': {'type': 'object', 'required': ['dataInicial', 'dataFinal', 'motivo'], 'properties': {'motivo': {'type': 'string', 'description': 'Por que a janela foi aplicada e como pedir outra'}, 'dataFinal': {'type': 'string', 'description': 'Fim da janela efetivamente consultada (dd/MM/yyyy)'}, 'dataInicial': {'type': 'string', 'description': 'InÃ\xadcio da janela efetivamente consultada (dd/MM/yyyy)'}}, 'description': 'Presente quando o perÃ\xadodo 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).', 'additionalProperties': False}, 'periodoInicial': {'type': 'string', 'description': 'Data da primeira observação'}, 'totalRegistros': {'type': 'number', 'description': 'Quantidade de observações retornadas'}}, 'additionalProperties': False}
bcb_variacao
Variação percentual da série
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).
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', 'required': ['codigo'], 'properties': {'codigo': {'type': 'number', 'description': 'Código da série no SGS/BCB'}, 'periodos': {'type': 'number', 'description': 'Alternativa: calcular variação dos últimos N perÃ\xadodos (ignora datas se informado). Acima de 20 o servidor busca por janela de datas, porque o endpoint nativo do BCB tem esse teto.'}, 'dataFinal': {'type': 'string', 'description': 'Data final (yyyy-MM-dd ou dd/MM/yyyy). Se não informada, usa o último valor disponÃ\xadvel.'}, 'dataInicial': {'type': 'string', 'description': 'Data inicial (yyyy-MM-dd ou dd/MM/yyyy). Se não informada, usa o primeiro valor disponÃ\xadvel.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['serie', 'periodo', 'analise', 'estatisticas', 'derivacao', 'provenance', 'attribution'], 'properties': {'serie': {'type': 'object', 'required': ['codigo', 'nome'], 'properties': {'nome': {'type': 'string'}, 'codigo': {'type': 'number'}, 'categoria': {'type': 'string'}}, 'description': 'Identificação da série', 'additionalProperties': False}, 'analise': {'type': 'object', 'required': ['metodo', 'valorInicial', 'valorFinal', 'diferencaAbsoluta', 'variacaoPercentual', 'variacaoFormatada'], 'properties': {'metodo': {'enum': ['nivel', 'encadeamento'], 'type': 'string', 'description': 'Como a variação foi medida: `nivel` = (último â\x88\x92 primeiro) / primeiro, para série de nÃ\xadvel; `encadeamento` = acumulado composto de todas as observações, para série que já é uma variação percentual por perÃ\xadodo (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 â\x80\x94 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Ã\xadvel.'}, 'valorFinal': {'type': 'number', 'description': 'Ã\x9altima observação do perÃ\xadodo, verbatim da fonte'}, 'valorInicial': {'type': 'number', 'description': 'Primeira observação do perÃ\xadodo, verbatim da fonte'}, 'diferencaAbsoluta': {'type': ['number', 'null'], 'description': 'valorFinal â\x88\x92 valorInicial em série de nÃ\xadvel; NULO em série encadeada, onde não se aplica'}, 'variacaoFormatada': {'type': 'string'}, 'variacaoPercentual': {'type': 'number', 'description': 'Variação (nÃ\xadvel) ou acumulado (encadeamento), em %'}}, 'description': 'Resultado da variação no perÃ\xadodo. Em `metodo: "nivel"` é a variação entre o primeiro e o último valor; em `metodo: "encadeamento"` (série que já é variação por perÃ\xadodo, como IPCA e IGP-M mensais) é o acumulado composto de todas as observações', 'additionalProperties': False}, 'periodo': {'type': 'object', 'required': ['dataInicial', 'dataFinal', 'totalPeriodos'], 'properties': {'dataFinal': {'type': 'string'}, 'dataInicial': {'type': 'string'}, 'totalPeriodos': {'type': 'number'}}, 'description': 'Janela temporal analisada', 'additionalProperties': False}, 'chunking': {'type': 'object', 'required': ['janelas', 'fatiaAnos'], 'properties': {'janelas': {'type': 'number', 'description': 'Quantidade de janelas consultadas'}, 'fatiaAnos': {'type': 'number', 'description': 'Largura máxima de cada janela, em anos'}}, 'description': 'Presente quando a consulta foi fatiada em várias requisições Ã\xa0 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.', 'additionalProperties': False}, 'derivacao': {'type': 'object', 'required': ['derived', 'motor', 'nota'], 'properties': {'nota': {'type': 'string', 'description': 'Convenções de cálculo e arredondamento, em prosa'}, 'motor': {'type': 'string', 'description': 'Componente que computou a estatÃ\xadstica'}, 'derived': {'type': 'boolean', 'description': 'Sempre true: há número calculado nesta resposta'}}, 'description': 'Origem dos números calculados: o que é derivado, por qual motor e com quais convenções', 'additionalProperties': False}, 'provenance': {'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string', 'description': 'Fonte oficial do dado'}, 'license': {'type': ['string', 'null'], 'description': 'Regime legal do dado (id SPDX quando há, senão o nome da licença)'}, 'citation': {'type': 'string', 'description': 'Citação/atribuição pronta para uso'}, 'retrieval': {'oneOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'minimum': 1, 'description': 'Tentativas somadas, incluindo as repetidas (>= requests)'}, 'requests': {'type': 'integer', 'minimum': 1, 'description': 'Idas distintas Ã\xa0 origem que compõem esta resposta (fatias, páginas)'}, 'unstable': {'type': 'boolean', 'description': 'true se houve repetição (attempts > requests) ou alguma anomalia'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string', 'description': 'Classe da anomalia (vocabulário fechado do contrato)'}, 'count': {'type': 'integer', 'minimum': 1, 'description': 'Ocorrências desta classe na chamada'}}, 'additionalProperties': False}, 'description': 'Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma'}}, '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', 'additionalProperties': False}, {'type': 'null'}], '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'}, 'source_url': {'type': 'string', 'description': 'URL canônica que reproduz a consulta na fonte'}, 'data_vintage': {'type': ['string', 'null'], 'description': 'Competência/vintage do dado segundo a fonte; null quando a fonte não expõe'}, 'retrieved_at': {'type': 'string', 'description': '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'}}, 'description': 'Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença', 'additionalProperties': False}, 'attribution': {'type': 'array', 'items': {'type': 'string'}, 'description': 'URLs canônicas das fontes desta resposta (lista de atribuição)'}, 'estatisticas': {'type': 'object', 'required': ['maximo', 'minimo', 'media', 'amplitude'], 'properties': {'media': {'type': 'number'}, 'maximo': {'type': 'number'}, 'minimo': {'type': 'number'}, 'amplitude': {'type': 'number'}}, 'description': 'EstatÃ\xadsticas descritivas dos valores no perÃ\xadodo', 'additionalProperties': False}, 'janelaAplicada': {'type': 'object', 'required': ['dataInicial', 'dataFinal', 'motivo'], 'properties': {'motivo': {'type': 'string', 'description': 'Por que a janela foi aplicada e como pedir outra'}, 'dataFinal': {'type': 'string', 'description': 'Fim da janela efetivamente consultada (dd/MM/yyyy)'}, 'dataInicial': {'type': 'string', 'description': 'InÃ\xadcio da janela efetivamente consultada (dd/MM/yyyy)'}}, 'description': 'Presente quando o perÃ\xadodo 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).', 'additionalProperties': False}}, 'additionalProperties': False}
fetch
Documento para Deep Research
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.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Identificador de um documento devolvido por `search`'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['id', 'title', 'text', 'url', 'provenance', 'attribution'], 'properties': {'id': {'type': 'string', 'minLength': 1, 'description': 'Identificador único do documento no servidor; é o que `fetch` recebe'}, 'url': {'type': 'string', 'description': 'URL pública canônica do documento â\x80\x94 a citação do ChatGPT depende dela'}, 'text': {'type': 'string', 'description': 'Conteúdo integral do documento, legÃ\xadvel (Markdown)'}, 'title': {'type': 'string', 'description': 'TÃ\xadtulo legÃ\xadvel do documento'}, 'metadata': {'type': 'object', 'description': 'Pares chave/valor adicionais sobre o documento (tipo, fonte, perÃ\xadodoâ\x80¦)', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'provenance': {'type': 'array', 'items': {'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string', 'description': 'Fonte oficial do dado'}, 'license': {'type': ['string', 'null'], 'description': 'Regime legal do dado (id SPDX quando há, senão o nome da licença)'}, 'citation': {'type': 'string', 'description': 'Citação/atribuição pronta para uso'}, 'retrieval': {'oneOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'minimum': 1, 'description': 'Tentativas somadas, incluindo as repetidas (>= requests)'}, 'requests': {'type': 'integer', 'minimum': 1, 'description': 'Idas distintas Ã\xa0 origem que compõem esta resposta (fatias, páginas)'}, 'unstable': {'type': 'boolean', 'description': 'true se houve repetição (attempts > requests) ou alguma anomalia'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string', 'description': 'Classe da anomalia (vocabulário fechado do contrato)'}, 'count': {'type': 'integer', 'minimum': 1, 'description': 'Ocorrências desta classe na chamada'}}, 'additionalProperties': False}, 'description': 'Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma'}}, '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', 'additionalProperties': False}, {'type': 'null'}], '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'}, 'source_url': {'type': 'string', 'description': 'URL canônica que reproduz a consulta na fonte'}, 'data_vintage': {'type': ['string', 'null'], 'description': 'Competência/vintage do dado segundo a fonte; null quando a fonte não expõe'}, 'retrieved_at': {'type': 'string', 'description': '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'}}, 'description': 'Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença', 'additionalProperties': False}, 'description': 'Um bloco por procedência que contribuiu com esta resposta (contrato v1.1; licenças nunca se fundem)'}, 'attribution': {'type': 'array', 'items': {'type': 'string'}, 'description': 'URLs canônicas das fontes desta resposta (lista de atribuição)'}}, 'additionalProperties': False}
search
Busca para Deep Research
Searches the Banco Central do Brasil time series (SGS: interest rates, inflation, exchange rates, credit, fiscal and external sector — the curated catalog plus the open data portal index) catalog and returns up to 10 matching documents as { id, title, url }, ordered by relevance (an empty list means nothing matched). This tool exists for the OpenAI Deep Research contract: ChatGPT deep research, company knowledge and research workflows over the Responses API require exactly the tools `search` and `fetch`. Pass one of the returned ids to `fetch` to read the document. For direct questions and for data (values, series, rankings) prefer the `bcb_*` tools, which return the actual data with provenance — this is a catalog index, not a data query. Query: natural language or keywords, Portuguese or English; accents and case are ignored. Behavior: read-only and idempotent — the catalog comes from the public source and is cached in memory.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'description': 'Termos de busca em linguagem natural ou palavras-chave (acentos e caixa são ignorados)'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'required': ['results', 'provenance', 'attribution'], 'properties': {'results': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'url'], 'properties': {'id': {'type': 'string', 'minLength': 1, 'description': 'Identificador único do documento no servidor; é o que `fetch` recebe'}, 'url': {'type': 'string', 'description': 'URL pública canônica do documento â\x80\x94 a citação do ChatGPT depende dela'}, 'title': {'type': 'string', 'description': 'TÃ\xadtulo legÃ\xadvel do documento'}}, 'additionalProperties': False}, 'description': 'Documentos encontrados, em ordem de relevância'}, 'provenance': {'type': 'array', 'items': {'type': 'object', 'required': ['source', 'source_url', 'data_vintage', 'retrieved_at', 'retrieval', 'citation', 'license'], 'properties': {'source': {'type': 'string', 'description': 'Fonte oficial do dado'}, 'license': {'type': ['string', 'null'], 'description': 'Regime legal do dado (id SPDX quando há, senão o nome da licença)'}, 'citation': {'type': 'string', 'description': 'Citação/atribuição pronta para uso'}, 'retrieval': {'oneOf': [{'type': 'object', 'required': ['requests', 'attempts', 'anomalies', 'unstable'], 'properties': {'attempts': {'type': 'integer', 'minimum': 1, 'description': 'Tentativas somadas, incluindo as repetidas (>= requests)'}, 'requests': {'type': 'integer', 'minimum': 1, 'description': 'Idas distintas Ã\xa0 origem que compõem esta resposta (fatias, páginas)'}, 'unstable': {'type': 'boolean', 'description': 'true se houve repetição (attempts > requests) ou alguma anomalia'}, 'anomalies': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'count'], 'properties': {'kind': {'enum': ['timeout', 'network', 'http_4xx', 'http_5xx', 'rate_limited', 'malformed_body'], 'type': 'string', 'description': 'Classe da anomalia (vocabulário fechado do contrato)'}, 'count': {'type': 'integer', 'minimum': 1, 'description': 'Ocorrências desta classe na chamada'}}, 'additionalProperties': False}, 'description': 'Anomalias superadas até o sucesso, somadas por classe, em ordem fixa; [] se nenhuma'}}, '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', 'additionalProperties': False}, {'type': 'null'}], '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'}, 'source_url': {'type': 'string', 'description': 'URL canônica que reproduz a consulta na fonte'}, 'data_vintage': {'type': ['string', 'null'], 'description': 'Competência/vintage do dado segundo a fonte; null quando a fonte não expõe'}, 'retrieved_at': {'type': 'string', 'description': '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'}}, 'description': 'Bloco de proveniência (contrato v1.1): fonte, URL, competência, extração, diagnóstico de origem, citação e licença', 'additionalProperties': False}, 'description': 'Um bloco por procedência que contribuiu com esta resposta (contrato v1.1; licenças nunca se fundem)'}, 'attribution': {'type': 'array', 'items': {'type': 'string'}, 'description': 'URLs canônicas das fontes desta resposta (lista de atribuição)'}}, 'additionalProperties': False}
변경됨
fetch
2026년 9월 29일 2:58 AM
변경됨
search
2026년 9월 29일 2:58 AM
변경됨
bcb_cambio_moedas
2026년 9월 29일 2:58 AM
변경됨
bcb_cambio_cotacao
2026년 9월 29일 2:58 AM
변경됨
bcb_focus_referencias
2026년 9월 29일 2:58 AM
변경됨
bcb_focus_selic
2026년 9월 29일 2:58 AM
변경됨
bcb_focus_expectativas
2026년 9월 29일 2:58 AM
변경됨
bcb_deflacionar
2026년 9월 29일 2:58 AM
변경됨
bcb_correlacao
2026년 9월 29일 2:58 AM
변경됨
bcb_comparar
2026년 9월 29일 2:58 AM
변경됨
bcb_variacao
2026년 9월 29일 2:58 AM
변경됨
bcb_indicadores_atuais
2026년 9월 29일 2:58 AM
변경됨
bcb_buscar_serie
2026년 9월 29일 2:58 AM
변경됨
bcb_series_populares
2026년 9월 29일 2:58 AM
변경됨
bcb_serie_metadados
2026년 9월 29일 2:58 AM
변경됨
bcb_serie_ultimos
2026년 9월 29일 2:58 AM
변경됨
bcb_serie_valores
2026년 9월 29일 2:58 AM
추가됨
fetch
2026년 9월 17일 12:52 PM
추가됨
search
2026년 9월 17일 12:52 PM
추가됨
bcb_cambio_moedas
2026년 9월 17일 12:52 PM
추가됨
bcb_cambio_cotacao
2026년 9월 17일 12:52 PM
추가됨
bcb_focus_referencias
2026년 9월 17일 12:52 PM
추가됨
bcb_focus_selic
2026년 9월 17일 12:52 PM
추가됨
bcb_focus_expectativas
2026년 9월 17일 12:52 PM
추가됨
bcb_deflacionar
2026년 9월 17일 12:52 PM
추가됨
bcb_correlacao
2026년 9월 17일 12:52 PM
추가됨
bcb_comparar
2026년 9월 17일 12:52 PM
추가됨
bcb_variacao
2026년 9월 17일 12:52 PM
추가됨
bcb_indicadores_atuais
2026년 9월 17일 12:52 PM
추가됨
bcb_buscar_serie
2026년 9월 17일 12:52 PM

Valuein — SEC EDGAR Fundamentals & Smart-Money Data

io.github.valuein/mcp-sec-edgar

Provides point-in-time SEC EDGAR fundamentals, filings, ownership signals, financial analysis, valuation models, research reports…

equibles

io.github.daniel3303/equibles

Provides equity and market research tools covering SEC filings, company financials, portfolios, prices, options, macroeconomic da…

EventTrader Research (read-only)

com.cymetica/event-trader-research

Offers read-only research on funds, event markets, order books, arena markets, crypto pools, backtests, and related financial ana…

World Monitor

app.worldmonitor/mcp

Delivers live geopolitical, conflict, country-risk, market, energy, climate, aviation, supply-chain, and macroeconomic intelligen…

Slacking.biz — SEC Financial Data + US Economics + Demographics + FX

io.github.Th3Slack3r/slacking-biz

Provides financial, economic, demographic, foreign-exchange, regulatory, and company research data from public sources.

TipRanks

com.tipranks/tipranks

Provides market research and investment data covering stocks, ETFs, commodities, crypto, forex, analyst ratings, news, earnings, …

welcome

com.thebalancedinvestorclub/welcome

Provides market data and educational investment research for stocks, ETFs, and crypto, including fundamentals, prices, macro indi…

Currencyformat

io.github.pipeworx-io/currencyformat

Formats localized numbers and currencies and also provides routed access to structured financial, market, government, and researc…