io.github.cyanheads/switzerland-parliament-mcp-server
REMOTE · SWITZERLAND-PARLIAMENT.CASEYJHAND.COM · 2 COMPONENTS
Search Swiss parliamentary business, votes, debates, members, and declared interests.
Last scanned (6 hours ago)
Scores higher than 66% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Education and Research
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. How we score → Why this is hard to score →
Endpoint Security83
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability59
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 2443 tokens (~349/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management33
- Stability observed for 10 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 8 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.
- 30 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Oct 26 0
- Stability: unverified → 0.03 ▲ functional
- 26 Oct 26 72
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://switzerland-parliament.caseyjhand.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=caseyjhand.com | CN=WE1,O=Google Trust Services,C=US | 2 Nov 2026 | 31 Jan 2027 | ECDSA 256 | ECDSA-SHA256 | 995a30681ab772540e934241ca1d576c |
| SANs: caseyjhand.com, *.caseyjhand.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of switzerland-parliament.caseyjhand.com. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| caseyjhand.com. | present | 2371 | 13 | Verified |
| switzerland-parliament.caseyjhand.com. | Verified address RRset verified with the apex keys |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| x-content-type-options | nosniff |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://switzerland-parliament.caseyjhand.com/mcp | Verified | 200 | |
| http (plaintext) | http://switzerland-parliament.caseyjhand.com/mcp | HTTPS enforced | 301 | https://switzerland-parliament.caseyjhand.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
chparl_get_business Chparl Get Business ~245
Read a Swiss parliamentary business by canonical eight-digit businessId or exact published short number. Choose overview for metadata and available text sizes; texts for original published text, automatically outlined when several fields exceed the disclosure budget; or status_history, bills, related_business, preconsultations, or subjects for independently paged relationships. textFields selects complete original fields only in texts, even when large. Paging applies only to relationships. Use subjects to narrow chparl_search_transcripts; source text and HTML remain unchanged.
| Name | Type | Req | Description |
|---|---|---|---|
| businessId | string | yes | Canonical eight-digit businessId from chparl_search_business, or an exact published short number such as 99.1234. |
| language | string | – | Metadata and business-text variant: de (default), fr, or it. |
| limit | integer | – | Relationships only: requested page size, default 20, clamped to 100. |
| offset | integer | – | Relationships only: source row offset, default zero; continue with returned nextOffset. |
| section | string | – | Readable section, default overview. |
| textFields | array | – | Texts only: named original fields; empty array means unset. |
| Name | Type | Req | Description |
|---|---|---|---|
| bills | array | – | Linked bill page; no enacted-law content is inferred. |
| business | object | – | Business summary on every found result, with extra metadata on overview. |
| effectiveFilters | object | – | Effective business identifier, section, selectors, and paging defaults. |
| effectiveLimit | integer | – | Effective relationship limit after clamping. |
| error | object | – | Present when the call failed. Absent on success. |
| found | boolean | – | Whether the requested business metadata row exists. |
| guidance | string | – | Discovery guidance when the business is missing. |
| hasMore | boolean | – | Whether selected relationship rows remain; absent for non-collection results. |
| nextOffset | integer | – | Original offset plus delivered rows when more remain. |
| notice | string | – | Combined clamping, byte-fitting, empty-section, or past-end guidance. |
| preconsultations | array | – | Published committee preconsultation page. |
| provenance | object | – | Attribution, publication status, and source download dates. |
| relatedBusiness | array | – | Related business page. |
| returnedCount | integer | – | Complete relationship rows delivered; absent for overview, texts, or missing business. |
| section | string | – | Selected section. |
| statusHistory | array | – | Published status history page. |
| subjects | array | – | Debate subjects usable in chparl_search_transcripts. |
| textDocument | object | – | Original selected texts or automatic field outline. |
| totalCount | integer | – | Whole selected relationship count when supplied by the source. |
No examples provided.
chparl_get_member Chparl Get Member ~208
Read a Swiss Parliament member by PersonNumber, which need not equal Person.ID. overview returns identity and every base MemberCouncil affiliation without pagination. Select council_terms for historical council terms, committees for published MemberCommittee rows, or interests for declared interests; those sections accept limit and offset. Missing paid status means unknown, and empty interests do not establish absence of conflicts of interest. Metadata labels remain in the selected language.
| Name | Type | Req | Description |
|---|---|---|---|
| language | string | – | Metadata language: de (default), fr, or it; uppercase is accepted. |
| limit | integer | – | Relationship sections only: default 20, effective maximum 100 with notice. Omit for overview. |
| offset | integer | – | Relationship sections only: default zero; continue with nextOffset. Omit for overview. |
| personNumber | string | yes | Required positive Int32 PersonNumber as a decimal string; discover with chparl_search_members. |
| section | string | – | overview (default), council_terms, committees, or interests. |
| Name | Type | Req | Description |
|---|---|---|---|
| committees | array | – | Delivered published committee memberships; not a complete historical committee ledger. |
| councilTerms | array | – | Delivered complete historical council-term records. |
| effectiveFilters | object | – | Normalized profile parameters and defaults for the selected section. |
| effectiveLimit | integer | – | Effective page size, present only for relationship sections. |
| error | object | – | Present when the call failed. Absent on success. |
| found | boolean | – | Whether a Person matched the requested PersonNumber and language. |
| guidance | string | – | Discovery guidance when the person is absent. |
| hasMore | boolean | – | Whether section records remain; false for complete overview affiliations. |
| interests | array | – | Delivered declared interests; missing paid flags stay unknown, and emptiness does not prove no conflicts of interest. |
| memberships | array | – | Complete base MemberCouncil affiliations in overview; source continuations are drained. |
| nextOffset | integer | – | Starting offset plus delivered records; absent when exhausted or unpaged. |
| notice | string | – | Combined clamping, size, empty-section, or past-end guidance. |
| person | object | – | Resolved parliamentary identity, including the distinct Person.ID. |
| provenance | object | – | Attribution, publication status, and source download dates. |
| returnedCount | integer | – | Number of profile records returned; omitted for a missing person. |
| section | string | – | Profile component returned. |
| totalCount | integer | – | Exact section count when supplied upstream, or the fully enumerated overview membership count. |
No examples provided.
chparl_get_votes Chparl Get Votes ~441
Find Nationalrat roll calls with mode votes and businessId, sessionId, or both. Use mode members with voteId for one paged roll call, or personNumber without voteId for member history optionally filtered by businessId and sessionId. Use mode groups with voteId for complete decision counts by parliamentary group. Member roll calls start in the 2003 winter session and exclude Ständerat member votes; an empty result does not prove no vote occurred. Member counts cover only delivered rows; groups mode reads all published member rows before reporting totals. Verbatim decisionTexts accompany code buckets when published. Code meanings include 1 yes, 2 no, 3 abstention, 4 present, 5 did not participate, 6 excused under Art. 57 para. 4, 7 president does not vote, and 8 resigned. Unknown codes and missing decisions are retained. Follow nextOffset with the same mode and filters.
| Name | Type | Req | Description |
|---|---|---|---|
| businessId | string | – | Votes or member history only: canonical eight-digit businessId from chparl_search_business, or a published short number such as 99.1234. |
| language | string | – | Metadata language: de (default), fr, or it; decision text remains as published. |
| limit | integer | – | Paged modes only: votes default 10/max 50, members default 50/max 100; higher requests are clamped with notice. |
| mode | string | – | Workflow: votes (default), members, or complete groups. |
| offset | integer | – | Paged modes only: starting row offset, default zero; continue using returned nextOffset. |
| personNumber | string | – | Members only: exact PersonNumber from chparl_search_members, distinct from Person.ID or current group affiliation. |
| sessionId | string | – | Votes or member history only: positive Int32 Session.ID from chparl_list_reference topic sessions; combine with businessId to narrow discovery. |
| voteId | string | – | Members or groups only: positive Int32 Vote.ID discovered through votes mode; omit for personNumber history. Cannot combine with businessId or sessionId. |
| Name | Type | Req | Description |
|---|---|---|---|
| business | object | – | Resolved business identity when supplied for vote discovery or member history. |
| coverage | object | – | Coverage of the published member decisions. |
| decisionCounts | – | – | Page counts in members mode or complete nonempty vote counts in groups mode. |
| effectiveFilters | object | – | Normalized mode, identifiers, metadata language, and applicable paging defaults. |
| effectiveLimit | integer | – | Effective page size after mode-specific clamping. |
| error | object | – | Present when the call failed. Absent on success. |
| found | boolean | – | Whether a supplied business or selected vote exists; unkeyed history/session searches succeed with true even when empty. |
| groups | array | – | Complete group aggregates; empty when member data is unavailable. |
| guidance | string | – | Identifier discovery guidance when the parent was not found. |
| hasMore | boolean | – | Whether more rows remain after the delivered page; false for complete groups. |
| members | array | – | Whole member decisions delivered in members mode. |
| mode | string | – | Vote workflow returned. |
| nextOffset | integer | – | Original offset plus delivered rows; absent when exhausted. |
| notice | string | – | Combined clamping, whole-item fitting, empty-result, or coverage guidance. |
| provenance | object | – | Attribution, publication status, and source download dates. |
| returnedCount | integer | – | Number of delivered vote, member, or group records. |
| totalCount | integer | – | Exact whole-query count of votes or filtered member rows, when supplied. |
| vote | object | – | Resolved roll-call metadata in members or groups mode. |
| votes | array | – | Whole metadata records delivered in votes mode. |
No examples provided.
chparl_list_reference Chparl List Reference ~222
List Swiss Parliament reference entries and source coverage. Choose identifiers, coverage, or languages for server explanations; statuses for the official legacy/current status snapshot; or business_types, councils, cantons, parties, groups, committees, or sessions for live dictionaries. Date filters apply only to sessions. Follow nextOffset with the same topic, language, and dates; labels remain in the requested metadata language and missing labels stay unknown.
| Name | Type | Req | Description |
|---|---|---|---|
| dateFrom | string | – | Sessions only: inclusive StartDate lower bound, YYYY-MM-DD. |
| dateTo | string | – | Sessions only: inclusive EndDate upper bound, YYYY-MM-DD. |
| language | string | – | Metadata label language: de (default), fr, or it. |
| limit | integer | – | Requested page size, default 50; values above 100 are clamped with a notice. Whole-item byte fitting may return fewer entries. |
| offset | integer | – | Starting row offset, default zero. Use the returned nextOffset to continue. |
| topic | string | yes | Reference dictionary or explanatory topic to list. |
| Name | Type | Req | Description |
|---|---|---|---|
| effectiveFilters | object | – | Normalized reference filters and resolved paging defaults. |
| effectiveLimit | integer | – | Effective row limit after clamping; response-size fitting may deliver fewer. |
| error | object | – | Present when the call failed. Absent on success. |
| hasMore | boolean | – | Whether entries remain beyond this delivered page. |
| items | array | – | Complete reference entries delivered on this page. |
| nextOffset | integer | – | Original offset plus delivered entries; absent when exhausted. |
| notice | string | – | Combined limit, whole-item byte-budget, empty-result, or past-end guidance. |
| provenance | object | – | Attribution, publication status, and source download dates. |
| returnedCount | integer | – | Number of complete entries actually delivered. |
| topic | string | – | Reference topic returned. |
| totalCount | integer | – | Whole-query reference count when the source supplies one. |
No examples provided.
chparl_search_business Chparl Search Business ~340
Search Swiss parliamentary business by title substring, published submitter label, type, current status, submission session, inclusive submission dates, or committee role. Use chparl_list_reference to resolve codes and chparl_get_business to read a returned businessId. Follow nextCursor with unchanged filters; newest canonical business IDs appear first. Author searches omit the business total. Committee searches page role candidates and may return short pages without a distinct business total. Metadata labels remain in de, fr, or it without translation fallback.
| Name | Type | Req | Description |
|---|---|---|---|
| author | string | – | Substring of the published submitter label, not every co-signatory. |
| committeeId | string | – | Committee number from chparl_list_reference topic committees; matches any published committee role. |
| cursor | string | – | Opaque nextCursor from a previous call with identical filters; omit to start. |
| language | string | – | Metadata language: de (default), fr, or it. |
| limit | integer | – | Page request, default 20; clamped to 100. Committee pages count candidate roles, and byte fitting may return fewer businesses. |
| query | string | – | One title substring, preserving punctuation and diacritics. |
| sessionId | string | – | Submission session ID from chparl_list_reference topic sessions. |
| statusId | string | – | Current status code from chparl_list_reference topic statuses. |
| submittedFrom | string | – | Inclusive submission-date lower bound, YYYY-MM-DD. |
| submittedTo | string | – | Inclusive submission-date upper bound, YYYY-MM-DD. |
| typeId | string | – | Business type code from chparl_list_reference topic business_types. |
| Name | Type | Req | Description |
|---|---|---|---|
| businesses | array | – | Distinct complete business summaries on this page. |
| effectiveFilters | object | – | Effective business discovery filters and defaults. |
| effectiveLimit | integer | – | Effective business or role-candidate limit after clamping. |
| error | object | – | Present when the call failed. Absent on success. |
| hasMore | boolean | – | Whether older matching businesses remain. |
| nextCursor | string | – | Continue after the smallest delivered business ID using identical filters. |
| notice | string | – | Combined clamp, short-page, size-fitting, or empty-result guidance. |
| provenance | object | – | Attribution, publication status, and source download dates. |
| returnedCount | integer | – | Distinct businesses actually delivered. |
| totalCount | integer | – | Original-filter business total, available only without author or committee filters. |
No examples provided.
chparl_search_members Chparl Search Members ~299
Find current or former Swiss Parliament affiliation records by name, council, canton, party, or parliamentary group. membership defaults to current; former selects inactive records and all omits the activity filter. query matches a substring of a published first, last, or official name. Use each record’s personNumber with chparl_get_member for identity, full council terms, committees, and declared interests. Follow nextOffset with the same filters.
| Name | Type | Req | Description |
|---|---|---|---|
| cantonId | string | – | Optional Canton identifier from chparl_list_reference topic cantons. |
| council | string | – | N or S; exact German, French, and Italian council names are accepted. Resolve codes with chparl_list_reference topic councils. |
| groupId | string | – | Optional ParlGroupNumber from chparl_list_reference topic groups. |
| language | string | – | Metadata language: de (default), fr, or it; uppercase is accepted. |
| limit | integer | – | Requested page size, default 20, effective maximum 100 with notice. Whole records may be fitted to the response byte budget. |
| membership | string | – | current (default), former, or all MemberCouncil records. |
| offset | integer | – | Starting MemberCouncil record offset; continue with returned nextOffset. |
| partyId | string | – | Optional Party identifier from chparl_list_reference topic parties. |
| query | string | – | Optional name substring, trimmed without changing internal punctuation or diacritics. |
| Name | Type | Req | Description |
|---|---|---|---|
| effectiveFilters | object | – | Normalized search filters and resolved defaults. |
| effectiveLimit | integer | – | Effective requested page size after clamping. |
| error | object | – | Present when the call failed. Absent on success. |
| hasMore | boolean | – | Whether further matching affiliation records remain. |
| members | array | – | Complete MemberCouncil affiliation records delivered on this page. |
| nextOffset | integer | – | Starting offset plus delivered records; absent when exhausted. |
| notice | string | – | Combined clamping, byte fitting, empty-result, or past-end guidance. |
| provenance | object | – | Attribution, publication status, and source download dates. |
| returnedCount | integer | – | Number of complete MemberCouncil records delivered. |
| totalCount | integer | – | Exact whole-query MemberCouncil record count when supplied upstream. |
No examples provided.
chparl_search_transcripts Chparl Search Transcripts ~476
Find Amtliches Bulletin passages by business, debate subject, speaker, session, council, or inclusive meeting dates. Supply at least a business, subject, speaker, session, or date bound. A text substring query additionally requires sessionId or a closed date range of at most 31 calendar days. Searches return metadata by default; includeText returns whole original passages, and an exact transcriptId defaults to full text. Metadata language never translates the speaker text; missing LanguageOfText remains unknown. Business searches cover every associated subject up to 20; larger debates require selecting subjectId through chparl_get_business section subjects. Follow nextOffset with unchanged filters.
| Name | Type | Req | Description |
|---|---|---|---|
| businessId | string | – | Canonical eight-digit businessId from chparl_search_business or published short number; incompatible with subjectId and transcriptId. |
| council | string | – | N or S; exact German, French, and Italian council names are also accepted. |
| dateFrom | string | – | Inclusive meeting-day lower bound, YYYY-MM-DD. |
| dateTo | string | – | Inclusive meeting-day upper bound, YYYY-MM-DD. |
| includeText | boolean | – | Return whole original text and references; defaults true for transcriptId and false for searches. Explicit false always wins. |
| language | string | – | Metadata language: de (default), fr, or it; original passage text stays in its published language. |
| limit | integer | – | Search page request: metadata default 20/max 100, full text default 3/max 10; clamped with notice. Incompatible with transcriptId. |
| offset | integer | – | Search starting row offset, default zero; use returned nextOffset. Incompatible with transcriptId. |
| personNumber | string | – | Exact speaker PersonNumber from chparl_search_members, distinct from Person.ID. |
| query | string | – | One original-text substring; requires sessionId or both dates spanning at most 31 inclusive calendar days. |
| sessionId | string | – | Exact positive decimal session identifier from chparl_list_reference topic sessions. |
| subjectId | string | – | Positive Int64 debate IdSubject string; incompatible with businessId and transcriptId. |
| transcriptId | string | – | Exact positive Int64 transcriptId from a previous chparl_search_transcripts result; only language and includeText may accompany it. |
| Name | Type | Req | Description |
|---|---|---|---|
| effectiveFilters | object | – | Effective passage filters, disclosure mode, and applicable paging defaults. |
| effectiveLimit | integer | – | Search page size after metadata or full-text clamping. |
| error | object | – | Present when the call failed. Absent on success. |
| found | boolean | – | Exact-ID mode only: whether the selected passage exists. |
| guidance | string | – | How to discover a valid exact passage or missing business identifier. |
| hasMore | boolean | – | Whether passages remain after the delivered search page; absent in exact-ID mode. |
| nextOffset | integer | – | Original offset plus actually delivered passages, when more remain. |
| notice | string | – | Combined clamp, whole-item fitting, empty-result, or indivisible-record guidance. |
| provenance | object | – | Attribution, publication status, and source download dates. |
| returnedCount | integer | – | Passages actually delivered on a search page; absent in exact-ID mode. |
| scopeFound | boolean | – | Business searches only: whether the business exists, independently of published subjects or passages. |
| totalCount | integer | – | Exact whole-scope passage count when supplied; absent when a business does not exist. |
| transcripts | array | – | Whole matching passages or zero-or-one exact-ID result, without shortening original fields. |
No examples provided.
How do I install the io.github.cyanheads/switzerland-parliament-mcp-server server?
io.github.cyanheads/switzerland-parliament-mcp-server is a hosted endpoint at https://switzerland-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.
remote · switzerland-parliament.caseyjhand.com
claude mcp add --transport http cyanheads-switzerland-parliament-mcp-server 'https://switzerland-parliament.caseyjhand.com/mcp'
What is the io.github.cyanheads/switzerland-parliament-mcp-server server?
io.github.cyanheads/switzerland-parliament-mcp-server is listed in the public MCP registry as io.github.cyanheads/switzerland-parliament-mcp-server. Search Swiss parliamentary business, votes, debates, members, and declared interests. This page covers its hosted endpoint (https://switzerland-parliament.caseyjhand.com/mcp).
Is the io.github.cyanheads/switzerland-parliament-mcp-server server safe to use?
io.github.cyanheads/switzerland-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/switzerland-parliament-mcp-server server expose?
io.github.cyanheads/switzerland-parliament-mcp-server exposes 7 tools: chparl_search_business, chparl_get_business, chparl_get_votes, chparl_search_transcripts, chparl_search_members, and 2 more. Their descriptions and schemas cost roughly 2,231 tokens of context every time the server is loaded.
Does the io.github.cyanheads/switzerland-parliament-mcp-server server require authentication?
No. We connected to io.github.cyanheads/switzerland-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/switzerland-parliament-mcp-server server still maintained?
io.github.cyanheads/switzerland-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.