Skip to main content
Glama

WeJob

Server Details

Read-only MCP server for public WeJob jobs, formations, and companies.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 73 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
WeJob-IT/WeJob-MCP
GitHub Stars
1
Server Listing
WeJob-MCP

TDQS

B3.1/5.0

Scored across 8 tools

Disambiguation2/5

The generic fetch and search tools directly overlap with the three wejob_get_* and three wejob_search_* tools, since fetch can retrieve jobs, formations, and companies and search can find all three types. An agent has no clear reason to prefer one over the other, creating multiple ambiguous tool pairs.

Naming Consistency2/5

Naming mixes two conventions: unprefixed fetch/search and prefixed wejob_get_*/wejob_search_* tools. Even within the same operation, the verb differs (fetch vs get), so the pattern is not predictable.

Tool Count3/5

Eight tools is a reasonable count for a read-only public API covering jobs, formations, and companies, but the set is inflated by redundant generic and per-type tools that could be collapsed.

Completeness5/5

For a public read-only domain, the surface covers both search and retrieval for every entity type (jobs, formations, companies), and the generic fetch/search provide cross-type access. No obvious lifecycle gaps remain.

Available Tools

8 tools
fetchFetch WeJob itemA
Read-only
Inspect

Fetch a public WeJob item by id. Supported id prefixes: job:, formation:, company:.

NameRequiredDescriptionDefault
idYesResult id returned by search.

Output Schema

NameRequiredDescription
idYes
urlYes
jobsNo
logoNo
priceNo
titleYes
salaryNo
valuesNo
companyNo
contactNo
cultureNo
missionNo
profileNo
programNo
websiteNo
benefitsNo
durationNo
end_dateNo
industryNo
locationNo
languagesNo
locationsNo
work_modeNo
categoriesNo
formationsNo
founded_atNo
start_dateNo
tech_stackNo
active_jobsNo
descriptionNo
company_sizeNo
activity_rateNo
prerequisitesNo
contract_typesNo
formation_modeNo
business_sectorNo
experience_levelNo
responsibilitiesNo
active_formationsNo
expertise_domainsNo
learning_outcomesNo
certification_typeNo
nice_to_have_skillsNo
application_deadlineNo
required_hard_skillsNo
required_soft_skillsNo

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and closed-world scope, so the safety profile is covered. The description adds genuinely new behavioral context: the item must be public (so private/non-public ids will not resolve) and the id must carry one of three supported prefixes. Error handling for unsupported prefixes is left unstated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, with the core action front-loaded and the constraint clause appended. No filler and nothing repeated from the schema or annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations carrying the safety profile, the description does not need to explain return values. For a one-parameter read tool it is nearly complete; only the failure mode for an unsupported prefix is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the sole parameter is documented as the result id returned by search, so the baseline would be 3. The description goes beyond the schema by specifying the accepted id prefix syntax (job:, formation:, company:), which is real added meaning the schema does not carry.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (fetch) and resource (public WeJob item) scoped by id, and the prefix list (job:, formation:, company:) signals that this is the generic, multi-type getter rather than one of the type-specific siblings. It stops short of explicitly naming wejob_get_job/company/formation as alternatives, but an agent can still distinguish it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus the three type-specific getters or the search tool; the only implicit hint is the supported-prefix list. No prerequisites or exclusions are given, so the agent must infer routing from sibling names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wejob_get_companyGet WeJob companyA
Read-only
Inspect

Fetch one public WeJob company profile by public id (raw id or the company: returned by search/fetch).

NameRequiredDescriptionDefault
idYesPublic company id.

Output Schema

