# Dados B3

> Brazilian stock (B3) fundamentals: ratios, dividends, scores, FIIs, ETFs, BDRs. Open methodology.

- name: io.github.Val7h/dados-b3
- version: 1.9.0
- connection class: R0 (autonomous)
- trust: 93/100
- quality: 83/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.Val7h%2Fdados-b3
- tools: https://api.protogrid.dev/v1/servers/io.github.Val7h%2Fdados-b3/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "dados-b3": {
      "type": "http",
      "url": "https://dadosb3.com/mcp/"
    }
  }
}
```


## Trust

- hygiene: 95
- liveness: 100
- freshness: 100
- provenance: 80
- drivers: +repository +namespace-matches-repo +reachable +uptime-100% +updated-9d-ago -unpinned-packages(1)
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 83/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 2 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 25 of 25 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 5,253 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 36 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 25, about 5,253 tokens to load them all
- tool set hash: 66efc821421ce0784846429c89f2734d
- tools last changed: 2026-10-18T20:00:28.986Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.Val7h/dados-b3.svg)](https://protogrid.dev/servers/io.github.Val7h/dados-b3)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-18 `screener` changed (description, inputSchema)
  - before: Filtra as AÇÕES do universo por faixas de indicadores (só ações — para fundo imobiliário use `screener_fiis`, cujos filtros são outros: P/VP, DY, segmento, cotistas). `filtros` é um dict tipo {"roic_min": 0.15, "dl_ebitda_max": 2}. Indicadores: roic, roe, margem_bruta, margem_ebit, margem_liquida, dl_ebitda, cresc_receita_1a, cresc_receita_5a_cagr (sufixos _min/_max). Sem `ano` usa o último de cada empresa. `as_of` ("AAAA-MM-DD") responde outra pergunta: o que estava PÚBLICO naquela data (balanço já recebido pela CVM, ~100 dias depois do exercício) — use para pesquisa sem olhar o futuro; cada linha traz `disponivel_em`. `ano` e `as_of` não se combinam. O universo continua o das companhias ativas hoje (viés de sobrevivência, declarado na resposta). `recibo=True` congela a resposta num endereço permanente com o sha256 do resultado — use quando for CITAR a lista, porque ela muda quando a base for atualizada e o recibo não. Só valores SEM flag entram. Requer chave_api (grátis ou Pro).
  - after: Filtra as AÇÕES do universo por faixas de indicadores (só ações — para fundo imobiliário use `screener_fiis`, cujos filtros são outros: P/VP, DY, segmento, cotistas). `filtros` é um dict tipo {"roic_min": 0.15, "dl_ebitda_max": 2}. Indicadores: roic, roe, margem_bruta, margem_ebit, margem_liquida, dl_ebitda, cresc_receita_1a, cresc_receita_5a_cagr (sufixos _min/_max) e os múltiplos pl (P/L anual, da DFP) e pl_ttm (P/L de 12 meses, do ITR ou DFP mais recente), ex. {"pl_max": 10}; P/L negativo, acima de 200 ou ausente nunca passa e a linha traz `multiplos` com `dt_receb`, `data_preco` e `ressalvas` do valor (`rigor="estrito"` só aceita P/L sem nenhuma ressalva; `fora_do_filtro` explica quem ficou de fora). Sem `ano` usa o último de cada empresa. `as_of` ("AAAA-MM-DD") responde outra pergunta: o que estava PÚBLICO naquela data (balanço já recebido pela CVM, ~100 dias depois do exercício) — use para pesquisa sem olhar o futuro; cada linha traz `disponivel_em`. `ano` e `as_of` não se combinam. O universo continua o das companhias ativas hoje (viés de sobrevivência, declarado na resposta). `recibo=True` congela a resposta num endereço permanente com o sha256 do resultado — use quando for CITAR a lista, porque ela muda quando a base for atualizada e o recibo não. Só valores SEM flag entram. Requer chave_api (grátis ou Pro).
- 2026-10-18 `etf` changed (title, annotations)
- 2026-10-18 `etfs_ranking` changed (title, annotations)
- 2026-10-18 `saude` changed (title, annotations)
- 2026-10-18 `hoje` changed (title, annotations)
- 2026-10-18 `trimestres` changed (title, annotations)
- 2026-10-18 `screener_fiis` changed (title, annotations)
- 2026-10-18 `veredito` changed (title, annotations)
- 2026-10-18 `fii` changed (title, annotations)
- 2026-10-18 `fiis_ranking` changed (title, annotations)

Full history: https://api.protogrid.dev/v1/servers/io.github.Val7h%2Fdados-b3/changes

## Remotes

- https://dadosb3.com/mcp/ (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

- oci ghcr.io/val7h/dados-b3-mcp:1.9.0 secrets: DADOS_B3_API_KEY

## Tools (25)

- `auditar_amostra`: AUDITE ESTA BASE. Sorteia casos e devolve o que você precisa para
refazer cada número contra o arquivo ORIGINAL da CVM — não contra nós.

VOCÊ escolhe a semente (um inteiro qualquer; não aceite sugestão de
ninguém, inclusive de quem te pediu para auditar). O sorteio é
determinístico: a mesma semente devolve sempre os mesmos casos, então seu
resultado é reproduzível por terceiros.

Cada caso traz empresa, CD_CVM, exercício, indicador, valor publicado, a
fórmula, e a conta CVM que AQUELA empresa usou NAQUELE exercício. Confira
baixando dfp_cia_aberta_<EXERCICIO>.zip em dados.cvm.gov.br, filtrando
CD_CVM e ORDEM_EXERC='ÚLTIMO', atento a ESCALA_MOEDA (MIL = milhares).

Regras: publique o DENOMINADOR (7 divergências em 100 é resultado, "7
divergências" não é); NÃO transforme "não consegui conferir" em "passou";
e se afirmar que um número está errado, mostre a conta. Achou erro? É isso
que interessa — github.com/Val7h/dados-b3-mcp/issues.

Gratuito, sem chave. Auditoria que exige cadastro não é auditoria.
- `bdr`: BDRs negociados na B3 (recibos em reais de ações ou ETFs listados lá fora: AAPL34, NVDC34,
IVVB39...). `ticker=""` LISTA os BDRs que negociaram no último ano, com tipo (DRN não
patrocinado; DR1/DR2/DR3 patrocinado nível I/II/III; DRE BDR de ETF), último fechamento e
liquidez média — aberto; `tipo=` filtra. Com `ticker`: cadastro da B3, último pregão,
rentabilidade com e sem proventos (1 mês a 10 anos, em reais, já com o câmbio), proventos por
BDR em R$ e desdobramentos com a conferência pelo preço. `serie=True` devolve o fechamento
DIÁRIO em colunas (sem chave, amostra dos últimos 30 pregões). AAPL34 é aberto; os demais exigem
chave_api. NÃO tem o código da ação lá fora nem a proporção BDR:ação. Não é recomendação.
- `desempenho`: Desempenho de uma AÇÃO num período em POUCOS números, calculado no servidor: retorno,
drawdown máximo (com as datas) e volatilidade do comprar-e-manter, e o mesmo para um
cruzamento de médias móveis (padrão 21 × 100). Padrão: últimos 5 anos. Preço AJUSTADO por
eventos societários; em PREÇO e, quando há proventos registrados, também o retorno TOTAL (`retorno_total_pct`: dividendos, JCP e rendimentos reinvestidos no data-ex); SEM custos (as `premissas` vêm na resposta). Use esta
ferramenta para "essa estratégia valeu a pena?" em vez de baixar a série diária.
Medida do passado, não recomendação. ABERTA para todos os tickers, sem chave (degustação);
chave_api é aceita mas desnecessária.
- `dicionario`: Metodologia dos indicadores em JSON: fórmula, contas CVM e a BASE do
lucro de cada um. IMPORTANTE para comparar corretamente: margem_liquida usa
lucro consolidado TOTAL; roe usa lucro dos CONTROLADORES. Gratuito.
- `dividendos`: Histórico de proventos em dinheiro (dividendos e JCP) de uma empresa da
B3: valor por ação, data de aprovação, data-com e preço na data-com, mais
resumo anual e dividend yield 12 meses. ABERTA para todos os tickers, sem chave
(o mesmo dado é público em dadosb3.com/acoes/TICKER/dividendos); chave_api é
aceita mas desnecessária. Cite a página ao usar o número.
- `etf`: Detalhe de um ETF: cadastro (CVM + B3), último informe diário (cota,
patrimônio, cotistas), ágio/deságio dos últimos 30 pregões, taxa efetiva
mês a mês, carteira mais recente (10 maiores) e sobreposição com ETFs do
mesmo índice, retornos pela cota e pelo preço. BOVA11 é o ETF aberto para
degustação; os demais exigem chave_api (grátis ou Pro).
- `etfs_ranking`: ETFs listados na B3: mais negociados, maior patrimônio, maior deságio e
maior ágio sobre a cota (preço ÷ cota do MESMO dia), retorno de 12 meses
pela cota (retorno total por construção) e menor taxa EFETIVA (despesa do
balancete ÷ PL médio, anualizada — a nominal não existe em fonte pública).
Só ETF líquido (> R$ 1 mi/dia) entra em ágio, retorno e taxa. Gratuito.
- `eventos`: Desdobramentos, grupamentos, bonificações e CISÕES de uma empresa, com a
FONTE de cada um (declarado pela B3 ou achado por nós) e o que o preço disse
(confirmou, não distingue, discorda). Eventos do mesmo dia são uma operação:
`efeito_liquido_do_dia` é o multiplicador do grupo (0,01 × 100 = 1,0).
WEGE3 gratuita; demais tickers exigem chave_api.
- `fatos_contabeis`: Contas padronizadas de uma AÇÃO (receita, EBIT, lucro, PL, dívida,
caixa...) com a conta CVM de origem de cada número — auditável de ponta a
ponta. `trimestral` escolhe a granularidade: False lê os DFP anuais, True
lê os ITR (Q1-Q3 isolado); os dois cobrem o mesmo histórico.

Só ações. FII não publica DFP/ITR nesse formato — o que existe é o informe
mensal, exposto por `fii`.

WEGE3 gratuita; demais exigem chave_api.
- `fii`: Detalhe de um fundo imobiliário (FII): cadastro, último informe
(cotistas/PL/competência), a série histórica de P/VP ponto-no-tempo, o DY 12m
corrente e os últimos rendimentos pagos. MXRF11 é o FII aberto para
degustação; demais fundos exigem chave_api (grátis ou Pro).
- `fiis_ranking`: Ranking dos fundos imobiliários (FIIs): os mais descontados (menor P/VP),
os maiores pagadores (DY 12m) e a mediana de P/VP e DY por segmento. Tudo do
informe mensal da CVM + COTAHIST, só valores limpos (sem flag) e fundos
líquidos. Requer chave_api (grátis ou Pro); o FII MXRF11 é aberto para
degustação nas ferramentas por ticker.
- `hoje`: O que mudou no mercado brasileiro nos últimos 30 dias.

Responde "o que aconteceu com a empresa X esta semana" — a pergunta que
nenhuma série anual responde. Traz, na janela: os balanços que ficaram
públicos (com a data de entrega à CVM), os documentos REENVIADOS (a
companhia republicou o que já tinha entregue), os proventos de ações
aprovados, rendimentos e informes de FII, eventos societários
(grupamento, desdobramento, bonificação) e trocas de ticker.

Cada seção declara `dados_ate`, a data máxima daquela FONTE: as defasagens
são diferentes e a janela é fixa a partir de hoje, então fonte parada
aparece parada em vez de parecer recente. Gratuito, sem chave.
- `indicadores_anuais`: Série anual (2010–hoje) de ROIC, ROE, margens, crescimento e dívida
líquida/EBITDA de uma AÇÃO da B3, com flags de qualidade.

Só ações. Ticker de fundo imobiliário (terminado em 11, como MXRF11) NÃO
se consulta aqui — FII não tem ROIC nem EBITDA, tem P/VP, DY e vacância:
use `fii`. Banco e seguradora entram, mas sem ROIC/EBITDA, que não se
aplicam ao plano de contas deles.

WEGE3 é gratuita; demais tickers exigem chave_api (grátis ou Pro).
- `indice`: Índices da B3 (IBOV, IFIX, SMLL, IDIV, IBXX...): o benchmark para comparar
um papel ou uma estratégia. Padrão: o DESEMPENHO do índice num período
(retorno, queda máxima, volatilidade; comprar e manter e cruzamento de médias
21 × 100), últimos 5 anos, ABERTO sem chave. `serie=True` devolve o
fechamento DIÁRIO em pontos como colunas (`data`, `fechamento`): sem chave
vem uma AMOSTRA dos últimos 30 pregões com `aviso`; com chave_api, a série
inteira. `codigo=""` lista os índices disponíveis e a cobertura de cada um.
Índice de RETORNO TOTAL (a B3 reinveste os proventos nos pontos); não é recomendação.
- `listar_empresas`: Lista as companhias abertas brasileiras (AÇÕES), com nome, CNPJ e ticker
quando resolvido. A contagem vem na resposta — nunca escrita aqui, que é
lida por clientes de IA e envelheceria sem ninguém ver.

Só ações. Fundo imobiliário NÃO entra nesta lista: para FII use
`fiis_ranking` (a lista) ou `fii` (um fundo). Gratuito, sem chave.
- `metodologia`: Metodologia pública dos indicadores. Sem argumento, lista as páginas;
com nome (ex.: 'roic'), devolve o texto completo. Gratuito.
- `multiplos`: Múltiplos ponto-no-tempo de uma AÇÃO (P/L, P/VP, EV/EBITDA anuais; P/L TTM
trimestral) — preço do 1º pregão APÓS a publicação real do balanço, sem
vazamento de informação futura.

Só ações. Para o P/VP de um fundo imobiliário use `fii`, que o calcula
sobre o informe mensal da CVM, não sobre balanço trimestral.

WEGE3 gratuita; demais exigem chave_api.
- `precos`: Série DIÁRIA de preços de uma AÇÃO numa chamada só (abertura, máxima,
mínima, fechamento, médio, volume, quantidade, negócios), do COTAHIST da B3,
do mais antigo ao mais recente. `de`/`ate` em AAAA-MM-DD recortam; `limite`
(padrão 1500, máximo 20000) corta a partir do mais antigo e avisa.

O preço NÃO é ajustado: os eventos societários do período vêm junto
(`eventos`) para quem monta o retorno total. WEGE3 gratuita; demais
tickers SEM chave devolvem uma AMOSTRA (últimos 30 pregões) com um `aviso` que diz como ter a série
inteira (chave grátis em `chave_api`) e que `desempenho` responde sem chave; com chave, a série completa.

★ FORMATO COMPACTO (04/10/2026). Cinco anos de série completa pesam ~250 KB,
mais do que cabe no contexto de um cliente de IA (o ChatGPT recebeu os 1.248
pregões e não conseguiu processá-los). Por padrão a resposta traz só
`data,fechamento` em forma de colunas (`colunas` + `linhas`, ~28 KB). Peça
mais com `campos` (lista separada por vírgula entre data, ticker, abertura,
maxima, minima, fechamento, medio, volume, quantidade, negocios) ou
`campos="todos"` para a lista completa de objetos em `serie`.
- `reapresentacoes`: Balanços REPUBLICADOS de uma empresa: quando um número do exercício muda
entre o arquivo original e a republicação, as duas versões ficam lado a lado
(ano, conta CVM, valor antigo × novo, variação). Diferencial do Dados B3 —
reapresentação registrada, nunca corrigida em silêncio. WEGE3 gratuita.
- `saude`: Cobertura atual do banco (contagens e última ingestão). Gratuito.
- `scores`: Scores fundamentalistas prontos com a conta aberta: Piotroski F-Score
(0-9, cada um dos 9 critérios auditável) e o critério de Graham (barato se
P/L × P/VP ≤ 22,5). Banco não tem Piotroski. WEGE3 gratuita.
- `screener`: Filtra as AÇÕES do universo por faixas de indicadores (só ações — para
fundo imobiliário use `screener_fiis`, cujos filtros são outros: P/VP, DY,
segmento, cotistas). `filtros` é um dict
tipo {"roic_min": 0.15, "dl_ebitda_max": 2}. Indicadores: roic, roe,
margem_bruta, margem_ebit, margem_liquida, dl_ebitda, cresc_receita_1a,
cresc_receita_5a_cagr (sufixos _min/_max) e os múltiplos pl (P/L anual,
da DFP) e pl_ttm (P/L de 12 meses, do ITR ou DFP mais recente), ex.
{"pl_max": 10}; P/L negativo, acima de 200 ou ausente nunca passa e a
linha traz `multiplos` com `dt_receb`, `data_preco` e `ressalvas` do valor
(`rigor="estrito"` só aceita P/L sem nenhuma ressalva; `fora_do_filtro`
explica quem ficou de fora). Sem `ano`
usa o último de cada empresa. `as_of` ("AAAA-MM-DD") responde outra pergunta: o que estava
PÚBLICO naquela data (balanço já recebido pela CVM, ~100 dias depois do
exercício) — use para pesquisa sem olhar o futuro; cada linha traz
`disponivel_em`. `ano` e `as_of` não se combinam. O universo continua o
das companhias ativas hoje (viés de sobrevivência, declarado na resposta).
`recibo=True` congela a resposta num endereço permanente com o sha256 do
resultado — use quando for CITAR a lista, porque ela muda quando a base
for atualizada e o recibo não.
Só valores SEM flag entram. Requer chave_api (grátis ou Pro).
- `screener_fiis`: Filtra os FIIs por faixas. `filtros` é um dict tipo
{"pvp_max": 0.9, "dy_min": 0.10, "segmento": "Logística", "cotistas_min": 5000}.
Válidos: pvp_min, pvp_max, dy_min, dy_max (limites inclusivos), segmento
(match exato, sem caixa) e cotistas_min (piso de liquidez). Só entram valores
limpos (P/VP e DY sem flag). Ordena por P/VP crescente, teto de 100. Requer
chave_api (grátis ou Pro).
- `trimestres`: Série TRIMESTRAL de uma AÇÃO: contas da ITR, preço do trimestre e
indicadores (margem bruta, margem EBIT, margem líquida e ROE TTM).

Use quando a pergunta for sobre o ANO CORRENTE ou o trimestre mais recente
("como foi o 2T", "a margem melhorou este ano?"): a série anual só responde
depois que o exercício fecha, e fica até um ano defasada.

O 4º TRIMESTRE NÃO VEM, e é escolha: a ITR publica 1T/2T/3T e o exercício
fechado é da DFP. Dá para derivar `4T = anual − 9M`, e não derivamos —
número calculado por nós não entra na mesma lista dos que a companhia
reportou. Para o ano fechado use `indicadores_anuais`.

Banco e seguradora recebem só margem líquida e ROE: não há resultado bruto
nem EBIT nesse plano de contas.

WEGE3 gratuita; demais exigem chave_api.
- `veredito`: Resumo DESCRITIVO de uma AÇÃO da B3 em seis números e três perguntas —
ganha dinheiro? (margem líquida, ROIC), está endividada? (dívida
líquida/EBITDA), está cara em relação ao setor e à própria história? (P/L,
P/VP) — cada um com faixa numérica e comparação com a mediana do setor,
com a história da própria empresa e com o universo; mais a BANDEIRA DE
CONFIANÇA do retrato (verde/amarelo/vermelho: houve reapresentação? o dado
é o mais recente? passou nas conferências?). Uma frase de topo de até 25
palavras. Sem adjetivo de julgamento e sem recomendação: quem conclui é
quem lê. Gratuito, sem chave. Traz `citacao` pronta para citar.
