JobYap Job Search
Server Details
Search job postings aggregated from companies' careers sites, plus each job's discussion thread.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- jobyap/agent-skills
- GitHub Stars
- 0
TDQS
Scored across 8 tools
fetch and get_job both retrieve full job postings and overlap heavily, especially since get_job also returns the canonical discussion URL and fetch includes comments. search and search_jobs are both job search entry points, which creates additional ambiguity despite their different query styles.
The get_job, get_job_comments, get_job_stats, list_companies, and search_locations names form a clear pattern, but fetch and bare search break the convention. The naming is readable overall, but the mix of bare verbs and prefixed verbs is inconsistent.
With 8 tools, the server is well-scoped for a job search domain: search, structured filtering, location resolution, company listing, job details, comments, and stats. There is no obvious bloat or thinness.
The tool surface covers the main job-search lifecycle: finding jobs through two search modes, resolving locations, listing companies, retrieving full job details, reading community comments, and checking aggregate stats. There are no major missing operations that would leave an agent stuck.
Available Tools
8 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.
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. 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?
Beyond the annotations (readOnlyHint, destructiveHint), the description discloses critical behavior: query matches titles only (case-insensitive substring), unmarked work_mode means 'unstated not onsite', results are active listings with newest-first default, and pagination requires passing next_cursor with all other arguments identical. No contradiction with 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 dense but organized: purpose first, then filtering nuances, then sort, then pagination. No wasted words, though it is longer than average. Each sentence earns its place for a 10-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?
Given the complexity (10 params, no output schema), the description covers the most important behavioral quirks: matching rules, identifier sources, work_mode semantics, sorting, and pagination. It also references sibling tools for lookups. The remaining params (has_comments, include_total, posted_within) are self-explanatory from schema. This is complete for invocation purposes.
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 description adds meaning that schema descriptions don't fully convey: query semantics, company/location source constraints, work_mode nuance, sort meaning, and cursor usage. It compensates for missing schema descriptions on work_mode and page_size, and enriches the other fields.
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 a specific verb and resource: 'Search JobYap's aggregated job postings with structured filters.' This clearly distinguishes it from siblings like get_job (single job) or search (likely generic), while also implying a structured search vs. free-form.
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 provides clear context: companies must come from list_companies and locations from search_locations, which implicitly tells the agent to call those tools first. It also advises trying synonyms or shorter tokens when results are thin. However, it doesn't explicitly state when *not* to use this tool versus the 'search' sibling.
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 ("bay area", "Germany", "berlin") 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 mark readOnlyHint=true and destructiveHint=false, and the description adds meaningful behavioral context: it searches the entire place directory regardless of current openings, an identifier may match zero jobs, city results omit the state, and the result list may be shorter than the requested limit. There is no contradiction with 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, front-loaded with the core purpose and examples, followed only by necessary caveats about scope and pagination. No sentence repeats schema or annotation information, and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read-only lookup with no output schema, the description covers purpose, input semantics, output identifier format, edge cases (no openings, missing state, shorter list), and the search universe. An agent has enough information to invoke the tool correctly and interpret its 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?
The query parameter already has a schema description, and the description enriches it with example fragments and the output identifier format (country-XX, state-XX-YY, city-XX-YY-name). The limit parameter is not described in the schema, but the description clarifies it as a cap on the returned list ('the list can be shorter than limit'), partially compensating for the 50% schema coverage gap.
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 a specific verb, 'Resolve,' and identifies the exact resource: free-text place names are converted to location identifiers that sibling search_jobs accepts, with concrete examples. This clearly differentiates it from job search or company listing siblings, leaving no ambiguity about what the tool does.
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 states the tool's role as the lookup step for search_jobs, which tells an agent when to use it. It also flags that results may match no job openings, preventing misuse. It does not explicitly name alternatives or state when not to use it, but the context is clear enough for an agent.
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.
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 a live index of millions of open jobs from employer career sites and 100+ ATS platforms.
Read job postings live from employer career sites across 10 applicant tracking systems.
Search job postings, companies, and technology stacks across 10M+ companies.
Search 690k open jobs from official ATS feeds, and what changed since your last check.
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 gradedqualityBmaintenanceEnables searching live, normalized job postings from 30+ ATS feeds and job boards, with tools for job search, source listing, pricing plans, and Upwork jobs.-- 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.