io.github.malkreide/parlament-mcp
Swiss Federal Parliament Curia Vista OData API
Versions
0.3.3latestTools 21
sprich oparl_list_bodies Kantone und Gemeindeparlamente auflisten und deren body_key ermitteln. Erster Schritt jeder Recherche: liefert die gültigen ``body_key``-Werte für alle anderen Tools. Deckt 26 Kantone und ~70 Gemeindeparlamente ab; die Bundesebene ist nicht enthalten. <example>search="Zürich" liefert u.a. '261' (Stadt Zürich, city), 'ZH' (Kanton Zürich, canton) und '230' (Winterthur, city).</example>
oparl_search_affairs Parlamentarische Geschäfte/Vorstösse einer Körperschaft durchsuchen. <use_case>Politische Recherche auf Kantons-/Gemeindeebene: hängige oder erledigte Vorstösse zu einem Thema finden.</use_case> <important_notes>``search_scope='texts'`` durchsucht den PDF-Volltext (nicht nur Titel/Metadaten). Ergebnisse standardmässig neueste zuerst (``sort_by='-begin_date'``).</important_notes> <example>body_key="261", search="Tagesschule", date_from="2024-01-01" → Vorstösse zu Tagesschulen im Gemeinderat der Stadt Zürich seit 2024.</example>
oparl_get_affair Vollständige Details eines Geschäfts nach ID abrufen. <use_case>Nach einer Suche verwenden, um Langtitel, Status und – via ``expand`` – zugehörige Abstimmungen oder Personen zu erhalten.</use_case> <example>affair_id=334542, expand="votings" für ein Geschäft der Stadt Zürich samt Abstimmungen.</example>
oparl_get_affair_documents Dokumente eines Geschäfts inkl. extrahiertem PDF-Volltext abrufen. Das Feld ``text`` enthält den extrahierten Volltext – das wertvollste Feld dieses Servers. Bei Überlänge wird NICHT stillschweigend gekürzt, sondern explizit mit ``text_truncated=true`` und ``text_total_chars`` markiert. <example>affair_id=334542, include_text=true → Weisungstext zu einem Tagesschul-Umbau der Stadt Zürich im Volltext.</example>
oparl_compare_bodies Ein Thema über viele Körperschaften hinweg vergleichen (Themenpräsenz). Zählt pro Körperschaft, wie viele Geschäfte zum Suchbegriff existieren, und gibt eine nach Trefferzahl sortierte Rangliste zurück – ideal, um zu sehen, wo ein Thema politisch aktiv ist. <example>search="Tagesschule", body_type="municipality" → In welchen Schweizer Städten (neben Zürich) sind Tagesschulen ebenfalls Thema?</example>
oparl_search_persons Mandatsträger·innen einer Körperschaft suchen. <example>body_key="261", party="GLP", active=true → aktive GLP-Mitglieder im Gemeinderat der Stadt Zürich.</example>
oparl_get_person Vollständiges Profil einer Person nach ID abrufen. <example>person_id=17429, expand="interests" für ein Mitglied des Kantons- rats Zürich samt Interessenbindungen.</example>
oparl_get_person_interests Interessenbindungen einer bestimmten Person abrufen. Achtung Datenqualität: Rohdaten mit Parsing-Artefakten; ``type``, ``role_name`` und ``group`` sind häufig leer. Antwort trägt daher ``data_quality="unverified_source_data"``. <example>person_id=17429 → deklarierte Bindungen eines Zürcher Kantonsrats- mitglieds.</example>
oparl_search_interests Interessenbindungen einer Körperschaft durchsuchen (Organisation → Personen). Für die Bundesebene (``body_key='CHE'``) ist stattdessen ``lobbywatch-mcp`` die geeignete Quelle (redaktionell geprüft, mit Branchen-Taxonomie). Achtung Datenqualität: Rohdaten mit Parsing-Artefakten (realer ZH-Datensatz enthält z.B. Jahreszahlen im Organisationsfeld). Antwort trägt ``data_quality="unverified_source_data"``. <example>body_key="ZH", search="Krankenkasse" → wer im Kanton Zürich eine Bindung zu einer Krankenkasse deklariert hat.</example>
oparl_get_votings Abstimmungen zu einem Geschäft oder einer Körperschaft abrufen. Liefert je Abstimmung die Ergebnisse (Ja/Nein/Enthaltung/Abwesend), den Entscheid sowie – wichtig zur Interpretation – die Bedeutung von Ja/Nein. Einzelstimmen liefert ``oparl_get_voting_results`` (benötigt ``voting_id``). <example>body_key="261" für Abstimmungen im Gemeinderat der Stadt Zürich, oder affair_id=334542 für die Abstimmungen zu einem konkreten Geschäft.</example>
oparl_get_voting_results Individuelle Stimmen (Namensabstimmung) zu EINER Abstimmung abrufen. Skalierungs-Guardrail: Die Gesamttabelle enthält >47 Mio. Einzelstimmen – deshalb ist ``voting_id`` Pflicht und ``limit`` hart auf 500 gedeckelt. <example>voting_id=105130 → wie die einzelnen Mitglieder der Stadt Zürich abgestimmt haben (mit Fraktion und Partei).</example>
oparl_search_meetings Sitzungen einer Körperschaft in einem Zeitraum finden. <example>body_key="261", date_from="2024-01-01", date_to="2024-12-31" → Sitzungen des Gemeinderats der Stadt Zürich im Jahr 2024.</example>
oparl_source_status Erreichbarkeit der OpenParlData-API und Zustand des Body-Cache prüfen. Liefert Latenz, Zeitpunkt des letzten erfolgreichen Abrufs sowie Alter und Umfang des Body-Cache – nützlich zur Diagnose vor grösseren Recherchen.
parlament_search_business Parlamentarische Vorstösse suchen (Motionen, Interpellationen, Postulate usw.). Durchsucht Curia Vista Geschäftsdaten von ws.parlament.ch. <use_case>Politische Recherche zu Bildungs-, Datenschutz- oder Verwaltungsthemen; hängige Vorstösse zu KI in der Bildung, Digitalisierungsinitiativen oder beliebigen Politikthemen finden.</use_case> <important_notes>Titel-Suche via OData substringof() (gross-/klein-sensitiv). Maximal 100 Treffer pro Aufruf; mit `offset` paginieren.</important_notes> <example>keyword='KI', keyword2='Schule', status='Eingereicht'</example>
parlament_get_business Vollständige Details eines parlamentarischen Vorstosses nach Curia Vista ID abrufen. <use_case>Nach einer Suche verwenden, um vollständige Informationen inkl. Ausgangslage, Vorstosstext und Antwort des Bundesrats zu erhalten.</use_case> <important_notes>Benötigt die numerische Geschäfts-ID (aus parlament_search_business). `found=false` bei unbekannter ID.</important_notes>
parlament_search_members National- und Ständeräte suchen. <use_case>Alle Zürcher Ratsmitglieder ('ZH') oder Mitglieder einer bestimmten Partei finden. Synergie: mit parlament_search_business kombinieren, um Urheber von Vorstössen zu identifizieren.</use_case> <important_notes>`active_only=True` (Default) liefert nur amtierende Mitglieder. Kanton als 2-Buchstaben-Kürzel.</important_notes>
parlament_get_votes Parlamentarische Abstimmungen (im Rat) mit Ja/Nein-Bedeutung abrufen. <use_case>Zeigt, wie der Rat über Themen wie KI-Regulierung, Bildungsfinanzierung oder Digitalisierungsprojekte abgestimmt hat.</use_case> <important_notes>`meaning_yes`/`meaning_no` erklären, was ein Ja/Nein im konkreten Geschäft bedeutet – wichtig zur korrekten Interpretation.</important_notes>
parlament_get_sessions Aktuelle parlamentarische Sessionen mit Daten auflisten. <use_case>Session-IDs aus dieser Liste zum Filtern von Abstimmungen oder Transkripten verwenden.</use_case> <important_notes>Session-Namen können für sehr aktuelle Sessionen `null` sein – dann die Session-ID verwenden.</important_notes>
parlament_search_transcripts Wörtliche Wortmeldungen aus den Ratsdebatten durchsuchen (Amtliches Bulletin). Liefert **kurze, zitierfähige Auszüge** (kein Volltext) mit korrekter AB-Zitation und stabiler Quell-URL. Für den Wortlaut eines einzelnen Votums danach `parlament_get_transcript(transcript_id=…)` verwenden. <use_case>«Was hat Nationalrätin X in der Frühjahrssession 2024 zur Volksschule gesagt?» – Sprecher, Session, Rat, Geschäft oder Datumsfenster kombinieren. Synergie mit fedlex-mcp: vom Gesetzestext zur Debatte.</use_case> <important_notes>Nur echte Wortmeldungen (keine Abstimmungszeilen). Der `Language`-Filter dedupliziert die Editionen und blendet keine französisch-/italienischsprachigen Voten aus – die reale Sprache steht in `language`. Abdeckung ab 1999-12-06. Für beste Latenz `session_id`, `business_number` oder ein Datumsfenster mit einem freien `keyword` kombinieren.</important_notes> <example>speaker_name='Munz', session_id=5202, keyword='Volksschule'</example>
parlament_get_transcript Den vollen Wortlaut **eines einzelnen** Votums nach Transkript-ID abrufen. <use_case>Nach einer Suche mit parlament_search_transcripts den kompletten Wortlaut eines konkreten Votums holen – zitierfähig, mit stabiler URL.</use_case> <important_notes>Ausgabe ist gedeckelt (`max_chars`); bei Kürzung ist `is_excerpt=True` gesetzt und `note`/`next_offset` erklären, wie die Fortsetzung zu laden ist. Kein stilles Kürzen. Der Wortlaut wird nie durch eine Zusammenfassung ersetzt.</important_notes>
Permissions 4
network medium filesystem low shell high env_vars low