io.github.malkreide/seco-labor-mcp
SECO labour market: unemployment, vacancies, workforce indicators
Versions
0.3.3latestTools 12
seco_search_datasets Sucht Arbeitsmarkt-Datensätze auf opendata.swiss. **Nicht auf SECO gefiltert, und das ist eine Aussage über die Quelle.** Bis zum 2026-08-14 filterte diese Suche auf `organization:staatssekretariat- fur-wirtschaft-seco`. Diese Organisation existiert auf opendata.swiss nicht (mehr): `organization_show` antwortet 404, und in den 176 Einträgen von `organization_list` kommt kein SECO vor. Jede Suche lieferte deshalb null Treffer — und ein Namensabgleich, der ins Leere läuft, sieht genau aus wie eine leere Suche. Die Suche läuft jetzt über den ganzen Bestand, und **jeder Treffer trägt seinen Herausgeber**. Das ist die ehrlichere Antwort: Datensätze zum Arbeitsmarkt gibt es, sie stammen nur vom BFS, von Kantonen und vom liechtensteinischen Amt für Statistik. Wer sie verwendet, muss wissen, von wem — die Erhebungsweise unterscheidet sich, und registrierte Arbeitslose (SECO) sind nicht dasselbe wie Erwerbslose gemäss ILO (BFS). Args: params (DatasetSearchInput): Contains: - query (str): Search terms (German/English) - limit (int): Max results (1-20, default 10) - response_format (str): 'markdown' or 'json' Returns: str: Dataset list with IDs and resource URLs, or JSON array of dataset objects. Example queries: - 'arbeitslose kantone' → kantonale Arbeitslosenzahlen (kantonale Portale) - 'Kurzarbeit' → Kurzarbeitsentschädigung - 'Erwerbslose ILO' → die BFS-Reihe Hinweis: 'Jugendarbeitslosigkeit' liefert am 2026-08-14 portalweit null Treffer. Das ist der Bestand und kein Fehler der Suche.
seco_get_dataset Fetch full details and download links for a specific SECO dataset. Use this after seco_search_datasets to get complete metadata and all resource download URLs for a dataset. Args: params (DatasetDetailsInput): Contains: - dataset_id (str): Dataset ID/slug from opendata.swiss - response_format (str): 'markdown' or 'json' Returns: str: Full dataset metadata including all resource download URLs.
seco_get_unemployment_overview Registrierte Arbeitslose der Schweiz — SECO-Zahlen, publiziert vom BFS. Liefert die Jahresreihe der registrierten Arbeitslosen (Jahresdurchschnitt, 2000 bis heute) aus der BFS-Tabelle `T3.3.0.1`. Die Zahlen stammen aus SECOs RAV-System; das BFS veröffentlicht sie und nennt SECO als Quelle. **Was dieses Werkzeug nicht liefert:** monatliche Werte und kantonale Aufschlüsselungen. Beide gibt es auf opendata.swiss nicht in maschinenlesbarer Form — geprüft am 2026-08-14 über den ganzen Bestand. Wer sie braucht, findet sie interaktiv auf amstat.ch. Eine Abfrage mit `canton` bekommt deshalb eine Absage und keine national aggregierte Zahl, die so aussieht, als wäre sie kantonal. **Nicht mit der ILO-Erwerbslosigkeit verwechseln.** Dieselbe Tabelle führt beide Reihen; die ILO-Zahl lag im Jahr 2000 um 76 Prozent höher. Das Werkzeug gibt beide aus und beschriftet sie, statt sie zu vermischen. Args: params (UnemploymentInput): Contains: - canton (Optional[str]): wird abgelehnt, siehe oben. - year (Optional[int]): Jahr der Reihe. None = jüngstes verfügbares. - response_format (str): 'markdown' oder 'json' Returns: str: Jahreswerte mit Herkunftsangabe, oder eine benannte Absage.
seco_get_youth_unemployment Jugendarbeitslosigkeit (15–24) — national keine Quelle, in zwei Kantonen schon. **National liefert dieses Werkzeug keine Zahlen.** Eine Suche über den ganzen Bestand von opendata.swiss nach «Jugendarbeitslosigkeit» ergab am 2026-08-14 null Datensätze. SECO erhebt die Zahl und zeigt sie auf amstat.ch, veröffentlicht sie aber nicht als Datei. **Zwei Kantone publizieren sie**, und zwar in unterschiedlicher Form: * **TG** als *Anzahl* registrierter Arbeitsloser und Stellensuchender der Altersklasse 15–24, monatlich seit 2016. * **ZG** als *Quote*, monatlich seit 1993. Eine Anzahl und eine Quote sind nicht ineinander umrechenbar, solange die Bezugsgrösse fehlt. Das Werkzeug gibt deshalb aus, was der jeweilige Kanton führt, und beschriftet es — statt beides zu einer Zahl zu verschmelzen. Was es stattdessen gibt: die Einordnung, die eine Zahl brauchbar macht — das saisonale Muster und was daraus für die Bildungsplanung folgt. Das ist Fachwissen und keine Messung, und es steht hier als solches. Die frühere Fassung nannte an dieser Stelle «+2'186 Jugendarbeitslose (+18.6%)» als Beispielwert aus einem Snapshot. Eine als Beispiel eingeführte Zahl wird als Zahl zitiert; der Zusatz «Snapshot» überlebt das Zitieren nicht. Args: params (YouthUnemploymentInput): Contains: - canton (Optional[str]): Kantonscode; ändert am Ergebnis nichts. - response_format (str): 'markdown' oder 'json' Returns: str: Eine benannte Absage samt Bezugsquellen und fachlicher Einordnung.
seco_get_job_seekers Registrierte Stellensuchende — SECO-Zahlen, publiziert vom BFS. Stellensuchende ist die weitere Kategorie: sie schliesst Personen in Umschulung, Beschäftigungsprogrammen und anderen ALV-Massnahmen ein, die nicht als arbeitslos gezählt werden. Der Abstand zwischen beiden Reihen ist die eigentliche Aussage — er sagt, wie viele Menschen das System gerade begleitet, ohne dass sie in der Arbeitslosenquote auftauchen. Dieselbe Tabelle wie `seco_get_unemployment_overview` (BFS `T3.3.0.1`), Jahresdurchschnitte ab 2000, national. Kantonale und monatliche Werte gibt es dort nicht; `canton` bekommt deshalb eine Absage statt einer nationalen Zahl im kantonalen Gewand. Args: params (JobSeekersInput): Contains: - canton (Optional[str]): wird abgelehnt, siehe oben. - response_format (str): 'markdown' oder 'json' Returns: str: Jahreswerte beider Reihen samt Abstand, mit Herkunftsangabe.
seco_get_open_positions Get open job positions (Offene Stellen) statistics from SECO/AMSTAT. Open positions data is a leading indicator for labor market demand – relevant for identifying which professions/sectors to emphasize in vocational guidance and which Lehrberufe are in high demand. Args: params (OpenPositionsInput): Contains: - response_format (str): 'markdown' or 'json' Returns: str: Open positions trends and interpretation for educational planning. Includes which sectors are hiring and notes on Stellenmeldepflicht.
seco_get_monthly_report_url Generate and validate URL for SECO monthly labor market press report. SECO publishes monthly press documentation 'Die Lage auf dem Arbeitsmarkt' as PDF. This tool constructs the URL for a specific month/year and verifies availability. Args: params (MonthlyReportInput): Contains: - year (int): Report year (e.g. 2025, 2026) - month (int): Report month (1-12) - language (str): 'de', 'fr', or 'it' Returns: str: PDF URL and availability status for the requested monthly report. Note: Reports are published on the first Thursday of the following month. Example: January 2026 data → published February 6, 2026.
seco_get_unemployment_by_occupation Get unemployment statistics broken down by occupation/profession (Berufshauptgruppe). This is the most directly relevant tool for Berufswahlberatung – it shows which professions have high unemployment rates, which sectors are declining, and which Lehrberufe lead to stable employment outcomes. Args: params (OccupationInput): Contains: - response_format (str): 'markdown' for human-readable, 'json' for structured data. Returns: str: Unemployment by major occupational group (Berufshauptgruppe). Includes Stellenmeldepflicht status and implications for apprenticeship market counseling. Schema (JSON): { "occupational_groups": [ { "group": str, "unemployment_rate_pct": float, "stellenmeldepflicht": bool, "trend": str } ], "source": str, "education_implications": [str] }
seco_list_cantons List all Swiss canton codes and their names. Utility tool to look up canton codes needed for other seco_* tools. Returns all 26 cantons with their 2-letter codes and full names. Returns: str: Markdown table of canton codes and names.
seco_get_uvg_overview Switzerland-wide key figures on occupational accidents and diseases (UVG). Covers all 22 Swiss accident insurers: registered and accepted cases, accepted occupational diseases, disability pensions, fatalities and costs over the five most recent years. Published by KSUV/SSUV c/o Suva — not by SECO. Complements the unemployment tools of this server: same labour market, risk side instead of demand side. Args: params (UvgOverviewInput): years, include_non_occupational, response_format Returns: str: Key figures with source, provenance and publication date.
seco_get_uvg_by_branch Occupational accident and disease results per economic branch (NOGA 2008). Answers which branches carry which accident risk — the counterpart to seco_get_unemployment_by_occupation for vocational guidance: a Lehrberuf recommendation can weigh demand against occupational risk. Every response carries a totals check: the parsed rows are summed and compared against the total printed in the publication. Args: params (UvgBranchInput): noga, table, response_format Returns: str: Branch rows including sector totals and the category 'Unbekannt'.
seco_get_uvg_trends Ten-year time series of accident indicators for one NOGA branch. Twelve indicators per branch, among them case risk per 1000 full-time equivalents, occupational diseases per 100'000, severe accidents, disability pensions and fatalities. Each data point carries a `significant` flag: the source marks statistically significant year-on-year changes with an asterisk. Report a change as significant only where that flag is set. Args: params (UvgTrendInput): noga, branch_type, indicator, response_format Returns: str: Time series per indicator with mean and trend.
Permissions 4
network medium filesystem low shell high env_vars low