listar_candidatos_municipio
Retrieve candidate lists for Brazilian municipal elections by specifying year, municipality code, election type, and position code to access official electoral data.
Instructions
Lista todos os candidatos para eleições em um município específico
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ano | Yes | Ano da eleição (ex: 2020) | |
| cargo | Yes | Código do cargo | |
| 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"
},
"cargo": {
"description": "Código do cargo",
"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",
"cargo"
],
"type": "object"
}
Implementation Reference
- src/index.ts:247-262 (handler)Handler for 'listar_candidatos_municipio' tool: validates input using CandidatosParaMunicipioSchema, fetches candidates from TSE API endpoint `/candidatura/listar/{ano}/{municipio}/{eleicao}/{cargo}/candidatos`, and returns formatted text content with candidate data.case "listar_candidatos_municipio": { const params = CandidatosParaMunicipioSchema.parse(args); const data = await handleApiRequest(() => httpClient.get(`/candidatura/listar/${params.ano}/${params.municipio}/${params.eleicao}/${params.cargo}/candidatos`) ); return { content: [ { type: "text", text: `Candidatos encontrados: ${data.candidatos?.length || 0}\n\n` + JSON.stringify(data, null, 2) } ] }; }
- src/index.ts:93-119 (registration)Registration of the 'listar_candidatos_municipio' tool in the ListToolsRequest handler, including name, description, and input schema definition.name: "listar_candidatos_municipio", description: "Lista todos os candidatos para eleições em um município 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)" }, cargo: { type: "number", description: "Código do cargo" } }, required: ["ano", "municipio", "eleicao", "cargo"] } },
- src/index.ts:27-32 (schema)Zod schema for input validation of 'listar_candidatos_municipio' tool parameters, used in the handler.const CandidatosParaMunicipioSchema = z.object({ ano: z.number().int().min(2000).max(new Date().getFullYear()), municipio: z.number().int(), eleicao: z.number().int(), cargo: z.number().int() });
- src/index.ts:73-86 (helper)Helper function to handle API requests to the TSE DivulgaCandContas API, including error handling, used by the tool handler.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}`); } }