UX Jobs
Server Details
Search 4,000+ live UX & product-design jobs from jobs.uxjobs.io. Read-only, no auth.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
TDQS
Scored across 7 tools
Two search tools (search, search_jobs) and two single-listing tools (fetch, get_job) overlap heavily, so an agent cannot easily tell which search/fetch pair to use. The descriptions tie fetch to search and get_job to search_jobs, but the functional distinction is thin and invites misselection.
Mix of single verbs (search, fetch), verb_noun (get_job, search_jobs), and noun phrases (companies_hiring, hiring_snapshot, salary_snapshot). Readable but no consistent pattern, and synonym pairs fetch/get_job and search/search_jobs compound the inconsistency.
Seven tools is well-scoped for a job-board server, covering search, listing retrieval, company rankings and market/salary snapshots without feeling bloated or thin.
Covers the core job-search lifecycle: keyword/filtered search, detail retrieval, company hiring rankings, and market and salary statistics. Minor gap: no dedicated company profile or saved-search/application flow, but these are outside the likely core scope.
Available Tools
7 toolscompanies_hiringCompanies hiring the most designersARead-onlyIdempotentInspect
Rank companies by number of open UX/product-design roles on jobs.uxjobs.io, optionally within a filter (country, remote, seniority, keywords, recency). Useful for "who is hiring the most designers in Berlin" or "which companies opened design roles this week".
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | Keywords matched against title, company, location and description, e.g. "senior product designer fintech". All words must match. | |
| remote | No | true = only fully-remote roles; false = exclude remote roles. | |
| company | No | Company name (substring match). | |
| country | No | ISO-3166 alpha-2 country code, e.g. "US", "GB", "DE". | |
| location | No | City/state/country text to match in the posted location, e.g. "London", "New York", "Germany". Use "remote" for remote roles. | |
| seniority | No | Seniority derived from the title. | |
| workplace | No | Workplace arrangement when the employer stated one. | |
| role_family | No | Design discipline derived from the title. | |
| min_open_roles | No | Only companies with at least this many matching open roles. | |
| min_salary_usd | No | Only roles whose posted annual USD salary range reaches at least this figure. Only ~8% of roles post salary. | |
| employment_type | No | e.g. "Full-time", "Contract", "Part-time", "Intern". | |
| posted_within_days | No | Only roles posted in the last N days (1–60). |
Output Schema
| Name | Required | Description |
|---|---|---|
| companies | Yes | |
| attribution | Yes | |
| generated_at | Yes | |
| matched_roles | Yes | |
| total_companies | 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 covered structurally. The description adds the data source (jobs.uxjobs.io) and that filters are optional, but says nothing about result limits, ordering direction, or empty-filter behavior beyond what the schema implies.
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, front-loaded with the core action and ranking metric, followed immediately by the optional filter scope and two illustrative queries. No filler or repetition of the title.
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 13 optional parameters, an output schema present, and defaults documented in-schema, the description covers what the agent needs to decide to call it. It is near-complete; only the omission of any mention of ordering or result shape (which the output schema presumably covers) keeps it from being fully comprehensive.
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 92%, so nearly every parameter is self-documenting in the schema. The description only summarizes the filter families (country, remote, seniority, keywords, recency) at a high level, adding no syntax or format detail beyond the schema; the baseline of 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 (rank), resource (companies), and ranking metric (number of open UX/product-design roles) on a named source (jobs.uxjobs.io). An agent can distinguish this aggregation tool from sibling list/search tools like search_jobs or get_job without opening any 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?
Provides two concrete usage examples ('who is hiring the most designers in Berlin', 'which companies opened design roles this week') that make the intended question type obvious. It does not, however, name an alternative tool or state when-not to use it (e.g. versus hiring_snapshot or search_jobs), so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchFetch a job listing (connector fetch)ARead-onlyIdempotentInspect
Retrieve one job listing from jobs.uxjobs.io by the id returned from search: location, salary, apply link and a description excerpt; the listing URL has the complete text.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Listing id from search. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| text | Yes | |
| title | Yes | |
| metadata | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior, so the safety profile is covered. The description still adds genuine value by disclosing that the returned description is only an excerpt and that the listing URL holds the complete text, which affects how an agent should use the result.
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 tightly packed sentence front-loads the core action, then adds return contents and the full-text pointer with no wasted words. Nothing is redundant or padding.
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 single-parameter read with an output schema, the description supplies everything needed: the source, the required input provenance, the returned fields, and the truncation caveat. An agent can invoke it correctly without further context.
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% with a single well-documented 'id' parameter, so the schema carries the semantics. The description's "by the id returned from search" merely restates the schema's "Listing id from search" and adds no new format or constraint detail.
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 gives a specific verb and resource (retrieve one job listing) plus concrete return contents (location, salary, apply link, description excerpt) and names the id's origin. It does not, however, differentiate itself from the sibling get_job, which an agent would have to disambiguate on its own.
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?
"by the id returned from search" states the precondition and points to the correct upstream tool, which is clear usage context. It stops short of saying when not to use it or how it relates to alternatives like get_job or search_jobs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobGet a job listingARead-onlyIdempotentInspect
Return one job listing in detail — location, workplace, posted salary, employer apply link, and a description excerpt when the source provides one — by the id returned from search_jobs (or the jobs.uxjobs.io page slug). The listing URL has the complete text.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Job id from search_jobs, or the slug from a jobs.uxjobs.io/jobs/{slug}/ URL. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| logo | Yes | |
| title | Yes | |
| region | Yes | |
| remote | Yes | |
| salary | Yes | |
| source | Yes | |
| company | Yes | |
| country | Yes | |
| location | Yes | |
| apply_url | Yes | |
| posted_at | Yes | |
| seniority | Yes | |
| workplace | Yes | |
| attribution | Yes | |
| role_family | Yes | |
| employment_type | Yes | |
| open_confidence | Yes | |
| description_note | Yes | |
| description_excerpt | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description adds genuinely useful behavioral context beyond them: the description text is only an excerpt 'when the source provides one' and 'the listing URL has the complete text', warning the agent that the returned body may be truncated.
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 dense but well-ordered sentence front-loads the return shape, then closes with a single short caveat about full text. No filler sentences; 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, the description needn't document return values, and it still flags the one thing an agent must know (the excerpt may be partial). Input, provenance, and output caveat are all covered for a single-parameter read tool.
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%, and the description's id provenance (search_jobs id or jobs.uxjobs.io slug) largely restates what the schema already documents. Baseline 3 is appropriate since the schema does the heavy lifting.
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 (Return) and resource (one job listing in detail), then enumerates the actual payload (location, workplace, posted salary, apply link, description excerpt). It is immediately distinguishable from sibling search_jobs because it fetches a single listing by id rather than 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?
Explicitly tells the agent where the id comes from — 'the id returned from search_jobs (or the jobs.uxjobs.io page slug)' — which sets up the search-then-fetch workflow. It stops short of naming an exclusion or stating when not to use this tool (e.g. when only a summary is needed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hiring_snapshotDesign hiring market snapshotARead-onlyIdempotentInspect
A statistical snapshot of the design job market on jobs.uxjobs.io: total open roles, roles posted in the last 7 days, remote share, and breakdowns by seniority, discipline, top countries, top cities and top hiring companies. Accepts the same optional filters as search_jobs so you can snapshot a country, a discipline or a keyword.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Keywords matched against title, company, location and description, e.g. "senior product designer fintech". All words must match. | |
| remote | No | true = only fully-remote roles; false = exclude remote roles. | |
| company | No | Company name (substring match). | |
| country | No | ISO-3166 alpha-2 country code, e.g. "US", "GB", "DE". | |
| location | No | City/state/country text to match in the posted location, e.g. "London", "New York", "Germany". Use "remote" for remote roles. | |
| seniority | No | Seniority derived from the title. | |
| workplace | No | Workplace arrangement when the employer stated one. | |
| role_family | No | Design discipline derived from the title. | |
| min_salary_usd | No | Only roles whose posted annual USD salary range reaches at least this figure. Only ~8% of roles post salary. | |
| employment_type | No | e.g. "Full-time", "Contract", "Part-time", "Intern". | |
| posted_within_days | No | Only roles posted in the last N days (1–60). |
Output Schema
| Name | Required | Description |
|---|---|---|
| countries | Yes | |
| open_roles | Yes | |
| top_cities | Yes | |
| attribution | Yes | |
| by_seniority | Yes | |
| generated_at | Yes | |
| top_companies | Yes | |
| top_countries | Yes | |
| by_role_family | Yes | |
| companies_hiring | Yes | |
| posted_last_7_days | Yes | |
| roles_with_posted_salary | Yes | |
| remote_share_of_stated_workplace | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds that the tool is an aggregate over the same filter set as search_jobs, but gives no detail on caching, freshness of counts, or whether results are computed live versus pre-aggregated.
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, front-loaded with the output scope before the filter note. The enumeration is dense but earns its place by telling the agent what fields come back; only minor trimming would be possible.
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, the description need not explain return values, and the annotations cover the safety profile. Given 11 optional params and 100% schema coverage, the description plus structured fields are sufficient for correct invocation, though it never clarifies the relationship to salary_snapshot or companies_hiring.
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 every one of the 11 parameters is already documented in the schema, including the enum values and the ~8% salary-posting caveat. The description only says the filters match search_jobs, which adds no syntax or semantics beyond the schema; 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+resource (statistical snapshot of the design job market) and enumerates exactly what is aggregated: totals, 7-day postings, remote share, and breakdowns by seniority, discipline, country, city, and company. This clearly distinguishes it from the listing-oriented siblings search_jobs and get_job.
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 second sentence gives concrete usage context: it accepts the same optional filters as search_jobs so you can snapshot a country, discipline, or keyword. It does not, however, explicitly state when to prefer this over salary_snapshot or companies_hiring, nor any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
salary_snapshotPosted salary ranges by seniorityARead-onlyIdempotentInspect
Median and quartile posted salary (annual USD, from roles that state a range) by seniority level, optionally filtered by country, remote, discipline or keywords. Only roles with a posted USD range count — typically 5–10% of listings — so treat small samples with caution; the sample size is returned per level.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Keywords matched against title, company, location and description, e.g. "senior product designer fintech". All words must match. | |
| remote | No | true = only fully-remote roles; false = exclude remote roles. | |
| company | No | Company name (substring match). | |
| country | No | ISO-3166 alpha-2 country code, e.g. "US", "GB", "DE". | |
| location | No | City/state/country text to match in the posted location, e.g. "London", "New York", "Germany". Use "remote" for remote roles. | |
| seniority | No | Seniority derived from the title. | |
| workplace | No | Workplace arrangement when the employer stated one. | |
| role_family | No | Design discipline derived from the title. | |
| min_salary_usd | No | Only roles whose posted annual USD salary range reaches at least this figure. Only ~8% of roles post salary. | |
| employment_type | No | e.g. "Full-time", "Contract", "Part-time", "Intern". | |
| posted_within_days | No | Only roles posted in the last N days (1–60). |
Output Schema
| Name | Required | Description |
|---|---|---|
| currency | Yes | |
| attribution | Yes | |
| by_seniority | Yes | |
| generated_at | Yes | |
| roles_matched | Yes | |
| roles_with_salary | Yes | |
| overall_median_mid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds genuinely useful domain behavior beyond them: the 5-10% coverage bias, the caution on small samples, and that sample size is returned per level. It does not describe output shape or pagination, but the output schema exists to cover that.
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 waste, and the defining scope plus the sample-bias caveat are both front-loaded before the filtering detail. Every clause carries information.
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 an 11-parameter stats tool, the description supplies the critical interpretive context (only salaried listings count, samples may be tiny, sample size is returned). Annotations cover safety and an output schema covers return values, so nothing essential is missing.
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 every one of the 11 parameters, including the enums and the min_salary_usd caveat. The description names a subset of filters (country, remote, discipline, keywords) but adds no syntax or meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and output (median and quartile posted salary by seniority level) with a clear scope, so an agent can tell it produces salary statistics rather than raw listings. It falls short of a 5 because it never distinguishes itself from the closest sibling, hiring_snapshot, which an agent might reasonably confuse it with.
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?
Usage is implied: use it to obtain salary distributions, with the caveat that only 5-10% of listings qualify. There is no explicit 'use this instead of search_jobs / hiring_snapshot when...' guidance, and no exclusions, so the agent must infer the correct tool boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch job listings (connector search)ARead-onlyIdempotentInspect
Keyword search over live UX & product-design job listings on jobs.uxjobs.io. Returns up to 20 results with id, title and URL; pass an id to fetch for the full listing. Natural-language queries work: "remote senior product designer fintech", "UX researcher London".
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query. |
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 covered. The description still adds genuinely new behavior: a hard cap of 20 results and that the response is a lightweight projection (id, title, URL) rather than full listings. It says nothing about pagination or ordering, which is a modest remaining gap.
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 plus examples; scope, return shape, and the next-step handoff are all front-loaded with no 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 annotations covering safety, the description covers only what the agent still needs: result cap, returned fields, and the fetch handoff. The one real omission is disambiguation from the search_jobs sibling, which matters given the overlapping 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 coverage is 100% but the schema only says "Search query." The description compensates by showing that natural-language free-text queries are supported, with two concrete phrasings ("remote senior product designer fintech", "UX researcher London"). Those examples teach query style rather than merely restating the parameter.
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 (search), resource (UX & product-design job listings), and the source domain jobs.uxjobs.io, which is concrete and identifiable. It does not, however, differentiate itself from the sibling search_jobs, leaving the agent to guess which search tool is intended when both are present.
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?
"pass an id to fetch for the full listing" explicitly routes the agent onward to the fetch sibling once an id is obtained. What is missing is a condition distinguishing this tool from search_jobs, so the when-to-use guidance is clear for the fetch handoff but silent on the more dangerous ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_jobsSearch UX & product-design jobsARead-onlyIdempotentInspect
Search live UX, product-design, UX-research, content-design and design-leadership roles on jobs.uxjobs.io. Filter by keywords, location/country, remote, seniority, discipline, company, posted salary and recency. Returns a page of compact results (newest first, keyword relevance when a query is given) plus the total match count.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results per page (1–50). | |
| query | No | Keywords matched against title, company, location and description, e.g. "senior product designer fintech". All words must match. | |
| offset | No | Skip this many results (for paging). | |
| remote | No | true = only fully-remote roles; false = exclude remote roles. | |
| company | No | Company name (substring match). | |
| country | No | ISO-3166 alpha-2 country code, e.g. "US", "GB", "DE". | |
| location | No | City/state/country text to match in the posted location, e.g. "London", "New York", "Germany". Use "remote" for remote roles. | |
| seniority | No | Seniority derived from the title. | |
| workplace | No | Workplace arrangement when the employer stated one. | |
| role_family | No | Design discipline derived from the title. | |
| min_salary_usd | No | Only roles whose posted annual USD salary range reaches at least this figure. Only ~8% of roles post salary. | |
| employment_type | No | e.g. "Full-time", "Contract", "Part-time", "Intern". | |
| posted_within_days | No | Only roles posted in the last N days (1–60). |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| offset | Yes | |
| results | Yes | |
| returned | Yes | |
| attribution | Yes | |
| generated_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive, so the safety profile needs no description support. The description adds real behavioral context beyond that: results come back as a page of compact records, ordered newest-first or by keyword relevance when a query is present, with a total match count. It stops short of describing rate limits or how paging interacts with total count, so it is not a 5.
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 sentences: purpose first, then supported filters, then return shape and ordering. Every clause carries information and nothing is repeated, which is a well front-loaded structure for a 13-parameter tool.
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 13 optional parameters, 100% schema coverage, and an output schema present, the description need not enumerate parameters or return fields — and it correctly doesn't. It covers corpus, filter surface, and ordering/total-count semantics. The only material omission is disambiguation from the other search-adjacent siblings (search, companies_hiring, get_job).
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 every parameter — including enums, defaults, and caveats like the ~8% salary-posting rate — is already fully documented in the schema. The description only restates the filter categories (salary, recency) at a higher level and adds no syntax or format detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Search live UX, product-design... roles on jobs.uxjobs.io") with the domain named explicitly, so an agent knows exactly what corpus this queries. It does not distinguish itself from siblings like get_job or salary_snapshot, so it falls 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the filter list (keyword, location, remote, seniority, discipline, company, salary, recency) — an agent can infer "use this to find matching roles." There is no explicit when-to-use guidance, no statement of when a sibling such as get_job should be preferred for a single posting, and no exclusions.
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.
2 tool updates
- Changed
get_job1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "apply_url": { + "type": "string" + }, + "attribution": { + "type": "string" + }, + "company": { + "type": "string" + }, + "country": { + "type": [ + "string", + "null" + ] + }, + "description_excerpt": { + "type": [ + "string", + "null" + ] + }, + "description_note": { + "type": "string" + }, + "employment_type": { + "type": [ + "string", + "null" + ] + }, + "id": { + "type": "string" + }, + "location": { + "type": "string" + }, + "logo": { + "type": [ + "string", + "null" + ] + }, + "open_confidence": { + "anyOf": [ + { + "enum": [ + "verified", + "unverified" + ], + "type": "string" + }, + { + "type": "null" + } + ] + }, + "posted_at": { + "type": [ + "string", + "null" + ] + }, + "region": { + "type": [ + "string", + "null" + ] + }, + "remote": { + "type": "boolean" + }, + "role_family": { + "type": "string" + }, + "salary": { + "type": [ + "string", + "null" + ] + }, + "seniority": { + "enum": [ + "Junior / Entry", + "Mid-level", + "Senior", + "Lead / Staff", + "Principal", + "Director+" + ], + "type": "string" + }, + "source": { + "type": [ + "string", + "null" + ] + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + }, + "workplace": { + "anyOf": [ + { + "enum": [ + "remote", + "hybrid", + "onsite" + ], + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "title", + "company", + "location", + "country", + "remote", + "workplace", + "seniority", + "salary", + "employment_type", + "posted_at", + "url", + "role_family", + "region", + "source", + "open_confidence", + "logo", + "apply_url", + "description_excerpt", + "description_note", + "attribution" + ], + "type": "object" +}
- Changed
hiring_snapshot1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "additionalProperties": false, + "properties": { + "attribution": { + "type": "string" + }, + "by_role_family": { + "items": { + "additionalProperties": false, + "properties": { + "count": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "count" + ], + "type": "object" + }, + "type": "array" + }, + "by_seniority": { + "items": { + "additionalProperties": false, + "properties": { + "count": { + "type": "number" + }, + "seniority": { + "enum": [ + "Junior / Entry", + "Mid-level", + "Senior", + "Lead / Staff", + "Principal", + "Director+" + ], + "type": "string" + } + }, + "required": [ + "seniority", + "count" + ], + "type": "object" + }, + "type": "array" + }, + "companies_hiring": { + "type": "number" + }, + "countries": { + "type": "number" + }, + "generated_at": { + "type": "string" + }, + "open_roles": { + "type": "number" + }, + "posted_last_7_days": { + "type": "number" + }, + "remote_share_of_stated_workplace": { + "type": [ + "number", + "null" + ] + }, + "roles_with_posted_salary": { + "type": "number" + }, + "top_cities": { + "items": { + "additionalProperties": false, + "properties": { + "count": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "count" + ], + "type": "object" + }, + "type": "array" + }, + "top_companies": { + "items": { + "additionalProperties": false, + "properties": { + "count": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "count" + ], + "type": "object" + }, + "type": "array" + }, + "top_countries": { + "items": { + "additionalProperties": false, + "properties": { + "count": { + "type": "number" + }, + "name": { + "type": "string" + } + }, + "required": [ + "name", + "count" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "generated_at", + "open_roles", + "posted_last_7_days", + "remote_share_of_stated_workplace", + "roles_with_posted_salary", + "companies_hiring", + "countries", + "by_seniority", + "by_role_family", + "top_countries", + "top_cities", + "top_companies", + "attribution" + ], + "type": "object" +}
7 tool updates
- First observed
companies_hiring - First observed
fetch - First observed
get_job - First observed
hiring_snapshot - First observed
salary_snapshot - First observed
search - First observed
search_jobs
Related MCP Connectors
Semantic search over 3.5M+ live US job postings pulled straight from company ATSes. Read-only.
Live job postings from 30+ ATS feeds and job boards, one schema. Live results need a Bearer key.
Search 690k open jobs from official ATS feeds, and what changed since your last check.
Search a live index of millions of open jobs from employer career sites and 100+ ATS platforms.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables real-time job search across thousands of companies' open roles from Greenhouse, Lever, Ashby, and SmartRecruiters, with full-text filtering and company-specific queries, no API key required.2MIT
- AlicenseNot gradedqualityDmaintenanceVerified job search: every listing is opened and confirmed live and accepting applicants within the last 72 hours, and re-verified on a rolling clock, so agents can recommend jobs without ghost-job or dead-link risk. Read-only, no auth.MIT
- AlicenseAqualityBmaintenanceSearch and read public Ashby job boards for named companies, with filtering, full job details, and side-by-side compensation comparison. No API key required.6552 npmMIT
- AlicenseAqualityBmaintenanceEnables querying open job postings directly from company applicant-tracking systems (Greenhouse, Ashby, Lever), finding a company's job board, listing and comparing roles, and accessing salary data, all without scraping or API keys.3MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.