consultar_candidato
Retrieve detailed information about a specific candidate using election year, municipality code, election code, and candidate ID to access Brazilian electoral data.
Instructions
Consulta informações detalhadas sobre um candidato específico
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ano | Yes | Ano da eleição (ex: 2020) | |
| candidato | Yes | Código do candidato | |
| eleicao | Yes | Código da eleição (ex: 2030402020 para eleições municipais de 2020) | |
| municipio | Yes | Código do município (ex: 35157 para São Paulo) |
Input Schema (JSON Schema)
{
"properties": {
"ano": {
"description": "Ano da eleição (ex: 2020)",
"maximum": 2025,
"minimum": 2000,
"type": "number"
},
"candidato": {
"description": "Código do candidato",
"type": "number"
},
"eleicao": {
"description": "Código da eleição (ex: 2030402020 para eleições municipais de 2020)",
"type": "number"
},
"municipio": {
"description": "Código do município (ex: 35157 para São Paulo)",
"type": "number"
}
},
"required": [
"ano",
"municipio",
"eleicao",
"candidato"
],
"type": "object"
}
Implementation Reference
- src/index.ts:264-284 (handler)Handler for the 'consultar_candidato' tool: parses input arguments using ConsultaCandidatoSchema, makes API request to fetch candidate details, formats response with key info and full JSON.case "consultar_candidato": { const params = ConsultaCandidatoSchema.parse(args); const data = await handleApiRequest(() => httpClient.get(`/candidatura/buscar/${params.ano}/${params.municipio}/${params.eleicao}/candidato/${params.candidato}`) ); return { content: [ { type: "text", text: `Informações do candidato:\n\n` + `Nome: ${data.nomeCompleto || data.nomeUrna || 'N/A'}\n` + `Número: ${data.numero || 'N/A'}\n` + `Partido: ${data.partido?.nome || 'N/A'} (${data.partido?.sigla || 'N/A'})\n` + `Cargo: ${data.cargo?.nome || 'N/A'}\n` + `Situação: ${data.descricaoSituacao || 'N/A'}\n\n` + `Detalhes completos:\n${JSON.stringify(data, null, 2)}` } ] }; }
- src/index.ts:34-39 (schema)Zod schema defining input parameters for consultar_candidato: ano, municipio, eleicao, candidato.const ConsultaCandidatoSchema = z.object({ ano: z.number().int().min(2000).max(new Date().getFullYear()), municipio: z.number().int(), eleicao: z.number().int(), candidato: z.number().int() });
- src/index.ts:120-147 (registration)Registration of the 'consultar_candidato' tool in the ListTools response, providing name, description, and input schema.{ name: "consultar_candidato", description: "Consulta informações detalhadas sobre um candidato específico", inputSchema: { type: "object", properties: { ano: { type: "number", description: "Ano da eleição (ex: 2020)", minimum: 2000, maximum: new Date().getFullYear() }, municipio: { type: "number", description: "Código do município (ex: 35157 para São Paulo)" }, eleicao: { type: "number", description: "Código da eleição (ex: 2030402020 para eleições municipais de 2020)" }, candidato: { type: "number", description: "Código do candidato" } }, required: ["ano", "municipio", "eleicao", "candidato"] } },
- src/index.ts:73-86 (helper)Helper function used by the handler to make API requests and handle errors gracefully.async function handleApiRequest(request: () => Promise<any>): Promise<any> { try { const response = await request(); return response.data; } catch (error) { if (axios.isAxiosError(error)) { if (error.response?.status === 404) { throw new Error("Dados não encontrados para os parâmetros informados"); } throw new Error(`Erro na API: ${error.response?.status} - ${error.response?.statusText}`); } throw new Error(`Erro inesperado: ${error}`); } }