NameRequiredDescription
idYes
urlYes
jobsNo
logoNo
priceNo
titleYes
salaryNo
valuesNo
companyNo
contactNo
cultureNo
missionNo
profileNo
programNo
websiteNo
benefitsNo
durationNo
end_dateNo
industryNo
locationNo
languagesNo
locationsNo
work_modeNo
categoriesNo
formationsNo
founded_atNo
start_dateNo
tech_stackNo
active_jobsNo
descriptionNo
company_sizeNo
activity_rateNo
prerequisitesNo
contract_typesNo
formation_modeNo
business_sectorNo
experience_levelNo
responsibilitiesNo
active_formationsNo
expertise_domainsNo
learning_outcomesNo
certification_typeNo
nice_to_have_skillsNo
application_deadlineNo
required_hard_skillsNo
required_soft_skillsNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds only that the profile is 'public' (no private/authenticated data), which is modest value, and says nothing about rate limits or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence, front-loaded with the action and resource, with the id-format clarification in parentheses. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, a fully documented single parameter, and annotations covering safety, the description is nearly complete for this simple lookup. Only minor gap is the absence of explicit routing guidance against the sibling search tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema only says 'Public company id.', but the description adds real meaning: the id may be a raw id or the 'company:<id>' form returned by search/fetch. That accepted-input detail is not derivable from the schema and genuinely helps invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Fetch) and resource (one public WeJob company profile) with clear scope ('one public'). The resource noun 'company' implicitly separates it from siblings like wejob_get_job and wejob_get_formation, but it never explicitly delineates itself from wejob_search_companies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: fetch a single company profile rather than search. It explains where the id comes from (search/fetch output), which is helpful context, but there is no explicit when-to-use vs when-to-use-search statement or exclusion of alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wejob_get_formationGet WeJob formationA
Read-only
Inspect

Fetch one public active WeJob formation by public id (raw id or the formation: returned by search/fetch).

NameRequiredDescriptionDefault
idYesPublic formation id.

Output Schema

NameRequiredDescription
idYes
urlYes
jobsNo
logoNo
priceNo
titleYes
salaryNo
valuesNo
companyNo
contactNo
cultureNo
missionNo
profileNo
programNo
websiteNo
benefitsNo
durationNo
end_dateNo
industryNo
locationNo
languagesNo
locationsNo
work_modeNo
categoriesNo
formationsNo
founded_atNo
start_dateNo
tech_stackNo
active_jobsNo
descriptionNo
company_sizeNo
activity_rateNo
prerequisitesNo
contract_typesNo
formation_modeNo
business_sectorNo
experience_levelNo
responsibilitiesNo
active_formationsNo
expertise_domainsNo
learning_outcomesNo
certification_typeNo
nice_to_have_skillsNo
application_deadlineNo
required_hard_skillsNo
required_soft_skillsNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so safety is covered. The description adds real behavioral context beyond that: only 'public active' formations are retrievable, and the id may be raw or carry a 'formation:' prefix, which affects how the call must be formed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the verb, resource, key, and accepted id formats; no filler or redundant restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 annotations and an output schema, the essentials are present: scope, lookup key, and id format. The only minor gap is not stating the behavior when the id is missing or the formation is inactive, though 'active' implies that case exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema only says 'Public formation id.', so baseline is 3. The description earns a point above baseline by documenting the two accepted id forms (raw id or formation:<id>), which the schema does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (fetch), resource (WeJob formation), and cardinality/scope (one, public, active), and pins the lookup key (public id). The singular 'one ... by public id' cleanly separates it from the sibling wejob_search_formations without needing to name it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It tells the agent when this tool applies: when you already hold an id, and it explicitly states the id originates from search/fetch, which routes the agent to the right siblings. It stops short of an explicit when-not or a named alternative for discovering ids.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wejob_get_jobGet WeJob jobA
Read-only
Inspect

Fetch one public active WeJob job offer by public id (raw id or the job: returned by search/fetch).

NameRequiredDescriptionDefault
idYesPublic job id.

Output Schema

