Roleset — job postings index
Server Details
Search 690k open jobs from official ATS feeds, and what changed since your last check.
- Status
- Healthy
- Uptime
- 100.0% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 6 tools
Each tool has a clearly distinct role: search across the market, browse one company, fetch one posting, stream changes, assess hiring trends, and inspect index stats. Even where company_jobs and search_jobs could overlap, the descriptions explicitly separate them.
All names use lowercase snake_case, but the conventions are mixed: get_job and search_jobs are verb_noun, while company_jobs, job_changes, hiring_signal, and stats are noun-style. The names are readable and domain-consistent, but there is no uniform verb_noun pattern.
Six tools is well-scoped for a job postings index. Each tool covers a distinct part of the workflow—search, retrieval, company-level view, change tracking, trend analysis, and coverage metadata—without redundancy.
The tool set covers the full read-side lifecycle of the index: discovering postings, fetching details, monitoring changes over time, understanding hiring trends, and validating index freshness. No obvious gaps exist for the stated purpose.
Available Tools
6 toolscompany_jobsJobs at one companyAInspect
Every open posting at one company. Accepts a domain (acme.com), an ATS board slug, or the company name. Use when the company is already known and you want its roles; use search_jobs when you are looking across companies. For whether the company is growing rather than what it has open, use hiring_signal.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| identifier | Yes | Domain, ATS board slug, or company name. | |
| include_description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It describes the output as 'every open posting' and accepted identifier formats, but does not explicitly state side effects (e.g., read-only) or permissions, leaving some ambiguity.
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 with no redundancy; every sentence adds value.
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?
Description adequately conveys the tool's purpose and usage, and with output schema present, return values need not be detailed. However, it could mention parameter effects for full 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 coverage is only 33%. The description explains the identifier parameter (domain, slug, or name) but omits any detail about limit and include_description, which have minimal schema descriptions.
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?
Clearly states the tool lists all open postings for a specific company, and explicitly distinguishes from search_jobs and hiring_signal siblings.
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 explicit conditions: use when a company is known and roles are wanted; directs to alternatives for cross-company search and growth metrics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobGet one jobAInspect
Fetch a single posting by its Roleset id, including the full description text and HTML. Use after search_jobs or job_changes when you need the body of a specific posting — for summarising requirements, or checking whether a role matches a candidate's constraints. The id comes from an earlier result.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Roleset job id (UUID) from an earlier result. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the response includes the full description text and HTML and that the id comes from an earlier result, but it does not mention error behavior, authentication, rate limits, or confirm the read-only nature beyond the word 'Fetch'. This is adequate but not rich.
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, followed by precise usage context and a source note for the parameter. Every sentence adds necessary information with no fluff 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?
This is a simple single-parameter read tool with an output schema present. The description covers what it does, how to obtain the id, and when to use it relative to sibling tools. Nothing critical is missing for an agent to call it correctly.
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 provides 100% coverage with the description 'Roleset job id (UUID) from an earlier result.' The tool description repeats this without adding new semantic details, so it stays at the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and resource: 'Fetch a single posting by its Roleset id, including the full description text and HTML.' The word 'single' and the focus on a unique identifier clearly distinguish this from sibling listing/search tools like search_jobs, job_changes, and company_jobs.
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 explicitly says when to use this tool: 'Use after search_jobs or job_changes when you need the body of a specific posting'. It names the preceding sibling tools and gives concrete use cases, but does not explicitly state when not to use it (e.g., when only metadata is needed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hiring_signalCompany hiring signalAInspect
Whether a company is hiring, and where. Returns open roles broken down by department plus how many opened and closed over the last 7 and 30 days, and the net change. Use for sales and research questions — 'is this company growing', 'are they building out engineering', 'did they stop hiring' — where counts and trend matter more than the individual postings. One call, not per record.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | Domain, ATS board slug, or company name. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It explicitly states that the tool 'returns' data, implying a read-only operation with no side effects. The nature of the output is fully disclosed, leaving no ambiguity about what the tool does.
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 high information density. The first sentence explains the return value; the second provides use cases and a contrast to per-record tools. No unnecessary words or repetition.
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 moderate complexity (no output schema, but aggregate data), the description fully covers what the tool returns (department breakdown, counts, net change) and when to use it. It also implicitly differentiates from siblings by emphasizing aggregate vs. individual records.
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 single parameter 'identifier' is fully described with three accepted forms: domain, ATS board slug, or company name. This covers 100% of the schema and gives the agent complete information needed to invoke the tool.
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: determining whether a company is hiring and where. It specifies the output—open roles by department, counts opened/closed over 7/30 days, and net change—which fully clarifies the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance is provided: use for sales and research questions about company growth, engineering expansion, and hiring slowdowns. The phrase 'One call, not per record' distinguishes it from sibling tools that return individual job postings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_changesJob changes since a cursorAInspect
What has opened, changed, closed or reopened in the index. This is the tool to poll: pass since (ISO-8601) the first time, then keep passing the returned meta.next_cursor and you will see each event exactly once, with no gaps or repeats. Filter it the same way you would a search — by department, country, remote, title, company or ATS — to subscribe to one slice of the market. Each event carries the event type, when it happened, a diff showing which fields changed and their before/after values, and the job record itself. Use this to track a hiring market over time, to answer 'what's new since yesterday', or to keep a downstream store in sync. Defaults to the last 24 hours.
| Name | Required | Description | Default |
|---|---|---|---|
| ats | No | ||
| event | No | opened | updated | closed | reopened | |
| limit | No | ||
| since | No | ISO-8601; ignored when cursor is set. | |
| title | No | Match on the job title. | |
| cursor | No | ||
| remote | No | Only remote, or only non-remote. | |
| company | No | ||
| country | No | ISO-3166 alpha-2, e.g. US. | |
| department | No | Department, partial match. | |
| include_job | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the full behavioral disclosure burden, and it does so thoroughly. It explains the exactly-once, no-gaps/no-repeats cursor semantics, the 24-hour default, the event payload content (event type, timestamp, diff, job record), and the filtering behavior. This is rich, honest behavioral context beyond what any schema could infer.
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 every sentence earns its place. It front-loads what the tool returns, then explains the polling protocol, filtering, payload details, and use cases in a logical order. No filler or repetition exists, and the length is justified by the tool's complexity.
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 tool with no annotations and a real output schema, the description covers almost everything an agent needs: how to start polling, how to continue polling, what each event contains, how to filter, and when to use the tool. The output schema can handle detailed return shapes, so the description is complete without over-explaining.
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 55%, and the description adds meaningful semantics for key parameters: since is for the first poll, cursor is meant to be passed back from meta.next_cursor, and filters like department, country, remote, title, company, and ATS are mapped to fields. It does not explicitly explain limit or include_job, but those are relatively self-explanatory and the core polling parameters are well described.
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 identifies what the tool does: it reports events that 'opened, changed, closed or reopened in the index.' It also states that this is a polling tool, which distinguishes it from siblings like search_jobs or get_job, and it names the event types available. The purpose is specific and actionable, not a restatement of the title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong usage context: 'This is the tool to poll,' explains the since/cursor flow, shows how to filter, and lists concrete use cases like tracking a market or syncing a store. It does not explicitly name sibling tools or state when not to use them, but the polling guidance is clear enough for an agent to select this tool appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_jobsSearch jobsAInspect
Search the index of open job postings. Use for a one-off question about the job market: who is hiring for a role, what is open in a city or country, which companies have remote positions. Returns a page of job records plus a meta.next_cursor to continue; each record has title, company, structured locations, remote flag, employment type, salary when the board publishes one, and an apply URL. Descriptions are omitted unless include_description is set, because they are large. To find what has changed since you last looked, use job_changes instead — do not poll this tool in a loop.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free text over title and description. | |
| ats | No | Restrict to one ATS platform. | |
| limit | No | ||
| title | No | Match on the job title. | |
| cursor | No | From a previous meta.next_cursor. | |
| remote | No | Only remote, or only non-remote. | |
| company | No | Company name, partial match. | |
| country | No | ISO-3166 alpha-2, e.g. US, DE. | |
| location | No | City or region. | |
| department | No | ||
| posted_after | No | ISO-8601 timestamp. | |
| employment_type | No | full_time | part_time | contract | intern | temporary | volunteer | |
| listed_since_after | No | ISO-8601. When the company last put the role on the market — it moves when a posting is reopened, so this is the filter for what is on the market now. | |
| include_description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well. It discloses pagination via meta.next_cursor, the record fields included, the fact that descriptions are omitted unless include_description is set, and that polling in a loop is inappropriate.
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 front-loaded with purpose, then explains return shape, the one caveat about descriptions, and the sibling alternative. Every sentence earns its place and there is no redundant restating of the tool 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?
Given 14 parameters, no annotations, and an output schema, the description still gives the agent everything essential: when to call it, what results look like, how pagination works, the expensive-field caveat, and when to choose a different tool. The parameter details are largely covered by the input schema.
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 79%, so the schema handles most parameter meaning. The description adds real value by explaining the include_description trade-off ('descriptions are omitted because they are large'), which is not clear from the schema's bare boolean field description.
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 the index of open job postings.' It also frames the use case ('one-off question about the job market') and distinguishes itself from job_changes, so an agent can tell it apart from the closest sibling tool.
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 says when to use it: for one-off job market questions such as who is hiring, what is open in a city or country, and which companies have remote positions. It also names the alternative for change detection ('use job_changes instead') and warns against polling this tool in a loop.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statsIndex statisticsAInspect
Size and freshness of the whole index: companies, boards per ATS, open and total postings, events in the last 24 hours, and when the oldest active board was last crawled. Free. Use to tell a user how much coverage stands behind an answer, or to check the index is current before relying on it.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It implies a read-only operation (gathering stats) and mentions it is 'Free', which hints at no side effects or limitations. However, it does not explicitly state that it never modifies data, but the nature of the tool makes this clear enough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, using only two sentences to convey purpose, content, and usage. No unnecessary words 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?
Given that the output schema exists and no parameters are present, the description provides all necessary context: it lists the specific metrics that will be returned and explains when to use it. It is self-contained and leaves no obvious gaps.
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 is nothing to explain. The description adds no parameter-specific meaning, but no such meaning is needed. The schema coverage is automatically complete.
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 that the tool provides size and freshness metrics for the entire index, enumerating specific data points (companies, boards per ATS, postings, events, crawl time). This distinguishes it from sibling tools that focus on individual companies or searches.
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 the tool: to inform users about coverage behind an answer or to verify index freshness before relying on it. The word 'Free' also signals it has no cost or restrictions, adding practical guidance.
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
search_jobs1 field changed- added
Input schema / properties / listed_since_afterAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "ISO-8601. When the company last put the role on the market — it moves when a posting is reopened, so this is the filter for what is on the market now.", + "title": "Listed Since After" +}
6 tool updates
- First observed
company_jobs - First observed
get_job - First observed
hiring_signal - First observed
job_changes - First observed
search_jobs - First observed
stats
Related MCP Connectors
Search a live index of millions of open jobs from employer career sites and 100+ ATS platforms.
Semantic search over 3.5M+ live US job postings pulled straight from company ATSes. Read-only.
Unified jobs search over official feeds + ATS boards (USAJOBS, Adzuna, Muse, Greenhouse, Lever...)
Search 490k+ live jobs from company ATS boards, save roles, follow companies, manage talent profile.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables users to discover applicant tracking system job boards from company domains, list open roles, detect hiring changes over time, and generate hiring summaries across multiple ATS platforms.MIT

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 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
- AlicenseAqualityAmaintenanceLive tech-hiring intelligence for AI agents. Search 130K+ open jobs collected daily from ~500 tech companies' own career sites â plus company hiring profiles, tech stacks, salary benchmarks, and skill trends. Five tools work with no account.3193 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.