
Politica Electoral
from briancasteel
API de datos electorales del mundo democrático: partidos políticos, perfiles ideológicos y programas electorales.
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": { ... } }
}
Discovery & search
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" } }
search
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" } }
Recommended flow
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
(espana→spain, reino-unido→great-britain, eeuu→united-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).
This tool doesn't publish a standard install command — the repository README on GitHub covers its setup.
No common issues documented yet. If you hit a problem, the repository's GitHub Issues page is the best place to look.
License & usage
Data is sourced from each party's official electoral programmes. Profiles and analysis are generated with AI from public sources. Free use for non-commercial projects with attribution.
Site: politicaelectoral.com