# EP Votes

> European Parliament roll-call votes, MEP records and dossiers from official records.

- name: com.epvotes/epvotes
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 100/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.epvotes%2Fepvotes
- tools: https://api.protogrid.dev/v1/servers/com.epvotes%2Fepvotes/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "epvotes": {
      "type": "http",
      "url": "https://epvotes.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-17d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 100/100 (strong)

### protocol: 100 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- pass `protocol.list_ttl`: tool list is cacheable (ttlMs 3600000)

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 6 of 6 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 1,568 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: 3 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 6, about 1,568 tokens to load them all
- tool set hash: e4804c68a44ee5c7502266dc6d9469b0
- tools last changed: 2026-10-22T20:52:03.249Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.epvotes/epvotes.svg)](https://protogrid.dev/servers/com.epvotes/epvotes)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-22 `get_mep` changed (description, inputSchema)
  - before: Use this when the user asks about one Member of the European Parliament: country, political group, committees, how often they vote with their group, where they broke with it, and their recent roll-call votes. Takes an MEP id or a name. Set topic to keep only votes whose titles contain those words (e.g. "digital euro", "Mercosur").
  - after: Use this when the user asks about one Member of the European Parliament: country, political group, committees, how often they vote with their group, where they broke with it, and their recent roll-call votes. Takes an MEP id or a name. Set topic to keep only votes whose label, agenda item topic or dossier title contains those words (e.g. "digital euro", "Mercosur"). Set from and to to read one period; page through all votes of the term with page.
- 2026-10-22 `get_dossier` changed (inputSchema)
- 2026-10-22 `list_votes` changed (description, inputSchema)
  - before: Use this when the user asks what the European Parliament voted on a sitting day, this week, between two dates or on a subject, e.g. "what did Parliament vote today" or "votes on Ukraine in October". Without arguments it returns the latest sitting day. Votes are grouped by agenda item; each item has its deciding (final) vote with result and totals and the vote ids for get_vote. Lists at most 40 items.
  - after: Use this when the user asks what the European Parliament voted on a sitting day, this week, between two dates or on a subject, e.g. "what did Parliament vote today" or "votes on Ukraine in October". Without arguments it returns the latest sitting day; with only a query it searches the last 92 days. Votes are grouped by agenda item; each item has its deciding (final) vote with result and totals and the ids of its other votes for get_vote. Lists at most 40 items.

Full history: https://api.protogrid.dev/v1/servers/com.epvotes%2Fepvotes/changes

## Remotes

- https://epvotes.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (6)

- `compare_groups`: Use this when the user wants to compare how two or three European Parliament political groups voted across recent final votes on texts (amendments left out), e.g. "how often did EPP and S&D vote the same way". Groups: The Left, S&D, Greens/EFA, Renew, EPP, ECR, PfE, ESN.
- `get_dossier`: Use this when the user asks about one European Parliament dossier (procedure): what it is, its type, lead committee, rapporteurs, the steps so far in Parliament, its plenary votes, and the Legislative Observatory summary. Takes a procedure reference such as "2023/0212(COD)" or an id such as "2023-0212" (use search_parliament first if you only know the title).
- `get_mep`: Use this when the user asks about one Member of the European Parliament: country, political group, committees, how often they vote with their group, where they broke with it, and their recent roll-call votes. Takes an MEP id or a name. Set topic to keep only votes whose label, agenda item topic or dossier title contains those words (e.g. "digital euro", "Mercosur"). Set from and to to read one period; page through all votes of the term with page.
- `get_vote`: Use this when you need the result of one European Parliament roll-call vote: totals, the split by political group and by country, the dossier it belongs to, and optionally how individual MEPs voted. Takes a vote id from list_votes, get_dossier or get_mep (or an epvotes.com/votes/<id> url). Set members to a group (e.g. "EPP", "S&D") or a country code (e.g. "DE", "FRA") to list those MEPs' votes.
- `list_votes`: Use this when the user asks what the European Parliament voted on a sitting day, this week, between two dates or on a subject, e.g. "what did Parliament vote today" or "votes on Ukraine in October". Without arguments it returns the latest sitting day; with only a query it searches the last 92 days. Votes are grouped by agenda item; each item has its deciding (final) vote with result and totals and the ids of its other votes for get_vote. Lists at most 40 items.
- `search_parliament`: Use this when you need to find a European Parliament dossier (legislative or non-legislative procedure), an MEP, a committee, a political group or an EP document by name, topic or reference, and you do not know its id yet. Returns up to 15 matching records with their ids and epvotes.com urls; pass an id to get_dossier or get_mep next. Matches words in titles and names (e.g. "digital euro", "Metsola", "ECON", "2023/0212(COD)"). Do not use it for votes of a day; use list_votes.
