jopp
Server Details
Search open jobs in Switzerland and Liechtenstein and read jopp job briefs.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Score is being calculated.
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 jobRead-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 |
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 SwitzerlandRead-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 jopp.ai. |
| nextCursor | Yes | Pass as cursor for the next page; null at the end. |
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 Connectors
Search open jobs in Switzerland and Liechtenstein and read jopp job briefs.
Search live job openings in many countries and languages, and read a full job ad.
Job search for Switzerland. Searches current listings on funkyjobs.ch by keyword, place with radius, workload, category and publishing date, and fetches a single listing with employer, location, workload and salary where stated. Read-only, no account needed. Docs: https://www.funkyjobs.ch/mcp-connector
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables searching and browsing 45,000+ classified ads on Joomil.ch, including filtering by category, canton, price, and location, retrieving listing details, and exploring categories.-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to browse recent job postings from a keyless European (Germany-heavy) job board, keyword-search them client-side by title, company or tag, and fetch full HTML descriptions for individual listings, with pagination and remote-only filtering.20 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables searching for job listings on the German job portal Stepstone.de with multi-term queries, location targeting by postal code and radius, and detailed job information retrieval through session-aware follow-ups.9MIT
- AlicenseAqualityBmaintenanceSearches 104 job listings with natural-language filters and retrieves full postings via MCP tools.327 PyPI27MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.