# io.github.cyanheads/sweden-parliament-mcp-server (remote · sweden-parliament.caseyjhand.com)

Search Swedish parliamentary documents, speeches, votes, members, and statutes.

- Trust score: 76/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `sweden-parliament.caseyjhand.com`: 76/100 (this document), [markdown](https://verifymcp.io/servers/cyanheads-sweden-parliament-mcp-server/sweden-parliament.md), [page](https://verifymcp.io/servers/cyanheads-sweden-parliament-mcp-server/sweden-parliament)
- npm · `@cyanheads/sweden-parliament-mcp-server`: 73/100, [markdown](https://verifymcp.io/servers/cyanheads-sweden-parliament-mcp-server/cyanheads-sweden-parliament-mcp-server.md), [page](https://verifymcp.io/servers/cyanheads-sweden-parliament-mcp-server/cyanheads-sweden-parliament-mcp-server)

## Channel facts

- Endpoint: `https://sweden-parliament.caseyjhand.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.1.2`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 83/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 56/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 1870 tokens (~267/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 33/100
  - Stability observed for 10 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 8 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the io.github.cyanheads/sweden-parliament-mcp-server server?

io.github.cyanheads/sweden-parliament-mcp-server is a hosted endpoint at https://sweden-parliament.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http cyanheads-sweden-parliament-mcp-server 'https://sweden-parliament.caseyjhand.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "cyanheads-sweden-parliament-mcp-server": {
      "url": "https://sweden-parliament.caseyjhand.com/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "cyanheads-sweden-parliament-mcp-server": {
      "type": "http",
      "url": "https://sweden-parliament.caseyjhand.com/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.cyanheads-sweden-parliament-mcp-server]
url = "https://sweden-parliament.caseyjhand.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-sweden-parliament-mcp-server": {
      "type": "remote",
      "url": "https://sweden-parliament.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add cyanheads-sweden-parliament-mcp-server --url 'https://sweden-parliament.caseyjhand.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  cyanheads-sweden-parliament-mcp-server:
    url: "https://sweden-parliament.caseyjhand.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "cyanheads-sweden-parliament-mcp-server": {
      "Transport": "http",
      "Url": "https://sweden-parliament.caseyjhand.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add cyanheads-sweden-parliament-mcp-server -t streamable-http -u 'https://sweden-parliament.caseyjhand.com/mcp'
```

### Other

```json
{
  "mcpServers": {
    "cyanheads-sweden-parliament-mcp-server": {
      "type": "http",
      "url": "https://sweden-parliament.caseyjhand.com/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 76, +52)

- [security improvement] Authorization: unverified → partial
- [security improvement] Injection markers: unverified → pass
- [security improvement] HSTS header: fail → pass
- [security improvement] Transport: fail → pass
- [functional improvement] Endpoint reachability: not serving MCP → reachable
- [functional improvement] Stability: unverified → 0.33
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Tool coverage: unverified → 100

### 2026-11-04 (score 24, −51)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Authorization: partial → unverified
- [security regression] Stability: 0.27 → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] Transport: pass → fail
- [security regression] HSTS header: pass → fail
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional] First check of Schema quality: unverified

### 2026-11-02 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-31 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-29 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-27 (score 72, +1)

- [functional improvement] Stability: unverified → 0.03

### 2026-10-26 (score 71)

First indexed and scored.

## MCP tools (7)

### `riksdag_list_reference` (~115 tokens)

Riksdag List Reference

Look up official document types, committees, parties, constituencies, speech reply filters, sessions, identifier conventions and source coverage. The offline snapshot is dated; follow nextCall to read every entry. Document subtypes remain distinct from parent document-type codes, and the session catalog can lag current sessions.

Input parameters:

- `limit` (integer): Requested entries; values above 100 are clamped with a notice.
- `offset` (integer): Zero-based local entry offset.
- `topic` (string, required): Vocabulary or guidance topic to browse.

Output parameters:

- `effectiveQuery` (string): Deterministic normalized input, applied defaults and local filters.
- `entries` (array): Complete entries on this page, retaining Swedish source labels and distinct subtypes.
- `error` (object): Present when the call failed. Absent on success.
- `hasMore` (boolean): Whether further bundled entries remain.
- `limit` (integer): Applied maximum page length after clamping and whole-entry fitting.
- `nextCall` (object): Continuation covering every remaining entry.
- `notices` (array): All applicable notices, including an empty list.
- `offset` (integer): Applied zero-based local offset.
- `referenceCatalogTimestamp` (string): Original catalog generation timestamp without an inferred timezone.
- `referenceSourceUrl` (string): Official source URL for this topic.
- `referenceVerifiedAt` (string): Snapshot verification date.
- `requestedLimit` (integer): Caller-requested page length before clamping.
- `retrievedAt` (string): Source fetch time, retained unchanged on cache hits.
- `returnedCount` (integer): Actual entries on this page.
- `source` (string): Required attribution to the Swedish Parliament.
- `topic` (string): Selected reference topic.
- `totalCount` (integer): Exact number of bundled entries for this topic.
- `truncated` (boolean): Whether response fitting shortened this page.
- `upstreamQuery` (string): Upstream query echo; not proof that a filter was applied.
- `upstreamWarnings` (array): Warnings supplied by the source.

### `riksdag_search_documents` (~285 tokens)

Search parliamentary documents

Search Swedish parliamentary documents and consolidated SFS statutes by words, document type, session, committee, party, member IID or dates. Choose relevance or descending date ordering and follow complete continuation calls. Read document status and text with riksdag_get_document.

Input parameters:

- `committee` (string): Committee code or exact reference label.
- `dateFrom` (string): Inclusive earliest ISO calendar date, YYYY-MM-DD.
- `dateTo` (string): Inclusive latest ISO calendar date, YYYY-MM-DD.
- `documentType` (string): Document type code or exact reference label, including sfs.
- `memberId` (string): Numeric member IID from riksdag_search_members; leading zeros are preserved.
- `offset` (integer): In-page row offset; follow nextCall without changing the remote page size.
- `page` (integer): Remote page number, starting at 1.
- `pageSize` (integer): Requested remote page size; maximum applied size 50.
- `party` (string): Party code or exact reference label.
- `query` (string): Source full-text query; narrow slow searches with session or type.
- `revision` (string): Remote-page revision from continuation; rejects changed pages.
- `session` (string): Parliamentary session; omission searches all available sessions.
- `sort` (string): Source ordering; relevance for nonblank queries and descending date otherwise.

Output parameters:

- `effectiveQuery` (string): Deterministic normalized input, applied defaults and local filters.
- `error` (object): Present when the call failed. Absent on success.
- `hasMore` (boolean): Whether local rows or another remote page remain.
- `items` (array): Complete rows selected from the fetched remote page.
- `nextCall` (object): Complete next-page call with unchanged filters and page size.
- `notices` (array): All applicable notices, including an empty list.
- `offset` (number): Applied in-page row offset.
- `page` (number): Applied remote page.
- `pageSize` (number): Applied remote page size.
- `remoteReturnedCount` (number): Complete fetched remote-page row count.
- `retrievedAt` (string): Source fetch time, retained unchanged on cache hits.
- `returnedCount` (number): Actual rows returned.
- `revision` (string): Hash of the complete normalized remote page.
- `source` (string): Required attribution to the Swedish Parliament.
- `totalCount` (number): Authoritative source hit count, when published.
- `truncated` (boolean): Whether response fitting shortened this local page.
- `upstreamQuery` (string): Upstream query echo; not proof that a filter was applied.
- `upstreamWarnings` (array): Warnings supplied by the source.

### `riksdag_get_document` (~266 tokens)

Read parliamentary document

Read a document status, decisions, linked records and text. Select sections and follow complete continuation calls to read long reports or consolidated SFS statutes. SFS text is consolidated published text, not a point-in-time legal version.

Input parameters:

- `documentId` (string, required): Document ID from riksdag_search_documents, or unambiguous SFS YYYY:N identifier.
- `htmlLength` (integer): Explicit source HTML length in code points; defaults start at 8000 and fit the complete response; explicit lengths are honored.
- `htmlOffset` (integer): Source HTML offset in Unicode code points.
- `revision` (string): Revision returned by a previous call; rejects changed records.
- `sectionLimit` (integer): Requested entries per selected array section; applied maximum 100.
- `sectionOffset` (integer): Offset applied independently to each selected array section.
- `sections` (array): Select metadata, decisions, reservations, activities, properties, attachments, references, stakeholders, text or source_html. Omit for metadata, complete outline and first text page.
- `textLength` (integer): Explicit text length in code points; defaults start at 8000 and fit the complete response; explicit lengths are honored.
- `textOffset` (integer): Text offset in Unicode code points.

Output parameters:

- `activities` (array): Selected process-event page.
- `attachments` (array): Selected linked-attachment page.
- `decisions` (array): Selected page of authoritative report points.
- `documentId` (string): Normalized document identifier.
- `effectiveQuery` (string): Deterministic normalized input, applied defaults and local filters.
- `error` (object): Present when the call failed. Absent on success.
- `found` (boolean): Whether the source record exists.
- `guidance` (string): How to resolve a missing identifier.
- `htmlHasMore` (boolean): Whether source HTML remains.
- `htmlOffset` (number): Returned HTML offset in code points.
- `htmlReturnedLength` (number): Returned HTML code points.
- `htmlTotalLength` (number): Complete HTML code-point length.
- `metadata` (object): Source publication metadata and links.
- `nextHtmlCall` (object): Complete continuation for source HTML.
- `nextTextCall` (object): Complete continuation for canonical text.
- `notices` (array): All applicable notices, including an empty list.
- `outline` (array): Every selectable section and its complete size.
- `properties` (array): Selected property page.
- `references` (array): Selected relationship page.
- `reservations` (array): Selected reservation page.
- `retrievedAt` (string): Source fetch time, retained unchanged on cache hits.
- `revision` (string): Hash of the complete normalized record.
- `sectionPages` (array): Independent counts and complete continuation for every selected array.
- `source` (string): Required attribution to the Swedish Parliament.
- `sourceHtml` (string): Separately selected original source HTML page.
- `stakeholders` (array): Selected page of source participants, retaining entries without an IID.
- `text` (string): Selected canonical text page, unchanged on both surfaces.
- `textAvailable` (boolean): Whether a published canonical body exists.
- `textHasMore` (boolean): Whether canonical text remains.
- `textOffset` (number): Returned text offset in Unicode code points.
- `textRepresentation` (string): Source SFS text or canonical converted Markdown.
- `textReturnedLength` (number): Actual returned text code points.
- `textTotalLength` (number): Complete canonical text length in code points.
- `truncated` (boolean): At least one selected array section has more entries or a response-fitted page; follow its sectionPages continuation.
- `upstreamQuery` (string): Upstream query echo; not proof that a filter was applied.
- `upstreamWarnings` (array): Warnings supplied by the source.

### `riksdag_search_members` (~189 tokens)

Search parliamentary members

Find members and ministers by name, party, constituency and service status. Defaults to the service register; register all includes earlier source records through a larger cold request that may time out. Use numeric memberId with riksdag_get_member for assignment history.

Input parameters:

- `constituency` (string): Exact constituency reference label or code, applied locally.
- `limit` (integer): Requested rows; applied maximum 100.
- `nameContains` (string): Strict all-token local name filter, ignoring case and diacritics.
- `offset` (integer): Local row offset.
- `party` (string): Party code or exact reference label.
- `register` (string): Register scope; all includes historical records and can require a large cold request that reaches the normal timeout.
- `revision` (string): Revision returned by a preceding page.
- `sitting` (string): Source service classification; all retains unknown status.

Output parameters:

- `candidateCount` (number): Actual returned candidate records in the selected register scope.
- `effectiveQuery` (string): Deterministic normalized input, applied defaults and local filters.
- `error` (object): Present when the call failed. Absent on success.
- `hasMore` (boolean): Whether filtered rows remain.
- `items` (array): Filtered member-register rows.
- `limit` (number): Applied row limit.
- `nextCall` (object): Complete next-page call.
- `notices` (array): All applicable notices, including an empty list.
- `offset` (number): Applied local offset.
- `requestedLimit` (number): Requested row limit before clamping and fitting.
- `retrievedAt` (string): Source fetch time, retained unchanged on cache hits.
- `returnedCount` (number): Rows in this page.
- `revision` (string): Complete candidate-set revision.
- `source` (string): Required attribution to the Swedish Parliament.
- `sourceReportedCount` (number): Source-reported register hits; may differ from actual returned candidates in all scope.
- `totalCount` (number): Exact count after local filtering.
- `truncated` (boolean): Whether response fitting shortened the selected page.
- `upstreamQuery` (string): Upstream query echo; not proof that a filter was applied.
- `upstreamWarnings` (array): Warnings supplied by the source.

### `riksdag_get_member` (~101 tokens)

Read parliamentary member

Read one member register entry and assignment history by exact member ID. Assignment dates preserve source precision and do not establish historical sitting status.

Input parameters:

- `assignmentLimit` (integer): Requested assignments; applied maximum 100.
- `assignmentOffset` (integer): Assignment offset in published source order.
- `memberId` (string, required): Numeric memberId from riksdag_search_members, including leading zeros.
- `revision` (string): Revision returned by the preceding assignment page.

Output parameters:

- `assignmentLimit` (number): Applied assignment limit.
- `assignmentOffset` (number): Applied assignment offset.
- `assignmentTotal` (number): Exact total published assignments.
- `assignments` (array): Published assignments in source order.
- `constituency` (string): Published constituency label.
- `detailAvailable` (boolean): Whether a numeric member IID is published for riksdag_get_member.
- `effectiveQuery` (string): Deterministic normalized input, applied defaults and local filters.
- `error` (object): Present when the call failed. Absent on success.
- `familyName` (string): Published family name.
- `found` (boolean): Whether the exact member IID exists.
- `givenName` (string): Published given name.
- `guidance` (string): Next step when the member IID is absent.
- `hasMore` (boolean): Whether assignments remain.
- `memberId` (string): Numeric register IID, including leading zeros; absent for some historical and European Parliament entries.
- `name` (string): Published given and family names, when present.
- `nextCall` (object): Complete next-assignment call.
- `notices` (array): All applicable notices, including an empty list.
- `party` (string): Published party code.
- `requestedAssignmentLimit` (number): Requested assignment limit before clamping and fitting.
- `retrievedAt` (string): Source fetch time, retained unchanged on cache hits.
- `returnedCount` (number): Assignments returned on this page.
- `revision` (string): Complete normalized member record revision.
- `serviceClassification` (string): Source-defined Swedish chamber service; unknown is retained.
- `source` (string): Required attribution to the Swedish Parliament.
- `sourceRecordId` (string): Source register UUID, distinct from the member IID.
- `sourceUrl` (string): Public register source URL.
- `status` (string): Unmodified source service-status label.
- `truncated` (boolean): Whether further assignments remain available through nextCall.
- `upstreamQuery` (string): Upstream query echo; not proof that a filter was applied.
- `upstreamWarnings` (array): Warnings supplied by the source.

### `riksdag_search_speeches` (~365 tokens)

Search and read parliamentary speeches

Search speeches within a required parliamentary session, optionally by member, party, reply exclusion and heading tokens. Heading matching searches debate headings only, never body text. Search hydrates one text page by default; use get mode with an item speechId to read all remaining text and retain the returned revision for continuation.

Input parameters:

- `headingContains` (string): Search only: all-token local heading and subheading filter, ignoring case and diacritics; never body search.
- `limit` (integer): Search only: requested rows, default 5 and applied maximum 20.
- `memberId` (string): Search only: numeric memberId from riksdag_search_members, retaining leading zeros.
- `mode` (string): Search by default; get reads one retrieval speechId.
- `offset` (integer): Search only: local row offset, default 0.
- `party` (string): Search only: official party code or exact reference label.
- `revision` (string): Search candidate revision or get textRevision copied from the preceding page.
- `session` (string): Required in search mode; parliamentary session such as 2024/25.
- `speechId` (string): Required in get mode: retrieval ID copied from a search item, never the source UUID.
- `speechType` (string): Search only: all by default; speech excludes replies.
- `textCount` (integer): Search only: maximum speeches to request text for, default 1 and applied maximum 5; 0 returns metadata.
- `textLength` (integer): Get only: requested Unicode code points; defaults start at 8000 and fit the complete response; explicit lengths are honored.
- `textOffset` (integer): Get only: Unicode code-point offset, default 0.

Output parameters:

- `candidateCount` (number): Complete validated upstream candidate count.
- `effectiveQuery` (string): Deterministic normalized input, applied defaults and local filters.
- `error` (object): Present when the call failed. Absent on success.
- `found` (boolean): Get mode: whether the retrieval ID exists.
- `guidance` (string): Recovery guidance for an expected detail miss.
- `hasMore` (boolean): Whether filtered speech rows remain.
- `item` (object): Get mode: exact speech metadata and text page.
- `items` (array): Search mode: local speech page after heading filtering.
- `limit` (number): Applied search page size after clamp and response fitting.
- `mode` (string): Applied search or detail mode.
- `nextCall` (object): Complete next local search-page call.
- `notices` (array): All applicable notices, including an empty list.
- `offset` (number): Applied local row offset.
- `requestedLimit` (number): Original requested search page size.
- `retrievedAt` (string): Source fetch time, retained unchanged on cache hits.
- `returnedCount` (number): Speech rows returned on this page.
- `revision` (string): Search candidate-set revision or complete get detail revision.
- `source` (string): Required attribution to the Swedish Parliament.
- `speechId` (string): Get mode: requested retrieval ID.
- `textCount` (number): Applied maximum speeches selected for text retrieval.
- `totalCount` (number): Exact local heading-filtered match count.
- `truncated` (boolean): Whether response fitting shortened the local row page.
- `upstreamQuery` (string): Upstream query echo; not proof that a filter was applied.
- `upstreamWarnings` (array): Warnings supplied by the source.

### `riksdag_get_votes` (~369 tokens)

Read parliamentary main votes

Read authoritative report decisions and party main-vote groups separated by avser, or a member’s session main votes. Report mode requires report or documentId; ballots true with an explicit point adds individual member ballots and independent ballotPage continuation. Member mode requires memberId. Follow complete local continuation calls. Main votes do not include every ballot round; empty rows never prove acclamation.

Input parameters:

- `ballotRevision` (string): Returned ballot-page revision for consistent report-ballot continuation.
- `ballots` (boolean): Report mode only: include individual ballots for an explicit point; default false.
- `documentId` (string): Report mode: documentId from riksdag_search_documents with documentType bet; alternative to report.
- `limit` (integer): Member or report-ballot requested rows; default 20, applied maximum 500.
- `memberId` (string): Required in member mode: numeric memberId from riksdag_search_members, including leading zeros.
- `mode` (string, required): Report decision points or one member’s session main votes.
- `offset` (integer): Member or explicit report-ballot local row offset; default 0.
- `party` (string): Member-mode local party filter; report party groups are always complete.
- `point` (integer): One authoritative report point; omit to traverse all points.
- `pointLimit` (integer): All-points report page size; default 5, applied maximum 10.
- `pointOffset` (integer): All-points report local offset; default 0.
- `report` (string): Report designation or session:designation; report mode only.
- `revision` (string): Returned complete-candidate or report-catalog revision for consistent continuation.
- `session` (string, required): Required parliamentary session, for example 2024/25.

Output parameters:

- `ballotPage` (object): Independent ballot pagination; report-point counts and revision retain their meanings.
- `candidateCount` (integer): Complete validated member/session candidate count, optionally narrowed upstream by party, before local filtering.
- `documentId` (string): Authoritative report document ID.
- `effectiveQuery` (string): Deterministic normalized input, applied defaults and local filters.
- `error` (object): Present when the call failed. Absent on success.
- `found` (boolean): Whether the selected report or member-vote selection is available; empty member rows remain a successful selection.
- `guidance` (string): How to resolve a missing report.
- `hasMore` (boolean): More whole rows or report points remain.
- `limit` (integer): Applied member row limit after fitting.
- `memberId` (string): Normalized member ID, preserving leading zeros.
- `mode` (string): Applied workflow.
- `nextCall` (object): Complete continuation advancing by actual returned entries.
- `notices` (array): All applicable notices, including an empty list.
- `offset` (integer): Applied member row offset.
- `party` (string): Applied member-mode party filter.
- `pointLimit` (integer): Applied report-point limit after measured fitting.
- `pointOffset` (integer): Applied report-point offset.
- `pointTotalCount` (integer): Exact complete authoritative report-point catalog count.
- `points` (array): Whole report points with every party aggregate and complete decision evidence.
- `report` (string): Normalized report designation.
- `requestedLimit` (integer): Original requested member row limit.
- `requestedPointLimit` (integer): Original requested report-point limit.
- `retrievedAt` (string): Source fetch time, retained unchanged on cache hits.
- `returnedCount` (integer): Actual returned whole rows or points.
- `revision` (string): Hash of complete normalized candidates or authoritative point catalog.
- `session` (string): Normalized parliamentary session.
- `source` (string): Required attribution to the Swedish Parliament.
- `totalCount` (integer): Exact filtered member-vote total or selected report-point total.
- `truncated` (boolean): Response fitting shortened the requested local page.
- `upstreamQuery` (string): Upstream query echo; not proof that a filter was applied.
- `upstreamWarnings` (array): Warnings supplied by the source.
- `votes` (array): Whole member or explicit report-point main ballots after local pagination.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/cyanheads-sweden-parliament-mcp-server/sweden-parliament#diagnostics

## Score history

- 2026-11-05: 76
- 2026-11-04: 24
- 2026-11-03: 75
- 2026-11-02: 75
- 2026-11-01: 74
- 2026-10-31: 74
- 2026-10-30: 73
- 2026-10-29: 73
- 2026-10-28: 72
- 2026-10-27: 72
- 2026-10-26: 71

## Common questions

### What is the io.github.cyanheads/sweden-parliament-mcp-server server?

io.github.cyanheads/sweden-parliament-mcp-server is listed in the public MCP registry as io.github.cyanheads/sweden-parliament-mcp-server. Search Swedish parliamentary documents, speeches, votes, members, and statutes. This page covers its hosted endpoint (https://sweden-parliament.caseyjhand.com/mcp).

### Is the io.github.cyanheads/sweden-parliament-mcp-server server safe to use?

io.github.cyanheads/sweden-parliament-mcp-server scores 76 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.cyanheads/sweden-parliament-mcp-server server expose?

io.github.cyanheads/sweden-parliament-mcp-server exposes 7 tools: riksdag_list_reference, riksdag_search_documents, riksdag_get_document, riksdag_search_members, riksdag_get_member, and 2 more. Their descriptions and schemas cost roughly 1,690 tokens of context every time the server is loaded.

### Does the io.github.cyanheads/sweden-parliament-mcp-server server require authentication?

No. We connected to io.github.cyanheads/sweden-parliament-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the io.github.cyanheads/sweden-parliament-mcp-server server still maintained?

io.github.cyanheads/sweden-parliament-mcp-server is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://sweden-parliament.caseyjhand.com/mcp
- Repository: https://github.com/cyanheads/sweden-parliament-mcp-server
- Changelog RSS feed: https://verifymcp.io/servers/cyanheads-sweden-parliament-mcp-server/sweden-parliament.xml
- Changelog JSON feed: https://verifymcp.io/servers/cyanheads-sweden-parliament-mcp-server/sweden-parliament.json
- HTML version of this page: https://verifymcp.io/servers/cyanheads-sweden-parliament-mcp-server/sweden-parliament
