{
  "$schema": "https://modelcontextprotocol.io/schema/draft/mcp-server.json",
  "name": "paineldovoto-mcp-server",
  "title": "Painel do Voto Electoral Intelligence & Cartography MCP Server",
  "version": "1.0.0",
  "description": "Servidor oficial MCP do Painel do Voto. Conecta Claude Desktop, Cursor e agentes autônomos de IA à base oficial do TSE e Censo IBGE para mapeamento de seções eleitorais, cálculo de quocientes e gestão de CRM político.",
  "homepage": "https://paineldovoto.online/docs/mcp-guide.html",
  "tools": [
    {
      "name": "consultar_inteligencia_candidato",
      "description": "Consulta o desempenho eleitoral histórico, colégios de maior votação, redutos e taxa de capilaridade de qualquer candidato nas eleições do TSE.",
      "inputSchema": {
        "type": "object",
        "required": [
          "municipio_id",
          "candidato_nome_ou_numero"
        ],
        "properties": {
          "municipio_id": {
            "type": "string",
            "description": "Código IBGE ou TSE do município (ex: '3143302' para Montes Claros)"
          },
          "candidato_nome_ou_numero": {
            "type": "string",
            "description": "Nome de urna ou número eleitoral do candidato"
          },
          "ano_eleicao": {
            "type": "integer",
            "default": 2024,
            "description": "Ano do pleito (2020 ou 2024)"
          }
        }
      }
    },
    {
      "name": "gerar_mapa_calor_secoes",
      "description": "Retorna coordenadas geográficas, polígonos e densidade eleitoral por escola ou bairro para geração de mapas de calor interativos.",
      "inputSchema": {
        "type": "object",
        "required": [
          "municipio_id"
        ],
        "properties": {
          "municipio_id": {
            "type": "string",
            "description": "Código do município"
          },
          "bairro": {
            "type": "string",
            "description": "Filtro opcional de bairro ou zona eleitoral"
          },
          "metrica": {
            "type": "string",
            "enum": [
              "votos_validos",
              "abstencao",
              "brancos_nulos"
            ],
            "default": "votos_validos"
          }
        }
      }
    },
    {
      "name": "simular_quociente_eleitoral",
      "description": "Calcula o Quociente Eleitoral (QE), Quociente Partidário (QP) e projeção de cadeiras com regras de sobras eleitorais (80/20) para vereador ou deputado.",
      "inputSchema": {
        "type": "object",
        "required": [
          "total_votos_validos",
          "vagas_em_disputa",
          "votos_partido"
        ],
        "properties": {
          "total_votos_validos": {
            "type": "integer",
            "description": "Total de votos válidos estimados na cidade"
          },
          "vagas_em_disputa": {
            "type": "integer",
            "description": "Número de vagas na Câmara Municipal (ex: 15 ou 21)"
          },
          "votos_partido": {
            "type": "integer",
            "description": "Votos nominais + legenda da chapa partidária"
          }
        }
      }
    },
    {
      "name": "consultar_perfil_censo_secao",
      "description": "Cruza os dados sociodemográficos do Censo IBGE 2022 (renda média, escolaridade, faixa etária) com os colégios eleitorais da região.",
      "inputSchema": {
        "type": "object",
        "required": [
          "secao_id",
          "municipio_id"
        ],
        "properties": {
          "secao_id": {
            "type": "integer",
            "description": "Número da seção eleitoral"
          },
          "municipio_id": {
            "type": "string",
            "description": "Código do município"
          }
        }
      }
    },
    {
      "name": "gerar_relatorio_estrategico_ia",
      "description": "Gera um dossiê executivo com diagnósticos de vulnerabilidade de adversários, redutos a defender e discurso temático sugerido por bairro.",
      "inputSchema": {
        "type": "object",
        "required": [
          "municipio_id",
          "cargo"
        ],
        "properties": {
          "municipio_id": {
            "type": "string",
            "description": "Código do município"
          },
          "cargo": {
            "type": "string",
            "enum": [
              "vereador",
              "prefeito",
              "deputado_estadual",
              "deputado_federal"
            ]
          },
          "meta_votos": {
            "type": "integer",
            "description": "Meta de votação da campanha"
          }
        }
      }
    },
    {
      "name": "disparar_comunicado_whatsapp_bairro",
      "description": "Dispara mensagens segmentadas para os voluntários e eleitores cadastrados em um bairro específico via API de WhatsApp do Painel do Voto.",
      "inputSchema": {
        "type": "object",
        "required": [
          "bairro",
          "mensagem"
        ],
        "properties": {
          "bairro": {
            "type": "string",
            "description": "Nome do bairro prioritário"
          },
          "mensagem": {
            "type": "string",
            "description": "Texto do comunicado com suporte a tags dinâmicas"
          }
        }
      }
    }
  ],
  "configuration": {
    "type": "object",
    "required": [
      "apiKey"
    ],
    "properties": {
      "apiKey": {
        "type": "string",
        "description": "Chave de API emitida no painel oficial do Painel do Voto."
      },
      "apiBaseUrl": {
        "type": "string",
        "default": "https://paineldovoto.online",
        "description": "URL base da API de inteligência eleitoral."
      }
    }
  }
}