Labsco
briancasteel logo

Politica Electoral

from briancasteel

API de datos electorales del mundo democrático: partidos políticos, perfiles ideológicos y programas electorales.

🔥🔥🔥✓ VerifiedFreeQuick setup

Política Electoral — MCP Server

A political-data API covering the democratic world: parties, politicians, public figures, events, congressional votes, institutions, parliamentary procedures and political concepts. Available as an MCP (Model Context Protocol) server over HTTP for AI-agent integrations, plus a REST API at /api/v1/* and per-page raw Markdown twins ({any-page}.md).

Most content is in Spanish. Profiles of politicians, parties and public figures are also available in English for selected countries (Spain, Argentina, Great Britain, United States, France).

Endpoints

URL Description POST /mcp-server Main JSON-RPC 2.0 endpoint GET /mcp-server Server info GET /.well-known/mcp.json MCP discovery GET /llms.txt LLM-friendly content index (ES + EN URLs) GET /openapi.json OpenAPI 3.1 spec for the REST API GET /api/docs Interactive REST API docs (Scalar)

Protocol

MCP 2024-11-05 over HTTP (JSON-RPC 2.0).

Minimal request:

POST /mcp-server
Content-Type: application/json

{
 "jsonrpc": "2.0",
 "id": 1,
 "method": "tools/call",
 "params": {
 "name": "get_parties_list",
 "arguments": { "country": "es" }
 }
}

Full handshake:

# 1. Initialize
curl -X POST https://www.politicaelectoral.com/mcp-server \
 -H "Content-Type: application/json" \
 -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"my-client","version":"1.0"}}}'

# 2. Notify ready (no response expected)
curl -X POST https://www.politicaelectoral.com/mcp-server \
 -H "Content-Type: application/json" \
 -d '{"jsonrpc":"2.0","method":"notifications/initialized","params":{}}'

# 3. List available tools
curl -X POST https://www.politicaelectoral.com/mcp-server \
 -H "Content-Type: application/json" \
 -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'

Country codes

The country argument is always an ISO 3166-1 alpha-2 code.

Code Country es Spain ar Argentina mx Mexico cl Chile co Colombia uy Uruguay pe Peru ve Venezuela br Brazil us United States gb Great Britain fr France de Germany it Italy pt Portugal nl Netherlands se Sweden pl Poland hu Hungary gr Greece ie Ireland il Israel eu European Union

Tools

The server exposes 25 tools, grouped by purpose:

  • Discovery & search : summarize_country, search

  • Parties & politicians : get_parties_list, get_party_profile, get_politicians_list, get_politician_profile, compare_parties, compare_politicians

  • Elections : get_elections_list, get_election_regions, get_election_region, get_election_region_parties, get_election_region_party

  • Public figures : get_public_figures_list, get_public_figure

  • Congress votes (Spain) : get_votes_list, get_vote

  • Institutions, procedures & concepts : get_institutions_list, get_institution, get_procedures_list, get_procedure, get_political_concepts_list, get_political_concept

  • Events : get_events_list, get_event

All tool examples below use the tools/call JSON-RPC method:

{
 "jsonrpc": "2.0",
 "id": 1,
 "method": "tools/call",
 "params": { "name": " ", "arguments": { ... } }
}

summarize_country

High-level political summary: head of government, main parties, last/next elections, recent events, totals per resource type.

{ "name": "summarize_country", "arguments": { "country": "es" } }

Free-text cross-resource search (politicians, parties, public figures, events, votes, institutions, procedures, concepts), ranked by score.

Argument Type Required Description country string yes ISO-2 country code q string yes Free-text query (≥ 2 characters) limit integer no Max results (1–50, default 20)

{ "name": "search", "arguments": { "country": "es", "q": "sanchez", "limit": 5 } }

Parties & politicians

get_parties_list

List of political parties in a country.

{ "name": "get_parties_list", "arguments": { "country": "es" } }

get_party_profile

Ideological and historical profile of a party (Markdown).

Argument Type Required Description country string yes ISO-2 country code party string yes Party slug (e.g. pp, psoe, vox)

{ "name": "get_party_profile", "arguments": { "country": "es", "party": "psoe" } }

get_politicians_list

List of politicians in a country, optionally filtered by party.

Argument Type Required Description country string yes ISO-2 country code party string no Party slug to filter

{ "name": "get_politicians_list", "arguments": { "country": "es", "party": "psoe" } }

get_politician_profile

Detailed profile of a politician: trajectory, current role and ideological positioning (Markdown).

Argument Type Required Description country string yes ISO-2 country code politician string yes Politician slug (e.g. pedro-sanchez)

{ "name": "get_politician_profile", "arguments": { "country": "es", "politician": "pedro-sanchez" } }

compare_parties

Side-by-side comparison of two parties of the same country.

{ "name": "compare_parties", "arguments": { "country": "es", "party_a": "pp", "party_b": "psoe" } }

compare_politicians

Side-by-side comparison of two politicians.

{ "name": "compare_politicians", "arguments": { "country": "es", "politician_a": "pedro-sanchez", "politician_b": "alberto-nunez-feijoo" } }

Elections

get_elections_list

List of elections available for a country, with type (generales, autonomicas, europeas) and date.

{ "name": "get_elections_list", "arguments": { "country": "es" } }

get_election_regions

List of regions (autonomous communities, states, etc.) available for a specific election.

Argument Type Required Description country string yes ISO-2 country code election string yes Election slug (e.g. generales-2023, autonomicas-2024)

{ "name": "get_election_regions", "arguments": { "country": "es", "election": "generales-2023" } }

get_election_region

Overview landing for a specific election + region: context, participating parties, key data.

Argument Type Required Description country string yes ISO-2 country code election string yes Election slug region string yes Region slug (e.g. nacional, cataluna, madrid)

{ "name": "get_election_region", "arguments": { "country": "es", "election": "generales-2023", "region": "nacional" } }

get_election_region_parties

List of parties with electoral content for a specific election + region.

{ "name": "get_election_region_parties", "arguments": { "country": "es", "election": "generales-2023", "region": "nacional" } }

get_election_region_party

Electoral programme summary for a party in a specific election + region (Markdown).

{ "name": "get_election_region_party",
 "arguments": { "country": "es", "election": "generales-2023", "region": "nacional", "party": "pp" } }

Public figures

Non-politician public figures with political relevance: monarchs, journalists, business leaders, advisors, judges, prosecutors, etc.

get_public_figures_list

Argument Type Required Description country string yes ISO-2 country code kind string no Filter by type: monarca, periodista, empresario, asesor, juez, fiscal, figura

{ "name": "get_public_figures_list", "arguments": { "country": "gb", "kind": "monarca" } }

get_public_figure

{ "name": "get_public_figure", "arguments": { "country": "gb", "slug": "king-charles-iii" } }

Congress votes (Spain only)

get_votes_list

Key votes from the Spanish Congress.

{ "name": "get_votes_list", "arguments": { "country": "es" } }

get_vote

Detailed analysis of a vote: result, party-by-party breakdown, context.

{ "name": "get_vote", "arguments": { "country": "es", "vote": "ley-amnistia-2024" } }

Institutions, procedures & concepts

get_institutions_list · get_institution

State institutions (parliament, government, judiciary, control bodies, advisory bodies).

{ "name": "get_institution", "arguments": { "country": "es", "institution": "tribunal-constitucional" } }

get_procedures_list · get_procedure

Parliamentary procedures (e.g. investiture, motion of no confidence).

{ "name": "get_procedure", "arguments": { "country": "es", "procedure": "mocion-de-censura" } }

get_political_concepts_list · get_political_concept

Political concepts (separation of powers, D'Hondt method, blank vs null vote, etc.).

Argument Type Required Description country string yes ISO-2 country code subcategory string no fundamental or electoral

{ "name": "get_political_concept", "arguments": { "country": "es", "concept": "division-de-poderes" } }

Events

Major political events: scandals, crises, foreign-policy episodes, constitutional reforms, etc.

{ "name": "get_events_list", "arguments": { "country": "es" } }
{ "name": "get_event", "arguments": { "country": "es", "event": "atentados-11m-2004" } }

Get a party's electoral programme:

get_elections_list(country) → pick election slug
get_election_regions(country, election) → pick region slug
get_election_region_parties(...) → pick party slug
get_election_region_party(...) → programme as Markdown

Get a party profile:

get_parties_list(country) → pick party slug
get_party_profile(country, ...) → ideological profile as Markdown

Free-text exploration:

search(country, q=" ") → ranked mixed-resource results

Markdown twins (raw .md URLs)

Every public page also serves a raw Markdown version by appending .md to the URL. URL slugs are per-language: Spanish uses politicos/partido/personajes, English uses politicians/party/public-figures. Country slugs also change (espanaspain, reino-unidogreat-britain, eeuuunited-states).

Spanish (canonical, all entities):

/es/{country-es}/partido/{slug}.md → party profile
/es/{country-es}/politicos/{slug}.md → politician profile
/es/{country-es}/personajes/{slug}.md → public figure profile
/es/{country-es}/eventos/{slug}.md → political event
/es/{country-es}/votaciones/{slug}.md → Congress vote (Spain)
/es/{country-es}/instituciones/{slug}.md → state institution
/es/{country-es}/procedimientos/{slug}.md → parliamentary procedure
/es/{country-es}/conceptos-politicos/{slug}.md → political concept
/es/{country-es}/{election}/{region}.md → election landing
/es/{country-es}/{election}/{region}/{party}.md → party programme summary

English (politicians + parties + public figures only, where translated):

/en/{country-en}/party/{slug}.md
/en/{country-en}/politicians/{slug}.md
/en/{country-en}/public-figures/{slug}.md

Examples:

https://www.politicaelectoral.com/es/espana/politicos/pedro-sanchez.md
https://www.politicaelectoral.com/en/spain/politicians/pedro-sanchez.md

https://www.politicaelectoral.com/es/reino-unido/personajes/king-charles-iii.md
https://www.politicaelectoral.com/en/great-britain/public-figures/king-charles-iii.md

https://www.politicaelectoral.com/es/eeuu/partido/republicano.md
https://www.politicaelectoral.com/en/united-states/party/republicano.md

If the requested language has no published .md for that slug the URL returns 404 (no fallback).

REST API

In addition to MCP, the same data is exposed as a REST API rooted at /api/v1/. Spec: /openapi.json. Interactive docs: /api/docs.

# List parties for Spain
curl 'https://www.politicaelectoral.com/api/v1/parties?country=es'

# Politician profile (English variant when available)
curl 'https://www.politicaelectoral.com/api/v1/politicians/pedro-sanchez?country=es&lang=en'

# Free-text search
curl 'https://www.politicaelectoral.com/api/v1/search?q=sanchez&country=es&limit=5'

country is always ISO-2. lang defaults to es; pass lang=en to receive the English variant (only items with EN content are returned in that case).