Politica Electoral MCP Server
API de datos electorales del mundo democrático: partidos políticos, perfiles ideológicos y programas electorales.
Documentation
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": "<TOOL>", "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="<term>") → 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).
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