Apuração
Servidor MCP · aberto e gratuito

Pergunte ao seu assistente de IA como o Brasil vota

Leitura apenas, sem cadastro · versão 1.1.0

Ligue o Claude, o ChatGPT ou outro assistente a este endereço e ele passa a responder com os dados oficiais do TSE de cada cidade, estado, partido e candidato desde 2002, citando a página daqui de onde veio cada número.

É um servidor MCP (Model Context Protocol), o padrão aberto que os assistentes usam para consultar fontes externas. Para jornalistas, pesquisadores e qualquer pessoa curiosa.

https://www.apuracaovivo.com.br/mcp
Presidente, 2º turno
Presidente, 1º turno
Governador
Senado
Deputados
Prefeito
Vereadores
’02’06’10’14’18’22’26
Cada quadrado é uma eleição com o resultado de cada uma das 5.570 cidades, e cada candidato ligado à sua página. Tudo dos arquivos abertos do TSE.

Como ligar ao seu assistente

Leva um minuto. O endereço é o mesmo em todos: cole e pergunte.

Claude (claude.ai e apps)

  1. Abra Configurações → Conectores e clique em Adicionar conector personalizado.
  2. Dê o nome Apuração e cole o endereço abaixo. Não há login.
  3. Numa conversa, ative o conector no menu de ferramentas e pergunte.
https://www.apuracaovivo.com.br/mcp

ChatGPT

  1. Em Configurações → Apps e conectores → Avançado, ligue o modo desenvolvedor.
  2. Em Apps e conectores, clique em Criar, cole o endereço abaixo e escolha sem autenticação.
  3. Numa conversa, escolha o conector em + → Mais. As ferramentas search e fetch também servem à pesquisa aprofundada.
https://www.apuracaovivo.com.br/mcp

Claude Code

  1. No terminal:
claude mcp add --transport http apuracao https://www.apuracaovivo.com.br/mcp

Cursor, VS Code, Windsurf e outros

  1. No arquivo de configuração de MCP do editor (por exemplo, .cursor/mcp.json):
{ "mcpServers": { "apuracao": { "url": "https://www.apuracaovivo.com.br/mcp" } } }

Os menus dos assistentes mudam com frequência; se um nome acima não bater, procure por “conector” ou “MCP” nas configurações.

O que dá para perguntar

São 8 ferramentas. O assistente escolhe sozinho qual usar; abaixo, uma pergunta de exemplo para cada uma, com a resposta de verdade.

search

Buscar

“Quem é Boulos? Há mais de um candidato com esse nome?”

Acha cidades, estados, partidos e as 421 mil pessoas que concorreram desde 2002, sem se importar com acento: Guilherme Boulos (PSOL), Natália Boulos (PSOL). Cada resultado traz um id para as outras ferramentas e o link da página. O fetch abre qualquer resultado da busca, ou qualquer página do site pelo endereço.

Ver a chamada e a resposta

O assistente chama

search({"query":"Boulos","limit":3})

e recebe (trecho; o JSON completo vai junto)

{
 "results": [
  {
   "id": "person:183kmp4mgo",
   "kind": "person",
   "title": "Guilherme Boulos (PSOL)",
   "text": "Presidente · Brasil · 2018.",
   "url": "https://www.apuracaovivo.com.br/candidato/guilherme-boulos-183kmp4mgo"
  },
  {
   "id": "person:2636ul225k",
   "kind": "person",
   "title": "Natália Boulos (PSOL)",
   "text": "Deputada federal · São Paulo · 2026.",
   "url": "https://www.apuracaovivo.com.br/candidato/natalia-boulos-2636ul225k"
  }
 ],
 "hint": "Passe o id a fetch (ou use city/state/person/party) para os dados completos."
}

city

Como uma cidade vota

“Como Campinas vota para presidente desde 2002?”

Campinas deu ao PT 61,6%, 53,3%, 48,4%, 38,3%, 31,2%, 43,8%, 45,8% nos 2º turnos de 2002 a 2026. A resposta traz também prefeito e vereadores desde 2004 (Dário Saadi, REPUBLICANOS, venceu em 2024 com 66,9%), governador, senado e deputados.

2002 · 61,6%
2006 · 53,3%
2010 · 48,4%
2014 · 38,3%
2018 · 31,2%
2022 · 43,8%
2026 · 45,8%
Ver a chamada e a resposta

O assistente chama

city({"name":"Campinas","uf":"SP"})

e recebe (trecho; o JSON completo vai junto)

