io.github.malkreide/lobbywatch-mcp
Lobbywatch.ch transparency data on parliamentarians, interests, access badges
Versions
0.3.4latestTools 8
get_parlamentarier Look up a Swiss federal parliamentarian and return their full profile, including all declared/researched interessenbindungen. On a fuzzy miss, the response surfaces near-miss candidates so the LLM can prompt the user with "did you mean…?" suggestions instead of treating the empty result as authoritative (audit ARCH-003). Args: name_or_id: Either the numeric Lobbywatch ID (as string) or a name. Name matching is fuzzy — partial last names work. Use cases: - "Show me Anna Mustermann's full lobbying profile" - "What conflicts of interest does parliamentarian #42 declare?" - "Look up Wehrli — give me everything you have"
list_interessenbindungen Return the list of interessenbindungen (conflicts of interest) for one parliamentarian, optionally restricted to full-time or currently-active mandates. On a fuzzy miss, near-miss candidates are returned in ``suggestions`` (audit ARCH-003). Args: name_or_id: ID or name (fuzzy). nur_hauptberuflich: If True, only main-occupation mandates. nur_aktiv: If True, drop mandates with an end date (bis) set. Use cases: - "Which active mandates does Jositsch hold today?" - "List Anna Mustermann's full-time mandates only" - "Give me every IB ever declared by parliamentarian #1"
search_parlamentarier_nach_branche Find parliamentarians with interessenbindungen matching a search term against the linked organisation's name, alias, and (when available) branche field. Optional commission filter. Note: the Lobbywatch "essential" dump does not embed a branche taxonomy on each organisation — branche is referenced by id and resolved via the separate interessengruppe table. Version 0.1 therefore performs a substring match against organisation names and the branche field when present. Version 0.2 will add full cross-reference resolution. Args: branche_query: Substring match (case-insensitive) against ``organisation.anzeige_name``, ``organisation.name``, ``organisation.branche`` (where present), e.g. "Verlag", "Pharma", "Bank", "Krankenkasse", "Bildung". kommission: Commission abbreviation to restrict the result to, e.g. "WBK-N" for the education commission of the National Council. limit: Max number of {parlamentarier, ib} pairs returned (1–200). Use cases: - "Which WBK-N members hold mandates in the publishing industry?" - "Cross-filter Pharma × FK-N to surface health-policy lobbyists" - "List every parliamentarian with a 'Krankenkasse' connection"
get_ranking Rank parliamentarians by a criterion. Args: kriterium: One of "anzahl_interessenbindungen", "anzahl_hauptberuflich". kommission: Optional commission abbreviation filter (e.g. "WBK-N"). partei: Optional party filter (e.g. "SP", "SVP", "Mitte"). limit: Top-N to return (1–100). Use cases: - "Top 10 SP MPs by total mandate count" - "Which Mitte-Fraktion members have the most full-time mandates?" - "Rank WBK-N by IB count — who's most involved?"
get_transparenzquote Aggregate the verguetungstransparenz_beurteilung values across all parliamentarians (or a commission subset) and return the distribution. Useful to answer: 'How transparent is the education commission on compensation disclosure?' Use cases: - "How transparent is the FK-N on compensation disclosure?" - "Distribution of transparency labels across the whole parliament" - "Compare WBK-N transparency vs the council average"
get_lobbygruppe Fetch a lobby group (interessengruppe) from the live Lobbywatch dataIF, including its connected organisations and parliamentarians. Uses the live REST API since this endpoint returns fresh data. Use cases: - "Look up 'economiesuisse' and list connected MPs" - "Who's affiliated with the lobby group #42?" - "Show me all parliamentarians linked to the pharma lobby"
refresh_dump Force re-download of the weekly Lobbywatch dump. Returns the new cache status. Reports progress via the MCP Context (audit SDK-003) so long-running downloads (~17 MB compressed) surface useful feedback to the calling LLM and operator. Use cases: - "Force a fresh download — the data looks stale" - "I just heard about a new declaration — refresh and re-check"
dump_status Return current dump cache status without forcing a refresh. Use cases: - "How fresh is the cached data right now?" - "When was the dump last loaded?"
Permissions 4
env_vars low network medium filesystem low shell high