MCP 서버

jopp

app.getjopp/jobs
검색 및 리서치 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Searches open jobs in Switzerland and Liechtenstein, provides category filters, and retrieves full job details.

fetch
Fetch a job
The full text of one job by its id from search, as a readable document.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id'], 'properties': {'id': {'type': 'string', 'maxLength': 100, 'description': 'The job id from search.'}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id', 'title', 'text', 'url', 'metadata'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'text': {'type': 'string'}, 'title': {'type': 'string'}, 'metadata': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'string'}}}, 'additionalProperties': False}
get_job
Get a job
Full details of one job by its id from search_jobs: facts, salary, description (usually a jopp brief) and the link to the original advert.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id'], 'properties': {'id': {'type': 'string', 'maxLength': 100, 'description': 'The job id from search_jobs.'}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id', 'url', 'applyUrl', 'status', 'title', 'company', 'isAgency', 'locations', 'workload', 'workMode', 'contractType', 'seniority', 'offerKind', 'category', 'role', 'industry', 'start', 'leadership', 'education', 'experience', 'requiredLanguages', 'advantageLanguages', 'salary', 'language', 'description', 'publishedAt', 'lastSeenAt', 'withJoppAccount'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string', 'description': 'The job on getjopp.app.'}, 'role': {'anyOf': [{'type': 'object', 'required': ['key', 'label'], 'properties': {'key': {'type': 'string'}, 'label': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'start': {'type': ['string', 'null'], 'description': 'An ISO date, "immediately" or "by_agreement".'}, 'title': {'type': 'string'}, 'salary': {'anyOf': [{'type': 'object', 'required': ['basis', 'text', 'currency', 'min', 'max', 'period'], 'properties': {'max': {'type': ['number', 'null']}, 'min': {'type': ['number', 'null']}, 'text': {'type': ['string', 'null']}, 'basis': {'enum': ['stated', 'estimated'], 'type': 'string'}, 'period': {'type': ['string', 'null']}, 'currency': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': '"stated" comes from the advert. "estimated" is a jopp estimate of the yearly salary at 100 % workload and is not from the advert.'}, 'status': {'enum': ['open', 'closed'], 'type': 'string'}, 'company': {'type': 'string'}, 'applyUrl': {'type': 'string', 'description': "The original advert: the employer's or source's page to read it in full and apply."}, 'category': {'anyOf': [{'type': 'object', 'required': ['key', 'label'], 'properties': {'key': {'type': 'string'}, 'label': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'industry': {'type': ['string', 'null']}, 'isAgency': {'type': 'boolean'}, 'language': {'anyOf': [{'enum': ['de', 'fr', 'it', 'en', 'other'], 'type': 'string'}, {'type': 'null'}], 'description': 'Language of title and description.'}, 'workMode': {'anyOf': [{'enum': ['onsite', 'hybrid', 'remote'], 'type': 'string'}, {'type': 'null'}]}, 'workload': {'type': ['string', 'null']}, 'education': {'type': ['string', 'null'], 'description': 'Lowest education the advert asks for.'}, 'locations': {'type': 'array', 'items': {'type': 'string'}}, 'offerKind': {'anyOf': [{'enum': ['job', 'apprenticeship', 'internship', 'trainee', 'working_student', 'freelance', 'not_a_job', 'unknown'], 'type': 'string'}, {'type': 'null'}]}, 'seniority': {'anyOf': [{'enum': ['entry', 'professional', 'senior', 'lead', 'management'], 'type': 'string'}, {'type': 'null'}]}, 'experience': {'type': ['string', 'null'], 'description': 'Years of experience the advert asks for.'}, 'lastSeenAt': {'type': ['string', 'null'], 'description': 'ISO date jopp last saw the advert online.'}, 'leadership': {'anyOf': [{'enum': ['team_lead', 'people_manager'], 'type': 'string'}, {'type': 'null'}]}, 'description': {'type': 'string', 'description': "Markdown. Usually jopp's brief, a factual summary of the advert; the original advert at applyUrl is authoritative."}, 'publishedAt': {'type': ['string', 'null']}, 'contractType': {'anyOf': [{'enum': ['permanent', 'temporary', 'internship', 'apprenticeship', 'freelance'], 'type': 'string'}, {'type': 'null'}]}, 'withJoppAccount': {'type': 'object', 'required': ['text', 'signInUrl'], 'properties': {'text': {'type': 'string'}, 'signInUrl': {'type': 'string'}}, 'description': 'What a person can do with this job after signing in to jopp.', 'additionalProperties': False}, 'requiredLanguages': {'type': 'array', 'items': {'type': 'string'}}, 'advantageLanguages': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}
list_categories
List job categories
jopp's occupation categories and their roles, for the category and role filters of search_jobs. Pass a category key to get its roles with typical job titles.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'category': {'type': 'string', 'maxLength': 60, 'description': 'A category key to list its roles in detail.'}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['categories'], 'properties': {'categories': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'examples', 'roles'], 'properties': {'key': {'type': 'string'}, 'label': {'type': 'string'}, 'roles': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label'], 'properties': {'key': {'type': 'string'}, 'label': {'type': 'string'}, 'examples': {'type': 'string'}}, 'additionalProperties': False}}, 'examples': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
search
Search jobs (simple)
Keyword search over open jobs in Switzerland; returns ids, titles and links. search_jobs offers filters and more fields.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'query': {'type': 'string', 'maxLength': 200, 'description': 'Keywords, e.g. "Pflegefachfrau Bern".'}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['results'], 'properties': {'results': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title', 'url'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'title': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
search_jobs
Search jobs in Switzerland
Search open jobs in Switzerland and Liechtenstein by keywords and filters. Only jobs whose advert is still online are returned. Returns up to 20 jobs per page, newest first for filter-only searches; keyword searches rank by relevance, favouring recent adverts and mixing companies. Use get_job for a job's full description.
읽기 전용 멱등성
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'role': {'type': 'string', 'maxLength': 60, 'description': 'A role key from list_categories; requires its category.'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 20, 'minimum': 1}, 'query': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Keywords matched against job title, company and description, with German word forms (e.g. "Pflegefachfrau", "Software Engineer Python"). All words must match; use OR between alternatives, "quotes" for phrases and -word to exclude. Place names match only the text; use cantons to filter by location.'}, 'cursor': {'type': 'string', 'maxLength': 4000, 'description': 'nextCursor of a previous search_jobs result; the other arguments are then ignored.'}, 'cantons': {'type': 'array', 'items': {'enum': ['AG', 'AI', 'AR', 'BE', 'BL', 'BS', 'FR', 'GE', 'GL', 'GR', 'JU', 'LU', 'NE', 'NW', 'OW', 'SG', 'SH', 'SO', 'SZ', 'TG', 'TI', 'UR', 'VD', 'VS', 'ZG', 'ZH', 'LI'], 'type': 'string'}, 'maxItems': 27, 'description': 'Two-letter canton codes (ZH, BE, VD, GE, â\x80¦) or LI for Liechtenstein.'}, 'category': {'type': 'string', 'maxLength': 60, 'description': 'A category key from list_categories.'}, 'workModes': {'type': 'array', 'items': {'enum': ['onsite', 'hybrid', 'remote'], 'type': 'string'}}, 'seniorities': {'type': 'array', 'items': {'enum': ['entry', 'professional', 'senior', 'lead', 'management'], 'type': 'string'}}, 'workloadMax': {'type': 'integer', 'maximum': 100, 'minimum': 10, 'description': 'Highest workload in percent of full time (10â\x80\x93100).'}, 'workloadMin': {'type': 'integer', 'maximum': 100, 'minimum': 10, 'description': 'Lowest workload in percent of full time (10â\x80\x93100).'}, 'salaryStated': {'type': 'boolean', 'description': 'Only jobs whose advert states a salary.'}, 'contractTypes': {'type': 'array', 'items': {'enum': ['permanent', 'temporary', 'internship', 'apprenticeship', 'freelance'], 'type': 'string'}}, 'advertLanguages': {'type': 'array', 'items': {'enum': ['de', 'fr', 'it', 'en', 'other'], 'type': 'string'}, 'description': 'Language the advert is written in.'}, 'excludeAgencies': {'type': 'boolean', 'description': 'Leave out recruitment agencies.'}, 'requiredLanguages': {'type': 'array', 'items': {'enum': ['de', 'fr', 'it', 'en'], 'type': 'string'}, 'description': 'Only jobs that require all of these languages.'}, 'publishedWithinDays': {'anyOf': [{'type': 'number', 'const': 1}, {'type': 'number', 'const': 3}, {'type': 'number', 'const': 7}, {'type': 'number', 'const': 14}, {'type': 'number', 'const': 30}]}}}
출력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['total', 'results', 'nextCursor', 'searchUrl'], 'properties': {'total': {'type': 'number', 'description': 'How many open jobs match.'}, 'results': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'url', 'title', 'company', 'isAgency', 'locations', 'workload', 'workMode', 'contractType', 'seniority', 'salary', 'summary', 'publishedAt', 'lastSeenAt'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string', 'description': 'The job on getjopp.app.'}, 'title': {'type': 'string'}, 'salary': {'type': ['string', 'null'], 'description': 'Salary as stated in the advert, if any.'}, 'company': {'type': 'string'}, 'summary': {'type': 'string', 'description': 'A short excerpt of the job description.'}, 'isAgency': {'type': 'boolean', 'description': 'True when a recruitment agency posted the job.'}, 'workMode': {'anyOf': [{'enum': ['onsite', 'hybrid', 'remote'], 'type': 'string'}, {'type': 'null'}]}, 'workload': {'type': ['string', 'null'], 'description': 'Workload in percent of full time, e.g. "80â\x80\x93100 %".'}, 'locations': {'type': 'array', 'items': {'type': 'string'}}, 'seniority': {'anyOf': [{'enum': ['entry', 'professional', 'senior', 'lead', 'management'], 'type': 'string'}, {'type': 'null'}]}, 'lastSeenAt': {'type': ['string', 'null'], 'description': 'ISO date jopp last saw the advert online; a job is listed only while it is.'}, 'publishedAt': {'type': ['string', 'null'], 'description': 'ISO date the job was published or first seen.'}, 'contractType': {'anyOf': [{'enum': ['permanent', 'temporary', 'internship', 'apprenticeship', 'freelance'], 'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'searchUrl': {'type': 'string', 'description': 'The same search on getjopp.app.'}, 'nextCursor': {'type': ['string', 'null'], 'description': 'Pass as cursor for the next page; null at the end.'}}, 'additionalProperties': False}
추가됨
fetch
2026년 10월 4일 2:40 AM
추가됨
search
2026년 10월 4일 2:40 AM
추가됨
list_categories
2026년 10월 4일 2:40 AM
추가됨
get_job
2026년 10월 4일 2:40 AM
추가됨
search_jobs
2026년 10월 4일 2:40 AM