NameRequiredDescription
idYes
urlYes
jobsNo
logoNo
priceNo
titleYes
salaryNo
valuesNo
companyNo
contactNo
cultureNo
missionNo
profileNo
programNo
websiteNo
benefitsNo
durationNo
end_dateNo
industryNo
locationNo
languagesNo
locationsNo
work_modeNo
categoriesNo
formationsNo
founded_atNo
start_dateNo
tech_stackNo
active_jobsNo
descriptionNo
company_sizeNo
activity_rateNo
prerequisitesNo
contract_typesNo
formation_modeNo
business_sectorNo
experience_levelNo
responsibilitiesNo
active_formationsNo
expertise_domainsNo
learning_outcomesNo
certification_typeNo
nice_to_have_skillsNo
application_deadlineNo
required_hard_skillsNo
required_soft_skillsNo

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/non-destructive/openWorld=false, so the safety profile is covered. The description adds real context beyond that: only "public active" offers are returned, which signals preconditions and what an agent can expect for inactive or private ids.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no waste; the fetch action and the id-format clarification are packed without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations, full schema coverage, and an output schema handling return values, the definition covers everything needed to call it correctly. Only the behavior on a nonexistent/inactive id is left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the single id parameter is already documented. The description still adds meaning by specifying the accepted id forms (raw id or job:<id>), which the schema's "Public job id." does not convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource ("Fetch one public active WeJob job offer") and scopes it to a single record, making it distinguishable from the singular/plural search siblings. It does not name a specific alternative tool, so full sibling differentiation is implicit rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear context for use: single-offer lookup by id, with the id sourcing path spelled out ("raw id or the job:<id> returned by search/fetch"). No explicit when-not-to-use or named alternative is given, 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.

wejob_search_companiesSearch WeJob companiesB
Read-only
Inspect

Search public WeJob company profiles.

NameRequiredDescriptionDefault
pageNoOne-based result page number.
sortNoOptional public result sort order.
limitNoMaximum number of results.
queryNoFree-text search over company names and descriptions.
sizesNoComma-separated company sizes (employees): 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5000+.
locationNoCity or canton, e.g. Genève, Vaud, Lausanne, Zurich. Comma-separate several places.
industriesNoComma-separated business sectors, e.g. technologies, finance, sante, education, commerce, marketing, consulting, industrie, telecommunications.
technologiesNoComma-separated technologies, e.g. React, AWS.

Output Schema

NameRequiredDescription
resultsYes
paginationNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety and scope profile is covered structurally. The description's only added behavioral signal is 'public' profiles, and it says nothing about pagination limits beyond the schema, rate limits, or result shape. Adequate but thin given the annotations carry most of the load.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no waste, which is ideal for a tool whose parameters are fully self-documenting. It is arguably under-specified rather than padded, but nothing in it is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the schema fully documents all 8 optional parameters. What is missing is routing context relative to wejob_get_company and wejob_search_jobs, which the agent needs to select correctly among seven siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter (page, limit, sort enum, query, sizes, location, industries, technologies) is documented inline with formats and examples. The description adds no parameter meaning whatsoever, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search) and resource (public WeJob company profiles), so the agent knows this is a discovery/list operation rather than a single-entity lookup. It does not explicitly differentiate itself from the sibling wejob_get_company or from the generic 'search'/'fetch' tools, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, no exclusions, and never mentions the alternatives among its siblings (wejob_get_company for a single profile, wejob_search_jobs for job discovery). The word 'public' hints at a scope boundary but no condition for choosing this tool is stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wejob_search_formationsSearch WeJob formationsC
Read-only
Inspect

Search public active WeJob formations.

