JobYap Job Search
Server Details
Search job postings aggregated from companies' careers sites, plus each job's discussion thread.
- Status
- Healthy
- Uptime
- 100.0% over 49 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- jobyap/agent-skills
- GitHub Stars
- 0
TDQS
Scored across 9 tools
Most tools are clearly distinct, and the search/search_jobs and match_jobs/search_jobs pairs are explicitly disambiguated. However, fetch and get_job both return a full job posting document (with fetch keyed to a search result id and get_job to a posting), so their boundary is genuinely blurred and prone to misselection.
Nearly all tools use a predictable verb_noun pattern (get_job, get_job_comments, get_job_stats, list_companies, match_jobs, search_jobs, search_locations). The lone bare verb 'fetch' and the unqualified 'search' deviate slightly, but the set is still easily readable.
Nine tools is well within the ideal 3-15 range and each tool maps to a distinct capability (search, match, resolve locations, list companies, fetch details, comments, stats). No tool feels padded or redundant.
The surface covers the full job-search lifecycle: discovery (search/search_jobs/match_jobs), reference data (companies, locations), detail retrieval, community comments and aggregate stats. Minor gaps exist (e.g. no direct company-scoped feed or saved-job operations), but core workflows are fully supported.
Available Tools
9 toolsfetchFetch JobYap document (deep research)ARead-onlyInspect
Retrieve the full JobYap document for a search result id: the complete posting as markdown (description, salary, locations, apply link) plus top community comments, with a citable URL.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | A result id returned by search. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| text | Yes | |
| title | Yes | |
| metadata | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive. The description adds that the output is markdown including specific fields and top comments with a citable URL, providing useful behavioral expectations beyond the safety flags. It does not contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence that front-loads the action and resource, then enumerates the return contents. Every phrase adds value and no words are wasted, making it highly concise and well-structured.
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 simple fetch tool with one parameter, an output schema, and read-only annotations, the description covers the purpose, input provenance, and output composition sufficiently. It gives an agent everything needed to decide when to use it and what to expect, without requiring the output schema to explain return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'id' is fully documented in the schema as 'A result id returned by search.' The description reiterates this context but adds no new format, constraints, or examples. Since schema coverage is 100%, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Retrieve' and identifies the resource as 'the full JobYap document for a search result id,' listing the contents (markdown of posting plus comments, citable URL). This clearly distinguishes it from siblings like get_job or get_job_comments, which focus on narrower subsets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the context: given a search result id, you get the full document. However, it does not explicitly mention when to prefer this over get_job or get_job_comments, nor any exclusions, so it lacks direct comparison to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobGet job detailsARead-onlyInspect
Fetch one job posting in full: markdown description, salary ranges, locations with work mode, derived employment types, apply URL, posting dates and the canonical JobYap discussion URL. Works for expired jobs too (apply_url is null once inactive).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Numeric JobYap job id, a full jobyap.com job URL, or a job page slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is covered. The description adds valuable behavioral context beyond the annotations: it lists the return fields and reveals that expired jobs still return data with apply_url set to null. This goes beyond the structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The first sentence immediately states the tool's purpose and enumerates the returned fields, while the second sentence adds an important edge case. Every word 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?
Even without an output schema, the description provides a thorough account of the return values (markdown description, salary, locations, employment types, apply URL, dates, discussion URL). It also covers the expired-job scenario, making it complete for a single-fetch read tool with one parameter.
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?
The input schema's description of the 'id' parameter is comprehensive—it accepts a numeric ID, a full job URL, or a slug—achieving 100% schema description coverage. The tool description itself does not add new parameter-level information, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the specific verb 'Fetch' and the resource 'one job posting in full,' then enumerates the exact content fields (markdown description, salary ranges, locations, etc.). This clearly distinguishes it from sibling tools like get_job_comments or get_job_stats, which focus on comments or statistics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool—when you need the complete details of a single job posting—and highlights that it works for expired jobs, which is a useful contextual cue. However, it does not explicitly name alternative tools or state when not to use this tool, falling short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_commentsGet job discussionARead-onlyInspect
Fetch the community discussion thread for a job: chronological, threaded via parent_id, with like counts. Comments are user-generated content. Threads stay open after a job expires.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Numeric JobYap job id, a full jobyap.com job URL, or a job page slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, and the description adds valuable behavioral context: chronological ordering, parent_id threading, like counts, user-generated content, and that threads persist after job expiration. This goes well beyond the safety metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of three focused sentences. Each sentence contributes meaningfully—purpose, data characteristics, and lifecycle behavior—with no redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter schema and existing annotations, the description provides sufficient context about the response nature (chronological, threaded, like counts). It lacks details such as pagination or explicit return structure, but that is not essential given the tool's simplicity.
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?
The input schema already fully documents the single parameter 'id' with a clear explanation of accepted formats. The description does not add any additional parameter-level detail, so the baseline score 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?
The description clearly states the verb 'fetch' and the resource 'community discussion thread for a job', explicitly distinguishing it from sibling tools like get_job and get_job_stats. It also specifies key details (chronological, threaded, like counts) that make the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly conveys when to use this tool—when you need a job's comment thread—but does not explicitly mention alternatives or exclusionary conditions. This is clear context without being a full when/when-not guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_job_statsJobYap statsARead-onlyInspect
Aggregate stats: companies tracked, active job count, and the newest posting date.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, establishing the safety profile. The description adds the specific stats returned, which is helpful, but it does not disclose potential caveats like whether the stats are real-time, cached, or scoped to the current user/workspace. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core purpose ('Aggregate stats') followed by a concise list of the specific statistics. Every word earns its place, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, a clear read-only annotation, and no output schema, the description specifies exactly which three aggregate values are returned. This is sufficient for an agent to understand what the tool does and when to invoke it. The absence of an output schema is compensated by the explicit enumeration of stats.
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?
The tool has zero parameters, so there are no parameter semantics to clarify. The schema fully covers the absence of parameters, and the description adds no parameter-related information, but none is needed. The baseline for 0-param tools is 4.
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 clearly states this tool returns aggregate stats (companies tracked, active job count, newest posting date), which is a specific verb+resource combination. It distinguishes itself from sibling tools like get_job and list_companies by focusing on summary aggregates rather than individual records.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any exclusions, prerequisites, or context where a sibling tool (e.g., search_jobs, list_companies) would be more appropriate. The usage context is entirely implied by the tool name and title.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_companiesList companiesARead-onlyInspect
List every company JobYap tracks with its active job count and JobYap company-page URL. Use the exact names as search_jobs company filters.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral detail beyond annotations by stating the output scope (every tracked company) and the exact fields included, which is useful since there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only two sentences and wastes no words. The core purpose and output are stated first, followed by a directly actionable usage hint about search_jobs filters.
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 parameterless list tool with read-only annotations and no output schema, the description fully specifies what the agent gets: every company, active job count, and the company-page URL. Nothing essential for calling or interpreting the tool 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?
The tool has zero parameters, so the baseline is 4. The description adds no parameter information, but none is needed; the schema's empty properties object is fully self-explanatory.
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 states a specific verb ('List'), a precise resource ('every company JobYap tracks'), and the returned fields (active job count and company-page URL). It is clearly distinguishable from siblings like search_jobs by emphasizing enumeration of all companies rather than filtered search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: it lists all tracked companies and tells agents to use the returned exact names as search_jobs company filters. It does not explicitly state when not to use it or name alternatives, but the relationship to search_jobs gives practical routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_jobsMatch jobs to a candidateARead-onlyInspect
Find and rank the best live postings for one specific candidate, such as someone who shared a resume or described their experience, skills or visa needs. Slow: it reads each posting's full description, so a call can take 10 to 15 seconds. For browsing, listing or counting postings, use search_jobs, which answers in under a second. Filters active jobs by title terms (any of them; a term matches when the title holds all its words), excluded title terms, companies, locations and posting window, then takes the newest 300 of that pool (pool_total says how many matched) and reads each full description. It drops postings with no usable description, postings whose stated minimum years of experience exceed candidate_years by more than 1, and, with needs_sponsorship, postings that refuse sponsorship or require citizenship or a clearance; dropped counts each reason. The rest are ranked by how many skills appear in the description, then newest first. Each result carries skills_matched, years_bar, flags and up to 6 requirement sentences. The screening is heuristic: read finalists in full with get_job.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Results to return, default 15. | |
| skills | No | Specific skills and domain terms from the resume, as whole words or phrases. They rank results and never filter. | |
| titles | No | Title terms, any of which may match. A term matches when the title contains all its words as whole words, in any order: "software engineer" also matches "Engineer, Software". Required unless companies is given. | |
| companies | No | Exact company names from list_companies. With titles, a posting must match both. | |
| locations | No | country-XX (ISO alpha-2) for a country, or state and city identifiers from search_locations. Omit for worldwide. | |
| work_mode | No | Only postings explicitly marked remote or hybrid. | |
| posted_within | No | Posting window: 24h, 7d (default) or 30d. | 7d |
| exclude_titles | No | Title terms that remove a posting, matched like titles, e.g. "senior", "staff", "lead", "manager". | |
| candidate_years | No | Candidate years of professional experience; drops postings that require more than one year beyond it. | |
| include_anywhere | No | With locations, also keep fully remote "Anywhere" postings. Default true. | |
| exclude_companies | No | Company names to leave out, case-insensitive, e.g. the current employer. | |
| needs_sponsorship | No | Drop postings that refuse visa sponsorship or require citizenship or a security clearance. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safe-read profile; the description adds substantial behavior beyond that: the 10-15s latency, the newest-300 pool cap, the three drop heuristics (no usable description, years bar +1, sponsorship/citizenship/clearance), the skills-count ranking, and the explicit caveat that screening is heuristic. This is unusually rich disclosure.
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?
Front-loaded with purpose, then speed, then the alternative, then mechanics. Dense but nearly every sentence carries actionable information. It is long, though the length is justified by 12 parameters and a non-obvious pipeline.
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 no output schema and 12 parameters, the description still documents the return shape (skills_matched, years_bar, flags, up to 6 requirement sentences), the pool_total and dropped counters, and the full filtering/ranking pipeline. An agent has everything needed to call it correctly and interpret results.
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% so baseline is 3, but the description adds real semantics: skills 'rank results and never filter', titles matching semantics, the sponsorship and years drop rules, and the limit-300 interaction. It clarifies how filters compose (titles+companies must both match) beyond the schema.
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?
Starts with a specific verb+resource ('Find and rank the best live postings') scoped to 'one specific candidate', and explicitly contrasts itself with the sibling search_jobs for browsing/listing/counting. An agent can differentiate it from search_jobs and 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?
Explicit when-to-use (candidate with resume/skills/visa needs), when-not (browsing/listing/counting → use search_jobs, with a latency rationale: 10-15s vs under a second), and a follow-up step (read finalists with get_job). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch JobYap (deep research)ARead-onlyInspect
Search JobYap job postings by natural-language query. Matches job titles, falling back to significant keywords when the full phrase finds little. Returns result ids, titles and citable URLs for use with fetch. For structured filtering (location, company, remote, freshness) prefer search_jobs.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=true, destructiveHint=false), the description adds meaningful behavioral details: it matches job titles and falls back to 'significant keywords' when the full phrase is low-yield. It also discloses that results include citable URLs intended for fetch. This enriches the agent's understanding of how the tool behaves without contradicting any annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place: the purpose, the matching behavior, and the alternative tool. It is front-loaded with the primary action and contains no filler or redundancy.
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 one parameter, a single required field, no nested objects, and an output schema plus annotations, the description covers the key aspects: what it searches, how the query works, what it returns, and when to use a sibling instead. Nothing essential is missing for a tool of this complexity.
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?
The schema provides only the type and length constraints for 'query' with 0% description coverage. The description compensates fully by explaining that the query is natural-language, matches job titles, and falls back to keywords. This gives the agent a clear model of how the parameter affects the search.
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 clearly states the tool's function: 'Search JobYap job postings by natural-language query.' It also specifies the matching strategy (job titles, fallback to keywords) and output (result ids, titles, citable URLs). It distinguishes itself from sibling search_jobs by noting the structural filtering alternative, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells when to use this tool versus the structured sibling: 'For structured filtering (location, company, remote, freshness) prefer search_jobs.' This provides a clear alternative condition, and the natural-language query description implies the intended use case. The mention of 'for use with fetch' also guides the follow-up workflow, offering actionable usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_jobsSearch jobsARead-onlyInspect
Search JobYap's aggregated job postings with structured filters. Fast (under a second): use it to browse, list, count or page through postings and to answer general questions about who is hiring. To find the best postings for one specific person (a resume, or their experience, skills or visa needs), use match_jobs instead. The text query matches job titles only (case-insensitive substring) — try synonyms or shorter tokens when results are thin. Company names must exactly match values from list_companies; locations must be identifiers from search_locations. work_mode matches jobs explicitly marked remote or hybrid (unmarked means unstated, not onsite). Results are active listings, newest first by default; sort=popular ranks by discussion activity. To paginate, pass next_cursor back as cursor and keep every other argument identical.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | recent (default) or popular (most discussed). | |
| query | No | Substring matched against job titles only. | |
| cursor | No | Opaque cursor from a previous next_cursor. | |
| companies | No | Exact company names from list_companies. | |
| locations | No | Location identifiers from search_locations, e.g. city-US-CA-san_francisco. | |
| page_size | No | ||
| work_mode | No | ||
| has_comments | No | Only jobs with community discussion. | |
| include_total | No | Also compute the total match count (slower). | |
| posted_within | No | Hard freshness filter on the publish date. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive), and the description adds substantial extra context: sub-second latency, active-listings-only scope, default newest-first ordering with sort=popular as an alternative ranking by discussion activity, the important semantics that unmarked work_mode means unstated rather than onsite, and the pagination contract (pass next_cursor back as cursor, keep all other arguments identical).
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?
Dense but front-loaded: filtering scope and speed first, sibling routing second, then per-parameter caveats and pagination. Every sentence carries a concrete behavioral or semantic fact, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, all-optional search tool with no output schema, the description covers the full calling contract an agent needs: valid input domains for the strict filters, ordering, freshness, and how to continue pagination via next_cursor.
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 80%, so the schema already documents most parameters, but the description adds genuine meaning beyond it: query is a case-insensitive substring on titles only with synonym/short-token advice, companies must be exact values from list_companies, locations must be identifiers from search_locations, and work_mode only matches explicitly marked jobs.
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) and resource (aggregated job postings) with structured filters, and explicitly distinguishes itself from the sibling match_jobs by naming the exact selecting condition (one specific person's resume/skills/visa). An agent can route between search_jobs and match_jobs without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use ('browse, list, count or page through postings', general hiring questions) and when-not ('to find the best postings for one specific person... use match_jobs instead'), plus practical exclusions for thin results and the exact constraints for companies/locations filters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_locationsSearch locationsARead-onlyInspect
Resolve a free-text place name ("toronto", "Japan", "Texas") to the location identifiers search_jobs accepts (country-XX, state-XX-YY, city-XX-YY-name). Searches every place JobYap knows, not only those with current openings, so an identifier may match no jobs. City display omits the state, and the list can be shorter than limit.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Place name fragment, minimum 2 characters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, non-destructive, closed-world), so the description earns credit for adding distinct operational traits: the index is global rather than open-jobs-only, an identifier can match zero jobs, city display omits state, and results may be shorter than limit.
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 dense sentences with zero filler. The identifier formats and the search_jobs linkage are front-loaded before the secondary caveats about coverage and list length.
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?
There is no output schema, so the description correctly spends its budget spelling out the identifier formats returned and the caveats about global index coverage and truncated lists. An agent has everything needed to call it and interpret results.
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 50% (only query is documented in the schema). The description adds the nuance that the returned list can be shorter than limit, which informs how to read the limit parameter, but it does not define limit's upper bound (25) or its default behavior in the description itself.
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 (resolve) and resource (free-text place name) and gives the exact output format it produces (country-XX, state-XX-YY, city-XX-YY-name). It clearly distinguishes itself from search_jobs by naming it as the consumer of the results.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the use case explicit: this is the tool you call first to get identifiers that search_jobs accepts. It does not frame explicit when-not conditions, but the routing to search_jobs is unambiguous enough that an agent knows where this fits in a workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
match_jobs1 field changed- changed
Input schema / properties / candidate_years / descriptionPrevious value: -"Candidate years of professional experience; drops postings that require more than this plus 0.5."New value: +"Candidate years of professional experience; drops postings that require more than one year beyond it."
1 tool update
- Added
match_jobs
8 tool updates
- First observed
fetch - First observed
get_job - First observed
get_job_comments - First observed
get_job_stats - First observed
list_companies - First observed
search - First observed
search_jobs - First observed
search_locations
Related MCP Connectors
Search jobs on verified employer job boards. Every link is the employer's own posting.
Search 2.3M live employer-direct job postings, company hiring signal, market stats, change feed.
Search real, recent job postings from company career pages and ATS boards, scored for fit.
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

JobsPipe MCP Serverofficial
FlicenseNot gradedqualityBmaintenanceJobsPipe — data pipeline of every job posting on the web. Search live, normalized job postings from 30+ ATS feeds and job boards for AI agents via MCP.-- AlicenseAqualityCmaintenanceEnables asking what companies are hiring right now by querying live job postings from their applicant-tracking system board APIs (Greenhouse, Lever, Ashby, Recruitee, Rippling, Personio), with filters, parsed location, remote flag, and structured salary.3MIT
- AlicenseNot gradedqualityBmaintenanceSearch live startup.jobs listings with filters for role, location, and employment type, plus get job details, company profiles, hiring trends, and salary benchmarks.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.