{
 "city": {
  "name": "Campinas",
  "uf": "SP",
  "state": "São Paulo",
  "tse_code": "62910",
  "capital": false,
  "electorate_2026": 873613,
  "population": 1139047,
  "gdp_per_capita_brl_2021": 64042,
  "literacy_15plus_pct_2022": 97.59
 },
 "url": "https://www.apuracaovivo.com.br/resultado/sp/campinas",
 "president_runoff_2026": {
  "lula_share": 0.4576,
  "flavio_share": 0.5424,
  "lula_votes": 303914,
  "flavio_votes": 360222,
  "blank": 26219,
  "turnout": 0.7903,
  "first_round_lula_share_of_the_two": 0.4232,
  "turnout_1t": 0.7643,
  "lula_share_2022_runoff": 0.4378
 },
 "president_runoffs_since_2002": [
  {
   "year": 2002,
   "pt_candidate": "Lula",
   "rival": "Serra",
   "pt_share": 0.6162,
   "turnout": 0.84
  },
  {
   "year": 2006,
   "pt_candidate": "Lula",
   "rival": "Alckmin",
   "pt_share": 0.5334,
   "turnout": 0.84
  },
  {
   "year": 2010,
   "pt_candidate": "Dilma",
   "rival": "Serra",
   "pt_share": 0.4836,
   "turnout": 0.7978
  },
  {
   "year": 2014,
   "pt_candidate": "Dilma",
   "rival": "Aécio",
   "pt_share": 0.3833,
   "turnout": 0.7896
  },
  {
   "year": 2018,
   "pt_candidate": "Haddad",
   "rival": "Bolsonaro",
   "pt_share": 0.3118,
   "turnout": 0.7762
  },
  {
   "year": 2022,
   "pt_candidate": "Lula",
   "rival": "Bolsonaro",
   "pt_share": 0.4378,
   "turnout": 0.7873
  },
  {
   "year": 2026,
   "pt_candidate": "Lula",
   "rival":
 …

state

Como um estado vota

“Que partidos governam as cidades da Bahia?”

Das 416 cidades baianas com prefeito eleito em 2024, PSD ficou com 115, AVANTE ficou com 60, PT ficou com 50. O estado vem com governador, senado, deputados e as maiores cidades, de 2002 a 2026.

Cada quadrado é uma cidade, na cor do bloco do partido do prefeito, da esquerda à direita.

Ver a chamada e a resposta

O assistente chama

state({"uf":"BA","years":[2024]})

e recebe (trecho; o JSON completo vai junto)

{
 "state": {
  "uf": "BA",
  "name": "Bahia",
  "cities": 417,
  "electorate_2026": 11312752
 },
 "url": "https://www.apuracaovivo.com.br/resultado/ba",
 "president_runoff_2026": {
  "lula_share": 0.7131,
  "flavio_share": 0.2869,
  "turnout": 0.8329,
  "first_round_lula_share_of_the_two": 0.6987,
  "lula_share_2022_runoff": 0.7218
 },
 "president_runoffs_since_2002": [
  {
   "year": 2002,
   "pt_candidate": "Lula",
   "rival": "Serra",
   "pt_share": 0.6569,
   "turnout": 0.7051
  },
  {
   "year": 2006,
   "pt_candidate": "Lula",
   "rival": "Alckmin",
   "pt_share": 0.7808,
   "turnout": 0.7671
  },
  {
   "year": 2010,
   "pt_candidate": "Dilma",
   "rival": "Serra",
   "pt_share": 0.7085,
   "turnout": 0.7517
  },
  {
   "year": 2014,
   "pt_candidate": "Dilma",
   "rival": "Aécio",
   "pt_share": 0.7015,
   "turnout": 0.7519
  },
  {
   "year": 2018,
   "pt_candidate": "Haddad",
   "rival": "Bolsonaro",
   "pt_share": 0.7269,
   "turnout": 0.7891
  },
  {
   "year": 2022,
   "pt_candidate": "Lula",
   "rival": "Bolsonaro",
   "pt_share": 0.7212,
   "turnout": 0.7952
  },
  {
   "year": 2026,
   "pt_candidate": "Lula",
   "rival": "Flavio",
   "pt_share": 0.7131,
   "turnout": 0.8329
  }
 ],
 "general_elections": [],
 "mayors_by_party": [
  {
   "year": 2024,
   "cities": 416,
   "parties": [
    {
     "party": "PSD",
     "cities": 115,
     "share": 0.2764
    },
    
 …

person

Uma pessoa, todas as eleições

“Em quais eleições Simone Tebet concorreu, e como foi?”

Todas as candidaturas de uma pessoa, de vereador a presidente, com cargo, lugar, partido, resultado e votos. A mesma pessoa é seguida entre eleições e trocas de partido pelo título de eleitor nos arquivos do TSE.

PresidenteVice-gov.SenadoraDep. estadualPrefeitaPartidoMDBPSB’02’04’06’08’10’12’14’16’18’20’22’24’26
eleitasuplente ou vicenão eleita
EsquerdaCentro-esquerdaCentroCentro-direitaDireita
Ver a chamada e a resposta

O assistente chama

person({"id":"02-ms-7m"})

e recebe (trecho; o JSON completo vai junto)

{
 "person": {
  "id": "02-ms-7m",
  "name": "Simone Nassar Tebet Rocha",
  "ballot_name": "Simone Tebet",
  "birth_year": 1970,
  "gender_tse": "F"
 },
 "url": "https://www.apuracaovivo.com.br/candidato/simone-tebet-02-ms-7m",
 "summary": {
  "candidacies": 7,
  "elected": 4,
  "first": 2002,
  "last": 2026,
  "parties": [
   "MDB",
   "PSB"
  ]
 },
 "candidacies": [
  {
   "year": 2026,
   "office": "Senador(a)",
   "place": "São Paulo",
   "place_url": "https://www.apuracaovivo.com.br/resultado/sp",
   "party": "PSB",
   "number": 400,
   "ballot_name": "Simone Tebet",
   "result": "não eleito(a)",
   "votes_1t": 8342968,
   "share_1t": 0.1923,
   "votes_2t": null,
   "share_2t": null,
   "party_bloc": "Centro-esquerda"
  },
  {
   "year": 2022,
   "office": "Presidente",
   "place": "Brasil",
   "place_url": "https://www.apuracaovivo.com.br/resultado",
   "party": "MDB",
   "number": 15,
   "ballot_name": "Simone Tebet",
   "result": "não eleito(a)",
   "votes_1t": 4902256,
   "share_1t": 0.0416,
   "votes_2t": null,
   "share_2t": null,
   "party_bloc": "Centro-direita"
  },
  {
   "year": 2014,
   "office": "Senador(a)",
   "place": "Mato Grosso do Sul",
   "place_url": "https://www.apuracaovivo.com.br/resultado/ms",
   "party": "MDB",
   "number": 151,
   "ballot_name": "Simone Tebet",
   "result": "eleito(a)",
   "votes_1t": 640336,
   "share_1t": 0.5261,
   "votes_2t":
 …

party

Um partido

“Onde o PMDB fica entre esquerda e direita, e quantos prefeitos elegeu?”

Entende nomes antigos (PMDB é o MDB de hoje). Traz a posição do partido nas três pesquisas com cientistas políticos e os resultados nacionais de cada eleição: em 2024, 859 prefeitos (15,5% das cidades) e 8.042 vereadores.

Ver a chamada e a resposta

O assistente chama

party({"name":"PMDB","years":[2024,2022]})

e recebe (trecho; o JSON completo vai junto)

{
 "party": {
  "name": "MDB",
  "former_names": [
   "PMDB"
  ]
 },
 "left_right": {
  "surveys": [
   {
    "year": 2010,
    "placement": 5.33,
    "study": "Tarouco e Madeira (2015), Os partidos brasileiros segundo seus estudiosos: análise de um expert survey, Civitas, v. 15, n. 1",
    "url": "https://www.redalyc.org/pdf/742/74237096011.pdf",
    "who": "47 cientistas políticos num encontro da ABCP"
   },
   {
    "year": 2018,
    "placement": 7.01,
    "study": "Bolognesi, Ribeiro e Codato (2023), Uma nova classificação ideológica dos partidos políticos brasileiros, Dados, v. 66, n. 2",
    "url": "https://doi.org/10.1590/dados.2023.66.2.303",
    "who": "519 associados da ABCP"
   },
   {
    "year": 2022,
    "placement": 6.5,
    "study": "Bolognesi, Ribeiro, Codato e Silva (2025), O desaparecimento do centro ideológico no sistema partidário brasileiro, Opinião Pública, v. 31",
    "url": "https://doi.org/10.1590/1807-0191202531120",
    "who": "cientistas políticos brasileiros e brasilianistas"
   }
  ],
  "by_election": [
   {
    "year": 2024,
    "kind": "estimativa",
    "value": 6.5,
    "lo": 5.33,
    "hi": 7.01,
    "scale": "0 (esquerda) a 10 (direita)",
    "evidence": "alta",
    "method": "https://www.apuracaovivo.com.br/metodologia/eleicoes#partidos",
    "note": "Bloco: Centro-direita. Pesquisas que o classificaram: 2010, 2018, 2022."
   },
   {
    "ye
 …

race

Uma eleição

“Como ficaram as câmaras de vereadores do Brasil em 2024?”

Uma disputa inteira: cargo, ano e lugar (cidade, estado ou Brasil). As 58.081 cadeiras de vereador de 2024, por partido:

MDB 8.042 · PP 6.924 · PSD 6.577 · UNIÃO 5.461 · cada quadrado, 1% das cadeiras, na cor do bloco do partido.
Ver a chamada e a resposta

O assistente chama

race({"office":"city_council","year":2024,"place":"BR"})

e recebe (trecho; o JSON completo vai junto)

{
 "race": {
  "office": "city_council",
  "year": 2024,
  "place": "Brasil"
 },
 "url": "https://www.apuracaovivo.com.br/resultado",
 "level": "Brasil (soma de estados e cidades, por partido)",
 "by_party": [
  {
   "party": "MDB",
   "council_seats": 8042,
   "council_seats_share": 0.1385,
   "council_votes": 11441535,
   "council_votes_share": 0.1025
  },
  {
   "party": "PP",
   "council_seats": 6924,
   "council_seats_share": 0.1192,
   "council_votes": 10245434,
   "council_votes_share": 0.0918
  },
  {
   "party": "PSD",
   "council_seats": 6577,
   "council_seats_share": 0.1132,
   "council_votes": 10518219,
   "council_votes_share": 0.0942
  },
  {
   "party": "UNIÃO",
   "council_seats": 5461,
   "council_seats_share": 0.094,
   "council_votes": 9344988,
   "council_votes_share": 0.0837
  },
  {
   "party": "PL",
   "council_seats": 4933,
   "council_seats_share": 0.0849,
   "council_votes": 10219059,
   "council_votes_share": 0.0916
  },
  {
   "party": "REPUBLICANOS",
   "council_seats": 4632,
   "council_seats_share": 0.0798,
   "council_votes": 8218875,
   "council_votes_share": 0.0736
  },
  {
   "party": "PSB",
   "council_seats": 3569,
   "council_seats_share": 0.0614,
   "council_votes": 6573864,
   "council_votes_share": 0.0589
  },
  {
   "party": "PT",
   "council_seats": 3123,
   "council_seats_share": 0.0538,
   "council_votes": 7285159,
   "council_votes
 …

Toda estimativa vem com o seu intervalo

Contagens do TSE saem como são. Já qualquer número que seja um modelo ou uma classificação sai sempre embrulhado: valor, intervalo, nível de evidência e o link do método, com o rótulo “estimativa”. Um escore sem intervalo não é repassado.

Assim o assistente não repete “+0,42” como fato. Abaixo, a posição de alguns partidos como o servidor a entrega: o quadrado é o valor de 2026; a barra, o quanto ela variou entre as pesquisas.

034.55.5710
PSOL
PT
PSB
PDT
MDB
PSD
UNIÃO
NOVO
PL
esquerdadireita
O formato de uma estimativa
{
 "kind": "estimativa",
 "value": 6.5,
 "lo": 5.33,
 "hi": 7.01,
 "scale": "0 (esquerda) a 10 (direita)",
 "evidence": "alta",
 "method": "https://www.apuracaovivo.com.br/metodologia/eleicoes#partidos",
 "note": "Bloco: Centro-direita. Pesquisas que o classificaram: 2010, 2018, 2022."
}

Escala de 0 (esquerda) a 10 (direita), das pesquisas com cientistas políticos de 2010, 2018 e 2022. Como os partidos são posicionados.

O que vem a seguir

O servidor cresce com o site. Cada nova camada de dados entra nas ferramentas assim que é publicada, sem mudar o endereço.

Regras de uso

Para desenvolvedores

Transporte HTTP “streamable” do MCP, sem sessão: cada POST é uma mensagem JSON-RPC respondida em JSON. Versões do protocolo aceitas: 2024-11-05 a 2025-11-25. Um GET no mesmo endereço devolve esta página, a menos que peça text/event-stream.

curl -s https://www.apuracaovivo.com.br/mcp \
  -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search","arguments":{"query":"Campinas"}}}'