NameRequiredDescriptionDefault
pageNoOne-based result page number.
sortNoOptional public result sort order.
limitNoMaximum number of results.
queryNoFree-text search over titles, descriptions and programs, e.g. cybersécurité.
skillsNoComma-separated hard skills, e.g. Java, SQL. Only matches skills listed on the offer: prefer query for a broad search.
companyNoCompany name filter, e.g. WeJob Sàrl.
locationNoCity or canton, e.g. Genève, Vaud, Lausanne, Zurich. Comma-separate several places.
tarif_maxNoMaximum price as a number, e.g. 3000.
tarif_minNoMinimum price as a number, e.g. 500.
categoriesNoComma-separated category names, e.g. Développement & IT.
duration_maxNoMaximum duration in days, e.g. 30.
duration_minNoMinimum duration in days, e.g. 5.
technologiesNoComma-separated technologies, e.g. React, AWS.
formation_modeNoComma-separated training mode: presentiel, distanciel, hybride (on-site, online, hybrid are accepted).
certification_typeNoComma-separated certification: certificat, diplome, attestation, bootcamp, aucun (certificate, diploma, none are accepted).

Output Schema

NameRequiredDescription
resultsYes
paginationNo

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description contributes one genuinely useful behavioral fact - that only *active* and *public* records are matched - but says nothing about pagination behavior, result caps, or rate limits beyond what the schema shows.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single front-loaded sentence with zero padding, which is structurally clean. But at five words it is under-specified rather than concise - the brevity removes information an agent needs rather than removing waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema and annotations exist, so return format and safety need not be described. But for a 15-parameter search tool sitting among seven siblings including two other search tools, the description omits the sibling routing and the active/public filtering nuances that would let an agent choose and call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% across all 15 parameters, and several field descriptions already carry examples and cross-field advice (e.g. skills vs. query). The description adds no parameter-level meaning on top of that, which is the expected baseline-3 outcome when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a concrete verb and resource ('Search ... WeJob formations') plus a scope qualifier ('public active'), so the agent knows roughly what it returns. However, it draws no distinction from its near-identical siblings wejob_search_jobs and wejob_search_companies, and 'formations' (training programs) is not clarified for a non-French reader.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus wejob_get_formation or the other search_* siblings, no mention of prerequisites, and no guidance on paging through large result sets despite a page/limit schema. Usage is only implied by the word 'Search'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wejob_search_jobsSearch WeJob jobsB
Read-only
Inspect

Search public active WeJob job offers.

NameRequiredDescriptionDefault
pageNoOne-based result page number.
sortNoOptional public result sort order.
limitNoMaximum number of results.
queryNoFree-text search over titles, descriptions, skills, companies and places. Words are OR-ed: one or two keywords work best, e.g. Java or data engineer.
skillsNoComma-separated hard skills, e.g. Java, SQL. Only matches skills listed on the offer: prefer query for a broad search.
companyNoCompany name filter, e.g. WeJob Sàrl.
locationNoCity or canton, e.g. Genève, Vaud, Lausanne, Zurich. Comma-separate several places.
languagesNoComma-separated language filter, for example Anglais, English, en.
work_modeNoComma-separated work mode: on_site, hybrid, remote (sur site, hybride, télétravail are accepted).
categoriesNoComma-separated category names, e.g. Développement & IT.
salary_maxNoMaximum salary as a number, in the offer currency (CHF), e.g. 140000.
salary_minNoMinimum salary as a number, in the offer currency (CHF), e.g. 100000.
technologiesNoComma-separated technologies, e.g. React, AWS.
employment_typeNoComma-separated contract or workload: full_time, part_time, CDI, CDD, contract, internship, apprenticeship, freelance. French terms are accepted (temps plein, temps partiel, stage, alternance).
experience_levelNoComma-separated level: junior, intermediate, senior, expert (entry, mid, confirmé, lead are accepted).

Output Schema

