jopp
Server Details
Search open jobs in Switzerland and Liechtenstein and read jopp job briefs.
- Status
- Healthy
- Uptime
- 99.9% over 23 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 5 tools
There are two clear overlapping pairs: 'fetch' and 'get_job' both retrieve a single job by id, and 'search' and 'search_jobs' both perform keyword searches. The descriptions do distinguish them (fetch returns readable text vs. get_job returns structured details; search_jobs adds filters), but an agent can still easily pick the wrong one.
Names are all snake_case, but the verb style is mixed: bare verbs ('fetch', 'search') alongside verb_noun compounds ('get_job', 'list_categories', 'search_jobs'). The synonym split between 'fetch' and 'get' adds inconsistency.
Five tools is well within the healthy 3-15 range and suits a focused job-search domain: two search variants, two retrieval variants, and one category helper. The set is compact and not bloated.
Core workflows are covered: keyword search, filtered search, single-job details, full-text retrieval, and category/role lookup. Minor gaps exist (e.g., no explicit company search or saved-job/alert operations), but agents can work around these.
Available Tools
5 toolsfetchFetch a jobARead-onlyIdempotentInspect
The full text of one job by its id from search, as a readable document.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The job id from search. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| text | Yes | |
| title | Yes | |
| metadata | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint, so the safety profile is covered. The description adds only that the result is a 'readable document,' with no details on formatting, size limits, or error behavior – modest added context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that conveys scope and output form with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with an output schema and full annotations, most burdens are handled elsewhere. However, the description omits sibling differentiation against get_job, which is a notable gap given the near-identical names.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the id parameter and its origin ('from search') are fully documented in the schema. The description adds no syntax or format details beyond the schema's baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Fetch'), resource ('one job by its id'), and output form ('full text ... as a readable document'). Distinguishes from siblings like search by emphasizing retrieval of a single job's full content rather than listing or searching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage by mentioning 'from search' but offers no explicit when-to-use guidance, and it does not mention the sibling get_job or how fetch differs from it despite the overlapping purpose, leaving routing ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobGet a jobARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The job id from search_jobs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | The job on jopp.ai. |
| role | Yes | |
| start | Yes | An ISO date, "immediately" or "by_agreement". |
| title | Yes | |
| salary | Yes | "stated" comes from the advert. "estimated" is a jopp estimate of the yearly salary at 100 % workload and is not from the advert. |
| status | Yes | |
| company | Yes | |
| applyUrl | Yes | The original advert: the employer's or source's page to read it in full and apply. |
| category | Yes | |
| industry | Yes | |
| isAgency | Yes | |
| language | Yes | Language of title and description. |
| workMode | Yes | |
| workload | Yes | |
| education | Yes | Lowest education the advert asks for. |
| locations | Yes | |
| offerKind | Yes | |
| seniority | Yes | |
| experience | Yes | Years of experience the advert asks for. |
| lastSeenAt | Yes | ISO date jopp last saw the advert online. |
| leadership | Yes | |
| description | Yes | Markdown. Usually jopp's brief, a factual summary of the advert; the original advert at applyUrl is authoritative. |
| publishedAt | Yes | |
| contractType | Yes | |
| withJoppAccount | Yes | What a person can do with this job after signing in to jopp. |
| requiredLanguages | Yes | |
| advantageLanguages | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description earns credit by disclosing what the payload actually contains – facts, salary, description, and the link to the original advert – which the annotations do not.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the payload contents appended; nothing is wasted. Minor drag from the unclear 'usually a jopp brief' phrasing (likely a typo), which slightly blurs the return description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and annotations cover the safety profile. For a one-parameter lookup tool this is essentially complete, with only the vague 'jopp brief' wording leaving a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already states 'The job id from search_jobs', so the description's 'by its id from search_jobs' is largely redundant. Baseline 3 applies when the schema carries the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Full details of one job') and pins the scope to a single record by id, which cleanly separates it from search_jobs. The mention of 'from search_jobs' further anchors it against the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by its id from search_jobs' implies the workflow (search first, then fetch full detail) and names the sibling that supplies the id. It does not explicitly state when not to use it or contrast with 'fetch', so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesList job categoriesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | A category key to list its roles in detail. |
Output Schema
| Name | Required | Description |
|---|---|---|
| categories | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety and side-effect profile is fully covered. The description adds helpful context about what the tool returns (categories and roles, with typical job titles) and its relationship to search_jobs, but it does not go beyond the annotations to describe any additional behavioral traits like rate limits or specific output details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, two sentences, and front-loads the core purpose. Every sentence earns its place by clarifying what the tool returns and its connection to search_jobs without any filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has an output schema and rich annotations, the description is nearly complete. It explains the tool's role and return values well. It could be slightly more complete by explicitly mentioning the default behavior (listing all categories when no category is provided) and possibly the format of keys, but the essentials are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains the single parameter 'category' as a key to list its roles in detail. The description adds meaning by noting that passing a category key returns its roles with typical job titles, and that omitting it gives the top-level categories. This is slightly more context than the schema, but not substantially beyond what's structured; it meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description provides a specific verb+resource: it tells the agent this tool lists occupation categories and their roles. It also explicitly differentiates from the sibling search_jobs by stating these categories and roles are meant to be used as filters for that tool. This gives an unambiguous sense of purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear use case (to get category and role filters for search_jobs), implying when to use it. However, it does not explicitly state when *not* to use it, or contrast it with other siblings like fetch or search. It also doesn't mention whether calling it without a category is the standard way to list all categories.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch jobs (simple)ARead-onlyIdempotentInspect
Keyword search over open jobs in Switzerland; returns ids, titles and links. search_jobs offers filters and more fields.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Keywords, e.g. "Pflegefachfrau Bern". |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description usefully adds the corpus scope (only open jobs, Switzerland only), but the return-field detail duplicates the output schema, so the net added behavioral value is modest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the core purpose front-loaded and the alternative relegated to second position. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with an output schema and rich annotations, the description covers purpose, scope, and the sibling alternative adequately. Usage nuance is the only thin spot, and the output schema removes any need to explain return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema coverage is 100%, with the schema itself supplying the example format ("Pflegefachfrau Bern"). The description adds no syntax, format, or constraint detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (keyword search), resource (open jobs), and scope (Switzerland), plus the return shape. It explicitly differentiates itself from the sibling search_jobs, so an agent can choose between them without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"search_jobs offers filters and more fields" names the alternative and implies this tool is the simple keyword path, which is clear selection guidance. It stops short of stating explicit when-not conditions (e.g. use this only when no filters are needed), so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_jobsSearch jobs in SwitzerlandARead-onlyIdempotentInspect
Search open jobs in Switzerland and Liechtenstein by keywords and filters. Only jobs whose advert is still online are returned. Lehrstellen are listed only with segment apprenticeships. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | A role key from list_categories; requires its category. | |
| limit | No | ||
| query | No | 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 | No | nextCursor of a previous search_jobs result; the other arguments are then ignored. | |
| cantons | No | Two-letter canton codes (ZH, BE, VD, GE, …) or LI for Liechtenstein. | |
| segment | No | jobs (default): regular jobs and internships. apprenticeships: only Lehrstellen (Swiss vocational apprenticeships, Berufslehre). A search lists one of the two, never both. | jobs |
| category | No | A category key from list_categories. | |
| workModes | No | ||
| seniorities | No | ||
| workloadMax | No | Highest workload in percent of full time (10–100). | |
| workloadMin | No | Lowest workload in percent of full time (10–100). | |
| salaryStated | No | Only jobs whose advert states a salary. | |
| contractTypes | No | Not for segment apprenticeships. | |
| advertLanguages | No | Language the advert is written in. | |
| excludeAgencies | No | Leave out recruitment agencies. | |
| requiredLanguages | No | Only jobs that require all of these languages. | |
| publishedWithinDays | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | How many open jobs match. |
| results | Yes | |
| searchUrl | Yes | The same search on jopp.ai. |
| nextCursor | Yes | Pass as cursor for the next page; null at the end. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description adds real behavioural context beyond them: only still-online adverts are returned, results are capped at 20 per page, filter-only searches are newest-first while keyword searches are relevance-ranked with recency bias and company mixing. It stops short of describing pagination termination or any rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four compact sentences, front-loaded with scope and the online-only constraint, then ranking behaviour, then the sibling hand-off. Every sentence carries distinct information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-shape explanation is unnecessary, and the description covers the non-obvious constraints an agent needs (online-only, segment exclusivity, page cap, ranking differences). For a 17-parameter tool it could have hinted at how cursor paging terminates, but coverage is strong overall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 76% and the schema itself carries detailed semantics (query syntax, OR/quotes/exclusion, role-requires-category, cursor overriding other args). The description largely restates the segment constraint and the 20-per-page limit rather than adding new meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (search open jobs) plus the geographic scope (Switzerland and Liechtenstein) and the filter/keyword duality. It also explicitly routes full-description lookups to the sibling get_job, so an agent can distinguish it from neighbours without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when this tool applies (open adverts only, keyword vs filter mode) and names the alternative for detail retrieval ('Use get_job for a job's full description'). It does not, however, say when to prefer list_categories to discover role/category keys, which the schema requires as inputs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
search_jobs3 fields changed- added
Input schema / properties / contractTypes / descriptionAdded value: +"Not for segment apprenticeships." - changed
Input schema / properties / contractTypes / items / enumPrevious value: -[ - "permanent", - "temporary", - "internship", - "apprenticeship", - "freelance" -]New value: +[ + "permanent", + "temporary", + "internship", + "freelance" +] - added
Input schema / properties / segmentAdded value: +{ + "default": "jobs", + "description": "jobs (default): regular jobs and internships. apprenticeships: only Lehrstellen (Swiss vocational apprenticeships, Berufslehre). A search lists one of the two, never both.", + "enum": [ + "jobs", + "apprenticeships" + ], + "type": "string" +}
5 tool updates
- First observed
fetch - First observed
get_job - First observed
list_categories - First observed
search - First observed
search_jobs
Related MCP Connectors
Search open jobs in Switzerland and Liechtenstein and read jopp job briefs.
Jobs in Germany, Austria and Switzerland matched to your resume.
Search live job openings in many countries and languages, and read a full job ad.
Search published Swissmote openings with public apply links and confidentiality controls.
Related MCP Servers
- FlicenseNot gradedqualityAmaintenanceEnables AI agents to search, filter, and apply to salary-transparent tech jobs across nine international job boards, including Switzerland's jobs.ch and jobup.ch and Singapore's MyCareersFuture. Results are returned as JSON with salary, remote, tech, and posting-date filters, and previously applied postings are remembered so they drop out of subsequent listings.-

LAYIQ Jobsofficial
AlicenseNot gradedqualityCmaintenanceEnables users to search public job listings and retrieve details for individual postings from inside AI assistants, including ranked results, filters, and pagination. It is read-only and requires no account, authentication, or API key.MIT- FlicenseNot gradedqualityAmaintenanceEnables AI agents to search, filter, and apply to salary-transparent tech jobs across nine job boards in eight countries, including Swiss and Singapore government portals, while remembering past applications. It exposes job listings, board metadata, salary filters, and application flow as JSON-first MCP tools so agents can drive the entire job hunt without opening a browser.-
- FlicenseNot gradedqualityAmaintenanceEnables AI agents to search salary-transparent tech job boards across Switzerland, Germany, the UK, the US/Canada, the Netherlands, France, and Singapore, filter postings by pay, remote work, technology, and other criteria, and track which roles have already been applied to. It also exposes board metadata and structured JSON results so agents can query, compare, and drive job applications entirely from the terminal or an LLM workflow.-
Glama MCP Gateway
Add one secure layer between your agents and this server.