jopp
Server Details
Search open jobs in Switzerland and Liechtenstein by keywords and filters, and read job details with requirements, workload, salary information and a link to the original advert. Public, read-only MCP server; no account or API key required.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 5 tools
Two pairs of tools overlap: search vs search_jobs (both keyword job searches) and fetch vs get_job (both retrieve one job by id). The descriptions do draw distinctions (filters/extra fields, readable text vs structured facts), but an agent could easily pick the wrong one, especially for the two retrieval tools.
All names are lowercase snake_case, but conventions are mixed: bare verbs (fetch, search) alongside verb_noun forms (get_job, list_categories, search_jobs). The search/search_jobs pair also differs only by suffix, which reads inconsistently.
Five tools is well-scoped for a job-search server: search, filtered search, detail retrieval, full-text fetch, and category lookup. Each tool has a plausible role and nothing feels padded.
The surface covers discovery (search, search_jobs, list_categories) and retrieval (get_job, fetch), which is the core job-board lifecycle. Minor gaps remain: no explicit pagination/next-page control despite 20-per-page results, and no company- or location-centric lookup.
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 getjopp.app. |
| 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 readOnlyHint, idempotentHint, destructiveHint=false and closed-world, so the safety profile is covered. The description adds value beyond that by disclosing what the response contains: facts, salary, description text (often a job brief), and a link to the original advert, which tells the agent what to expect from invoking it.
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?
One front-loaded sentence that names the resource, the lookup key, and the returned fields with zero filler. 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?
With an output schema present and complete annotations, the description need not explain return structure, though it helpfully summarizes it anyway. For a simple single-parameter lookup this is nearly complete; only sibling differentiation (fetch) is left unaddressed.
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% for the single 'id' parameter, and the schema already states it is the job id from search_jobs. The description merely echoes that origin without adding format, length, or lookup semantics 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 (get) and resource (one job) with a clear scope (full details of a single job by id), which distinguishes it from the sibling search_jobs. It stops short of naming the other retrieval sibling (fetch) to disambiguate further, so it is clear but not maximally differentiated.
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 tool is used after search_jobs to expand a specific result, which is useful workflow context. However, it never states when not to use this tool or how it differs from fetch, leaving the selection guidance implicit.
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. 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. | |
| 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 | ||
| 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 getjopp.app. |
| 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 cover the safety profile (readOnly, idempotent, non-destructive). The description adds genuinely useful behavior beyond that: only online adverts are returned, page size is capped at 20, filter-only searches sort newest-first, and keyword searches rank by relevance favouring recent adverts. It stops short of describing cursor semantics or edge cases.
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?
Three tight sentences, front-loaded with scope, then result behavior, then the sibling routing. 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 values need not be explained, and the description covers scope, ranking, pagination and the get_job handoff. For a 16-parameter tool it could say a bit more about combining filters (e.g. role requiring category), but the schema carries that detail.
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 69%, so the schema documents most parameters, including the important query syntax and role/category dependency. The description only gestures at 'keywords and filters' and adds no syntax or format detail beyond the schema, so baseline 3 is appropriate.
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+resource with geographic scope (Switzerland and Liechtenstein) and explicitly routes the agent to get_job for full job details, distinguishing it from that sibling. An agent can tell what it does without opening the 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?
Names the alternative (get_job) for full descriptions and signals the keyword/filter search context. However, it does not say when to prefer this over the sibling `search`, nor state exclusions or prerequisites beyond the get_job pointer.
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.
5 tool updates
- First observed
fetch - First observed
get_job - First observed
list_categories - First observed
search - First observed
search_jobs
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1622 npm1MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs1114 npm40 PyPIMIT
- AlicenseAqualityCmaintenanceRevnuvo Company Intelligence tells AI agents what changed at a company, with evidence. It observes company websites, technologies, and DNS over time and returns timestamped, confidence-aware changes, signals, and monitoring.9MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.