NameRequiredDescription
resultsYes
paginationNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the useful scoping fact that only public, active offers are returned, but says nothing about pagination limits, result caps, or behavior when filters conflict — adequate given the lower bar annotations set.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with zero filler, front-loading the core action and scope. It is efficient, though arguably terse to the point of omitting useful guidance for a 15-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and annotations cover the safety profile. However, for a 15-parameter search tool the description offers no hint about how filters compose or which are preferred (e.g. query over skills), leaving that entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each of the 15 fields carrying detailed descriptions (query OR-semantics, comma-separated conventions, CHF salary, accepted French terms). The description adds no parameter guidance beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Search') and resource ('public active WeJob job offers'), clearly distinguishing it from the sibling searchers wejob_search_companies and wejob_search_formations by resource domain. It stops short of naming those siblings explicitly, so it earns a 4 rather than a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus wejob_get_job for a single offer, or versus the other search_* tools. The only contextual hint is the word 'public', leaving the agent to infer routing from the name alone.

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. 8 tool updates
    • Changedfetch5 fields changed
      • addedOutput schema / properties / active_formations
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / active_jobs
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / formations / items / properties / location
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs / items / properties / location
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / salary / properties / currency
        Added value: +{
        +  "type": "string"
        +}
    • Changedsearch2 fields changed
      • changedInput schema / properties / sort / enum
        Previous value: -[
        -  "newest",
        -  "oldest",
        -  "deadline_soon",
        -  "deadline_later",
        -  "price_asc",
        -  "price_desc",
        -  "smallest",
        -  "largest",
        -  "founded_newest",
        -  "founded_oldest",
        -  "most_jobs"
        -]New value: +[
        +  "newest",
        +  "oldest",
        +  "deadline_soon",
        +  "deadline_later",
        +  "level_asc",
        +  "price_asc",
        +  "price_desc",
        +  "duration_asc",
        +  "smallest",
        +  "largest",
        +  "founded_newest",
        +  "founded_oldest",
        +  "most_jobs"
        +]
      • addedOutput schema / properties / results / items / properties / location
        Added value: +{
        +  "type": "string"
        +}
    • Changedwejob_get_company5 fields changed
      • addedOutput schema / properties / active_formations
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / active_jobs
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / formations / items / properties / location
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs / items / properties / location
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / salary / properties / currency
        Added value: +{
        +  "type": "string"
        +}
    • Changedwejob_get_formation5 fields changed
      • addedOutput schema / properties / active_formations
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / active_jobs
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / formations / items / properties / location
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs / items / properties / location
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / salary / properties / currency
        Added value: +{
        +  "type": "string"
        +}
    • Changedwejob_get_job5 fields changed
      • addedOutput schema / properties / active_formations
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / active_jobs
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / formations / items / properties / location
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / jobs / items / properties / location
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / salary / properties / currency
        Added value: +{
        +  "type": "string"
        +}
    • Changedwejob_search_companies19 fields changed
      • removedInput schema / properties / categories
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / certification_type
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / duration_max
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / duration_min
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / employment_type
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / experience_level
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / formation_mode
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / industries / description
        Added value: +"Comma-separated business sectors, e.g. technologies, finance, sante, education, commerce, marketing, consulting, industrie, telecommunications."
      • changedInput schema / properties / location / description
        Previous value: -"Location filter."New value: +"City or canton, e.g. Genève, Vaud, Lausanne, Zurich. Comma-separate several places."
      • changedInput schema / properties / query / description
        Previous value: -"Search query."New value: +"Free-text search over company names and descriptions."
      • removedInput schema / properties / salary_max
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / salary_min
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / sizes / description
        Added value: +"Comma-separated company sizes (employees): 1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5000+."
      • changedInput schema / properties / sort / enum
        Previous value: -[
        -  "newest",
        -  "oldest",
        -  "deadline_soon",
        -  "deadline_later",
        -  "price_asc",
        -  "price_desc",
        -  "smallest",
        -  "largest",
        -  "founded_newest",
        -  "founded_oldest",
        -  "most_jobs"
        -]New value: +[
        +  "newest",
        +  "oldest",
        +  "most_jobs",
        +  "largest",
        +  "smallest",
        +  "founded_newest",
        +  "founded_oldest"
        +]
      • removedInput schema / properties / tarif_max
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / tarif_min
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / technologies / description
        Added value: +"Comma-separated technologies, e.g. React, AWS."
      • removedInput schema / properties / work_mode
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / results / items / properties / location
        Added value: +{
        +  "type": "string"
        +}
    • Changedwejob_search_formations21 fields changed
      • addedInput schema / properties / categories / description
        Added value: +"Comma-separated category names, e.g. Développement & IT."
      • addedInput schema / properties / certification_type / description
        Added value: +"Comma-separated certification: certificat, diplome, attestation, bootcamp, aucun (certificate, diploma, none are accepted)."
      • changedInput schema / properties / company / description
        Previous value: -"Company filter."New value: +"Company name filter, e.g. WeJob Sàrl."
      • addedInput schema / properties / duration_max / description
        Added value: +"Maximum duration in days, e.g. 30."
      • addedInput schema / properties / duration_min / description
        Added value: +"Minimum duration in days, e.g. 5."
      • removedInput schema / properties / employment_type
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / experience_level
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / formation_mode / description
        Added value: +"Comma-separated training mode: presentiel, distanciel, hybride (on-site, online, hybrid are accepted)."
      • removedInput schema / properties / industries
        Removed value: -{
        -  "type": "string"
        -}
      • changedInput schema / properties / location / description
        Previous value: -"Location filter."New value: +"City or canton, e.g. Genève, Vaud, Lausanne, Zurich. Comma-separate several places."
      • changedInput schema / properties / query / description
        Previous value: -"Search query."New value: +"Free-text search over titles, descriptions and programs, e.g. cybersécurité."
      • removedInput schema / properties / salary_max
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / salary_min
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / sizes
        Removed value: -{
        -  "type": "string"
        -}
      • changedInput schema / properties / skills / description
        Previous value: -"Comma-separated skills filter."New value: +"Comma-separated hard skills, e.g. Java, SQL. Only matches skills listed on the offer: prefer query for a broad search."
      • changedInput schema / properties / sort / enum
        Previous value: -[
        -  "newest",
        -  "oldest",
        -  "deadline_soon",
        -  "deadline_later",
        -  "price_asc",
        -  "price_desc",
        -  "smallest",
        -  "largest",
        -  "founded_newest",
        -  "founded_oldest",
        -  "most_jobs"
        -]New value: +[
        +  "newest",
        +  "oldest",
        +  "deadline_soon",
        +  "deadline_later",
        +  "price_asc",
        +  "price_desc",
        +  "duration_asc"
        +]
      • addedInput schema / properties / tarif_max / description
        Added value: +"Maximum price as a number, e.g. 3000."
      • addedInput schema / properties / tarif_min / description
        Added value: +"Minimum price as a number, e.g. 500."
      • addedInput schema / properties / technologies / description
        Added value: +"Comma-separated technologies, e.g. React, AWS."
      • removedInput schema / properties / work_mode
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / results / items / properties / location
        Added value: +{
        +  "type": "string"
        +}
    • Changedwejob_search_jobs21 fields changed
      • addedInput schema / properties / categories / description
        Added value: +"Comma-separated category names, e.g. Développement & IT."
      • removedInput schema / properties / certification_type
        Removed value: -{
        -  "type": "string"
        -}
      • changedInput schema / properties / company / description
        Previous value: -"Company filter."New value: +"Company name filter, e.g. WeJob Sàrl."
      • removedInput schema / properties / duration_max
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / duration_min
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / employment_type / description
        Added value: +"Comma-separated contract or workload: full_time, part_time, CDI, CDD, contract, internship, apprenticeship, freelance. French terms are accepted (temps plein, temps partiel, stage, alternance)."
      • addedInput schema / properties / experience_level / description
        Added value: +"Comma-separated level: junior, intermediate, senior, expert (entry, mid, confirmé, lead are accepted)."
      • removedInput schema / properties / formation_mode
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / industries
        Removed value: -{
        -  "type": "string"
        -}
      • changedInput schema / properties / location / description
        Previous value: -"Location filter."New value: +"City or canton, e.g. Genève, Vaud, Lausanne, Zurich. Comma-separate several places."
      • changedInput schema / properties / query / description
        Previous value: -"Search query."New value: +"Free-text search over titles, descriptions, skills, companies and places. Words are OR-ed: one or two keywords work best, e.g. Java or data engineer."
      • addedInput schema / properties / salary_max / description
        Added value: +"Maximum salary as a number, in the offer currency (CHF), e.g. 140000."
      • addedInput schema / properties / salary_min / description
        Added value: +"Minimum salary as a number, in the offer currency (CHF), e.g. 100000."
      • removedInput schema / properties / sizes
        Removed value: -{
        -  "type": "string"
        -}
      • changedInput schema / properties / skills / description
        Previous value: -"Comma-separated skills filter."New value: +"Comma-separated hard skills, e.g. Java, SQL. Only matches skills listed on the offer: prefer query for a broad search."
      • changedInput schema / properties / sort / enum
        Previous value: -[
        -  "newest",
        -  "oldest",
        -  "deadline_soon",
        -  "deadline_later",
        -  "price_asc",
        -  "price_desc",
        -  "smallest",
        -  "largest",
        -  "founded_newest",
        -  "founded_oldest",
        -  "most_jobs"
        -]New value: +[
        +  "newest",
        +  "oldest",
        +  "deadline_soon",
        +  "deadline_later",
        +  "level_asc"
        +]
      • removedInput schema / properties / tarif_max
        Removed value: -{
        -  "type": "string"
        -}
      • removedInput schema / properties / tarif_min
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / technologies / description
        Added value: +"Comma-separated technologies, e.g. React, AWS."
      • addedInput schema / properties / work_mode / description
        Added value: +"Comma-separated work mode: on_site, hybrid, remote (sur site, hybride, télétravail are accepted)."
      • addedOutput schema / properties / results / items / properties / location
        Added value: +{
        +  "type": "string"
        +}
  2. 4 tool updates
    • Changedsearch2 fields changed
      • addedInput schema / properties / page
        Added value: +{
        +  "default": 1,
        +  "description": "One-based result page number.",
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / pagination
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "has_more": {
        +      "type": "boolean"
        +    },
        +    "limit": {
        +      "type": "integer"
        +    },
        +    "page": {
        +      "type": "integer"
        +    },
        +    "total": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "page",
        +    "limit",
        +    "has_more"
        +  ],
        +  "type": "object"
        +}
    • Changedwejob_search_companies2 fields changed
      • addedInput schema / properties / page
        Added value: +{
        +  "default": 1,
        +  "description": "One-based result page number.",
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / pagination
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "has_more": {
        +      "type": "boolean"
        +    },
        +    "limit": {
        +      "type": "integer"
        +    },
        +    "page": {
        +      "type": "integer"
        +    },
        +    "total": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "page",
        +    "limit",
        +    "has_more"
        +  ],
        +  "type": "object"
        +}
    • Changedwejob_search_formations2 fields changed
      • addedInput schema / properties / page
        Added value: +{
        +  "default": 1,
        +  "description": "One-based result page number.",
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / pagination
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "has_more": {
        +      "type": "boolean"
        +    },
        +    "limit": {
        +      "type": "integer"
        +    },
        +    "page": {
        +      "type": "integer"
        +    },
        +    "total": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "page",
        +    "limit",
        +    "has_more"
        +  ],
        +  "type": "object"
        +}
    • Changedwejob_search_jobs2 fields changed
      • addedInput schema / properties / page
        Added value: +{
        +  "default": 1,
        +  "description": "One-based result page number.",
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / pagination
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "has_more": {
        +      "type": "boolean"
        +    },
        +    "limit": {
        +      "type": "integer"
        +    },
        +    "page": {
        +      "type": "integer"
        +    },
        +    "total": {
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "page",
        +    "limit",
        +    "has_more"
        +  ],
        +  "type": "object"
        +}
  3. 3 tool updates
    • Changedwejob_search_companies15 fields changed
      • addedInput schema / properties / categories
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / certification_type
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / duration_max
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / duration_min
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / employment_type
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / experience_level
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / formation_mode
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / industries
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / salary_max
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / salary_min
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sizes
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / tarif_max
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / tarif_min
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / technologies
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / work_mode
        Added value: +{
        +  "type": "string"
        +}
    • Changedwejob_search_formations15 fields changed
      • addedInput schema / properties / categories
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / certification_type
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / duration_max
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / duration_min
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / employment_type
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / experience_level
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / formation_mode
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / industries
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / salary_max
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / salary_min
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sizes
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / tarif_max
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / tarif_min
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / technologies
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / work_mode
        Added value: +{
        +  "type": "string"
        +}
    • Changedwejob_search_jobs15 fields changed
      • addedInput schema / properties / categories
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / certification_type
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / duration_max
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / duration_min
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / employment_type
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / experience_level
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / formation_mode
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / industries
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / salary_max
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / salary_min
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / sizes
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / tarif_max
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / tarif_min
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / technologies
        Added value: +{
        +  "type": "string"
        +}
      • addedInput schema / properties / work_mode
        Added value: +{
        +  "type": "string"
        +}
  4. 4 tool updates
    • Changedsearch1 field changed
      • addedInput schema / properties / sort
        Added value: +{
        +  "description": "Optional public result sort order.",
        +  "enum": [
        +    "newest",
        +    "oldest",
        +    "deadline_soon",
        +    "deadline_later",
        +    "price_asc",
        +    "price_desc",
        +    "smallest",
        +    "largest",
        +    "founded_newest",
        +    "founded_oldest",
        +    "most_jobs"
        +  ],
        +  "type": "string"
        +}
    • Changedwejob_search_companies1 field changed
      • addedInput schema / properties / sort
        Added value: +{
        +  "description": "Optional public result sort order.",
        +  "enum": [
        +    "newest",
        +    "oldest",
        +    "deadline_soon",
        +    "deadline_later",
        +    "price_asc",
        +    "price_desc",
        +    "smallest",
        +    "largest",
        +    "founded_newest",
        +    "founded_oldest",
        +    "most_jobs"
        +  ],
        +  "type": "string"
        +}
    • Changedwejob_search_formations1 field changed
      • addedInput schema / properties / sort
        Added value: +{
        +  "description": "Optional public result sort order.",
        +  "enum": [
        +    "newest",
        +    "oldest",
        +    "deadline_soon",
        +    "deadline_later",
        +    "price_asc",
        +    "price_desc",
        +    "smallest",
        +    "largest",
        +    "founded_newest",
        +    "founded_oldest",
        +    "most_jobs"
        +  ],
        +  "type": "string"
        +}
    • Changedwejob_search_jobs1 field changed
      • addedInput schema / properties / sort
        Added value: +{
        +  "description": "Optional public result sort order.",
        +  "enum": [
        +    "newest",
        +    "oldest",
        +    "deadline_soon",
        +    "deadline_later",
        +    "price_asc",
        +    "price_desc",
        +    "smallest",
        +    "largest",
        +    "founded_newest",
        +    "founded_oldest",
        +    "most_jobs"
        +  ],
        +  "type": "string"
        +}
  5. 8 tool updates
    • First observedfetch
    • First observedsearch
    • First observedwejob_get_company
    • First observedwejob_get_formation
    • First observedwejob_get_job
    • First observedwejob_search_companies
    • First observedwejob_search_formations
    • First observedwejob_search_jobs

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Read-only MCP server for the public EasyHire job board. Enables searching job openings, retrieving full postings, filtering by criteria, and listing countries with open roles.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.