VeritaHire live jobs
Server Details
Live US jobs from employers' own career sites, still-open checks, competitive hiring reports.
- Status
- Healthy
- Uptime
- 98.8% over 25 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 8 tools
Most tools have clearly distinct jobs: search_live_jobs finds postings, get_job retrieves full posting details, is_job_still_open checks liveness, and job_openings_index provides macro data. The main overlap is between benchmark_role and request_full_report, since both concern the competitive hiring report, though the former returns a free summary while the latter returns a link to the full report.
The set mostly follows a verb_noun pattern: benchmark_role, get_job, report_problem, request_full_report, save_search, search_live_jobs. The exceptions are is_job_still_open, which uses a question-style verb phrase, and job_openings_index, which is a noun phrase, but both remain readable and predictable.
Eight tools is well within the appropriate range for a job search and hiring-report server. Each tool covers a distinct capability, and there are no obviously redundant or trivial tools.
The surface covers the core lifecycle: search live jobs, retrieve posting details, verify whether a posting is still open, benchmark a role, access a market index, save searches, request full reports, and report data problems. Minor gaps remain, such as no tool for managing or listing saved searches after creation and no standalone employer-profile lookup, but these are workable around.
Available Tools
8 toolsbenchmark_roleCompetitive Hiring Report for one job postingARead-onlyInspect
Competitive Hiring Report, free summary, for the employer of one US healthcare, finance, IT, engineering, science, HR, legal, marketing, sales, customer service, admin, operations and logistics, skilled trades, retail and food, or education job posting (nurses, therapists, pharmacists, accountants, bankers, software engineers, data roles, engineers, scientists, attorneys, recruiters, marketers) that is not filling: the posted pay range in that market (salary benchmarking) and how many employers are hiring it. The full report, first one free (request_full_report), names each competitor with the pay it posts and how fast it closes the role (posting up to posting down), and shows where this posting sits and how hard the role is to fill there. Measured from employers' own careers sites. Identify the posting by job_url (the careers-site link, or a veritahire.com/j/ link), job_id, or employer + title (+ city, state). A role not yet benchmarked returns status "building" with market_now (the role's market within 25 miles, counted that moment) and retry_after_seconds, the time until the full summary is ready. A posting we do not hold, named by title and city/state, returns status "not_held" with market_now and a link for a report on the role as planned.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| state | No | Two-letter US state | |
| title | No | ||
| job_id | No | VeritaHire job id | |
| job_url | No | The posting's URL on the employer's careers site, or a veritahire.com/j/ URL | |
| employer | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description usefully adds data provenance ('measured from employers' own careers sites'), the free-summary vs paid-full-report boundary, and the async states ('building' with retry_after_seconds, 'not_held' with market_now). It does not state rate limits, coverage gaps, or freshness beyond the retry hint.
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 the tool's purpose, and the return-state details are valuable. However, roughly forty words are spent enumerating industries and job titles, which is bulk padding that slows the agent without changing its decision; the prose is also a single run-on sentence.
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, the description carries the return-value burden and does so: pay range in market, count of employers hiring, competitor detail in the full report, and the 'building'/'not_held' status payloads with retry_after_seconds. Only minor gaps remain, such as geography of the benchmark (mentioned as 'within 25 miles' only in the building case) and any pagination or size limits.
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 50% (city, title, employer are undocumented), but the description compensates by explaining identification strategies: job_url (careers-site link or veritahire.com/j/ link), job_id, or employer + title (+ city, state). It adds the fallback logic the schema itself does not express, going beyond the baseline for half-covered schemas.
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 the resource precisely (competitive hiring report / pay-range benchmarking for one posting) and scopes it to US postings that are 'not filling.' It distinguishes itself from the sibling request_full_report by labeling itself the 'free summary' and describing what the full report adds. The verb is implicit (it is a read/report tool) and the long industry/occupation enumeration dilutes the headline, keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage condition ('for ... a job posting that is not filling') and points at the alternative path (request_full_report for the full paid report, first one free). It does not address when an agent should prefer get_job or search_live_jobs instead, so exclusions are missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_jobRead one job posting in fullBRead-onlyInspect
The whole posting text from the employer, its requirement facts (education, licences, years required and preferred, skills), pay, any sign-on bonus it offers (the amount, quoted from the posting), benefits, whether it is still open, and the apply link.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | ||
| job_id | No | VeritaHire job id, as returned in search results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds that bonus amounts are quoted verbatim from the posting and that the full posting text is returned, which is useful context, but it omits error behavior for invalid/missing identifiers despite requiring zero parameters.
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?
It is a single front-loaded sentence that leads with the primary payload ('The whole posting text from the employer') before enumerating secondary fields. It is somewhat run-on and list-like, but every item arguably describes returned content and no sentence is wasted.
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, the description carries the return-value burden and does so thoroughly, enumerating posting text, requirement facts, pay, bonus, benefits, open status, and apply link. The main gap is that it never resolves which identifier (url vs job_id) to supply, or what happens if neither is given.
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?
With only 50% schema coverage, the description must compensate for the undocumented url parameter, but it says nothing about either input. It states that an apply link is returned, which actually adds confusion about whether 'url' is the same link. The description describes output fields rather than adding meaning to the two parameters.
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 title states a specific verb+resource (read one job posting in full) and the description enumerates exactly what that posting contains, so the agent knows what it retrieves. It does not, however, distinguish itself from siblings like is_job_still_open (which it partially overlaps by including 'whether it is still open') or search_live_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?
There is no explicit when-to-use guidance, no prerequisites, and no mention of alternatives. The overlap with Sibling is_job_still_open is never addressed, so the agent must infer whether to call that tool separately or rely on the open-status field here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
is_job_still_openIs this job posting still open?ARead-onlyInspect
Checks whether a job posting is still on the employer's own careers site (VeritaHire re-reads employer sites and marks a posting closed within about 36 hours of it leaving). Returns open, closed or unknown, with the last time it was confirmed. Works for postings found anywhere, given the employer's careers-site link.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The posting URL (careers site or veritahire.com/j/) | |
| job_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, non-destructive, closed-world), so the bar is lower. The description adds real behavioral context they don't: a ~36-hour detection latency after a posting leaves the site, and the three-valued return (open/closed/unknown) plus a last-confirmed timestamp, which tells the agent how much to trust the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: purpose first, then mechanism/freshness, then return values. The parenthetical latency figure is the only elaboration and it earns its place. 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?
With no output schema, the description usefully enumerates the return states and timestamp, and discloses the freshness window. It is slightly incomplete on error/unknown-edge behavior and on the two-optional-parameter relationship, but otherwise complete for a simple status check.
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 50% and neither parameter is required. The phrase 'given the employer's careers-site link' loosely maps to url, but the job_id parameter is unexplained, and the description never clarifies the url-vs-job_id precedence or whether one is needed. It adds little 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?
States a precise verb+resource ('checks whether a job posting is still on the employer's own careers site') and scopes it against the employer-freshness domain rather than the local index siblings like get_job or search_live_jobs serve. An agent can tell what this answers without opening the 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?
'Works for postings found anywhere, given the employer's careers-site link' gives a clear applicability condition and input source. It does not name an alternative or an exclusion (e.g. when to prefer search_live_jobs), so it stops short of the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
job_openings_indexJob Openings Index (open US job postings, daily)BRead-onlyInspect
The VeritaHire Job Openings Index: open US job postings measured every day from employers' own careers sites and published the next morning - the index (base 100), its 7-day average, its change over a day, a week and 28 days, the share of postings put up and taken down in the last week, the latest official JOLTS month for comparison, and the daily series. Free (CC BY 4.0).
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How many days of the series to return (default 30) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely useful context the annotations cannot carry: the source (employers' careers sites), the next-morning publication lag, and free CC BY 4.0 licensing. It says nothing about caching, rate limits, or what an empty/short series looks like, so it is solid 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?
One dense sentence, front-loaded with the producer and resource name, with the enumerated outputs following in a logical order. The long comma list of metrics is heavy but every clause identifies a distinct returned value, so little is wasted.
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 present, the description carries the return-value burden and does so by enumerating the metrics and noting the JOLTS comparison month and the daily series. An agent can predict the response shape well enough; only response nesting, units, and the effect of `days` on the series length remain unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single `days` parameter (1-120, default 30) is fully documented in the schema. The description only alludes to 'the daily series' without adding format or default behavior, so it neither compensates nor detracts — baseline applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource — a daily index of open US job postings built from employers' own careers sites — and lists the values it exposes (index level, 7-day average, changes, churn shares, JOLTS comparison, series). It is clearly distinguishable from the job-search siblings like search_live_jobs or get_job, though it reads as a data catalog entry rather than an explicit 'returns X' verb statement.
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?
There is no statement of when to call this versus alternatives; an agent gets no cue that this is macro/labor-market context while search_live_jobs is per-posting. No prerequisites, no exclusions, no mention of how the days window should be chosen relative to the audience.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_problemTell VeritaHire something is wrongAInspect
Records a problem with VeritaHire data: a job listed as open that the employer's site shows closed (job_closed), wrong place, wrong pay, wrong employer name, a search that returned irrelevant results or missed jobs it should have found, or duplicates. job_id identifies one job; search holds the search arguments for a results problem. Reports are about data, not people, and a person at VeritaHire reads every one.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| detail | No | What was wrong, in a sentence or two | |
| job_id | No | ||
| search | No | The search arguments that produced the problem |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-read-only, non-destructive, non-idempotent write, and the description adds genuinely useful context: reports are about data rather than people and 'a person at VeritaHire reads every one', signaling human review and that duplicate submissions are not deduplicated. It still does not describe what happens after submission (confirmation, response, tracking).
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 the core purpose, then the kind enumeration, then the job_id/search disambiguation and the human-review note. Efficient, though the long kind list is dense and could be tightened.
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 write tool with no output schema and a nested search object, the description covers what is reportable, how job_id and search disambiguate, and that a human reviews submissions. Missing only post-submission behavior such as return value or whether follow-up is expected.
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?
With schema coverage at 50%, the description compensates by explaining the two least obvious parameters: job_id identifies one job and search holds the search arguments for a results problem. The kind values are implicitly mapped to problem categories in prose, though detail is left to 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?
States a specific verb and resource ('Records a problem with VeritaHire data') and enumerates the concrete problem categories, so an agent knows exactly what is reportable. It does not contrast itself with the closest sibling (is_job_still_open), which an agent might otherwise reach for first.
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 enumerated kinds give clear context for when this tool applies (job_closed, wrong_location, wrong_pay, irrelevant_results, missing_jobs, duplicate), and the job_id/search sentence routes each scenario to the right input. No when-not-to-use or explicit alternative (e.g. is_job_still_open for a single verification) is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_full_reportGet a link to the full Competitive Hiring ReportARead-onlyInspect
Returns a link for the person who will use the full Competitive Hiring Report for a posting (first report free). They open it on veritahire.com with the posting already filled in, enter their own work email, and get the report. This tool sends no email and takes no email address: VeritaHire only emails the address the person types there.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| state | No | ||
| title | No | ||
| job_id | No | ||
| job_url | No | ||
| employer | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), but the description adds real side-effect disclosure: no email is sent, no email address is accepted as input, and the recipient supplies their own address on veritahire.com. That is exactly the kind of behavioral context annotations cannot convey.
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, front-loaded with the return value, and each sentence carries distinct information (what is returned, how it is consumed, and what side effects do not occur). Slightly verbose in the final sentence but nothing is wasted.
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's 'returns a link' partially covers the return value, and the behavioral notes are solid. The gap is the six undocumented input parameters, which the description does not compensate for at all.
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 0% across six parameters (city, state, title, job_id, job_url, employer), and the description never explains any of them. The only hint is that 'the posting' is pre-filled, leaving the agent to guess which identifiers are needed and whether any are required.
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 (returns a link) and resource (the full Competitive Hiring Report for a posting), plus the pricing context (first report free). No sibling tool produces this artifact, so an agent can distinguish it immediately.
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 frames who the output is for ('the person who will use the full report for a posting') and describes the downstream workflow, which implies usage. However, it never states when to call this versus siblings like benchmark_role or get_job, nor any exclusion conditions, so routing 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.
save_searchGet a link to receive new jobs for this search, dailyBRead-onlyInspect
Returns a link for the person. They open it on veritahire.com, enter their own email address and confirm; after that they get a daily email of new jobs matching this search (still live on employers' own careers sites). This tool sends no email and takes no email address: VeritaHire only emails the address the person types there.
| Name | Required | Description | Default |
|---|---|---|---|
| what | No | ||
| where | No | "City, ST", a ZIP, a state ("VA"), or "US" | |
| remote_only | No | ||
| radius_miles | No | ||
| employment_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnly/non-destructive, but the description adds real behavioral context: no email is sent by the tool, no email address is accepted as input, the user must open the link and confirm on veritahire.com themselves, and results stay live on employers' own careers sites. That is valuable beyond the annotations. It stops short of saying what happens on repeat calls (duplicate links vs. idempotent) or how long the link remains valid.
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 key outcome — returns a link — is front-loaded in the first clause, and the paragraph is short. The closing disclaimer ('sends no email and takes no email address' / 'only emails the address the person types there') is mildly redundant, costing a little tightness.
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 tool with five mostly undocumented parameters and no output schema, the description covers the conceptual outcome but leaves parameter behavior and the returned value's shape (URL only? any expiry metadata?) unaddressed. Adequate to call it, but not complete.
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?
There are five parameters but schema description coverage is only 20% (only 'where' is documented), and the description explains none of them — not 'what', 'remote_only', 'radius_miles', or 'employment_type', nor that all parameters are optional. 'Matching this search' hints the parameters define the saved search but adds no syntax or semantics the schema lacks.
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 concrete outcome: it returns a link that, once the user confirms their email on veritahire.com, yields a daily email of new jobs matching the search. That is a specific verb-plus-resource and clearly different from a one-off job search. It does not name search_live_jobs or other siblings explicitly, so differentiation is inferred from the outcome rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'matching this search' suggests this is the follow-up to a search the person already ran, and the link/confirm flow describes the after-step. There is no explicit when-to-use, when-not-to-use, or named alternative among the siblings such as search_live_jobs versus request_full_report.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_live_jobsFind live jobs near a placeARead-onlyInspect
Search US jobs that are live right now on employers' own careers sites (re-read on a schedule, retired within about 36 hours of leaving). Give what (title, keywords or an employer name) and where: "City, ST" or a ZIP (with radius_miles), a state ("Virginia" or "VA": the whole state plus remote jobs open to anyone in the US), or "US" for the whole country; or remote_only. Results lead with jobs whose title holds the words given, newest first; one requisition listed in several places comes back once, with also_listed_in. Returns up to 25 jobs with posted pay, what each posting asks for (education, licences, years), distance, when it was last confirmed, the employer's industry and size, the employer's own apply link, and a job_id for the whole posting. Only the filters given are applied; the "asks" are listed, never used to drop a job. To keep a daily feed for one person (e.g. from their resume), run the same search each day with posted_within_days=1, title_exclude for titles they do not want, and page through next_page.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 25 jobs a page; pass next_page from the previous result | |
| sort | No | Default: best match | |
| what | No | Job title, keywords or employer, e.g. "registered nurse", "forklift", "Kaiser Permanente" | |
| where | No | "City, ST" or a 5-digit ZIP (radius applies); a state, e.g. "Virginia" or "VA" (the whole state); or "US" (nationwide) | |
| min_pay | No | Minimum pay: annual, or hourly if under 300. Jobs that do not post pay are kept, listed last. | |
| remote_only | No | ||
| radius_miles | No | ||
| title_exclude | No | Comma-separated words; jobs whose title contains any of them are left out, e.g. "senior, travel" | |
| employment_type | No | ||
| posted_within_days | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnly/non-destructive/openWorld; the description adds substantial behavior beyond that: ranking (title matches first, newest first), deduplication with also_listed_in, a 25-result cap, freshness lifecycle, and the explicit rule that filters given are the only ones applied and the 'asks' never drop a job. That last point is a non-obvious semantic an agent could easily get wrong.
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?
Purpose is front-loaded and nearly every clause carries distinct information (formats, ranking, dedup, cap, return fields, retention recipe). The main cost is that it lands as one dense paragraph of semicolon-chained clauses, which makes it harder to scan than a short bulleted structure would be.
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 tool with no output schema, the description compensates by enumerating what comes back (pay, requirements, distance, last-confirmed time, employer industry/size, apply link, job_id) and by covering paging and freshness. Nothing an agent needs in order to call it or interpret results 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?
With 60% schema coverage, the description adds real value: the accepted forms for where (city/state, ZIP + radius_miles, state name or abbreviation with state-wide + US-remote behavior, or "US"), the nature of what (title, keywords, or employer name), and how posted_within_days/title_exclude are meant to be used. It leaves employment_type, sort, and radius_miles defaults entirely to the schema, so not exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — search live US jobs sourced from employers' own careers sites — and pins down the freshness guarantee (re-read on a schedule, retired ~36h after leaving) which is the tool's defining trait versus a generic job index sibling. An agent can distinguish it from job_openings_index or get_job without opening a 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 a concrete usage recipe (daily feed per person: same search daily with posted_within_days=1, title_exclude, page through next_page) and explains the required input combination of what/where or remote_only. It never explicitly names when to prefer a sibling (save_search, job_openings_index, request_full_report), so it stops short of full alternative routing.
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.
3 tool updates
- Added
job_openings_index - Changed
save_search1 field changed- changed
Input schema / properties / where / descriptionPrevious value: -"\"City, ST\" or ZIP"New value: +"\"City, ST\", a ZIP, a state (\"VA\"), or \"US\""
- Changed
search_live_jobs2 fields changed- changed
Input schema / properties / what / descriptionPrevious value: -"Job title or keywords, e.g. \"registered nurse\", \"forklift\""New value: +"Job title, keywords or employer, e.g. \"registered nurse\", \"forklift\", \"Kaiser Permanente\"" - changed
Input schema / properties / where / descriptionPrevious value: -"\"City, ST\" or a 5-digit ZIP"New value: +"\"City, ST\" or a 5-digit ZIP (radius applies); a state, e.g. \"Virginia\" or \"VA\" (the whole state); or \"US\" (nationwide)"
2 tool updates
- Changed
request_full_report2 fields changed- removed
Input schema / properties / emailRemoved value: -{ - "description": "The email address the report goes to", - "type": "string" -} - removed
Input schema / requiredRemoved value: -[ - "email" -]
- Changed
save_search2 fields changed- removed
Input schema / properties / emailRemoved value: -{ - "description": "The person's own email address", - "type": "string" -} - removed
Input schema / requiredRemoved value: -[ - "email" -]
1 tool update
- Changed
search_live_jobs4 fields changed- added
Input schema / properties / pageAdded value: +{ + "description": "25 jobs a page; pass next_page from the previous result", + "minimum": 1, + "type": "integer" +} - changed
Input schema / properties / posted_within_days / enumPrevious value: -[ - 1, - 3, - 7 -]New value: +[ + 1, + 3, + 7, + 14, + 30 +] - added
Input schema / properties / sortAdded value: +{ + "description": "Default: best match", + "enum": [ + "new", + "pay", + "near" + ], + "type": "string" +} - added
Input schema / properties / title_excludeAdded value: +{ + "description": "Comma-separated words; jobs whose title contains any of them are left out, e.g. \"senior, travel\"", + "type": "string" +}
4 tool updates
- Changed
get_job1 field changed- changed
Input schema / properties / job_id / descriptionPrevious value: -"From search_live_jobs"New value: +"VeritaHire job id, as returned in search results"
- Changed
report_problem1 field changed- changed
Input schema / properties / search / descriptionPrevious value: -"The search_live_jobs arguments that produced the problem"New value: +"The search arguments that produced the problem"
- Changed
request_full_report1 field changed- changed
Input schema / properties / email / descriptionPrevious value: -"Where to send it - the user's own address, with their consent"New value: +"The email address the report goes to"
- Changed
save_search1 field changed- changed
Input schema / properties / email / descriptionPrevious value: -"The person's own address, with their consent"New value: +"The person's own email address"
7 tool updates
- First observed
benchmark_role - First observed
get_job - First observed
is_job_still_open - First observed
report_problem - First observed
request_full_report - First observed
save_search - First observed
search_live_jobs
Related MCP Connectors
Live job postings from employer career sites: search, count and compare jobs and companies.
Live jobs from ~5,000 employer ATS boards, hiring profiles, your job profile and tracker.
Read job postings live from employer career sites across 10 applicant tracking systems.
Search a live index of millions of open jobs from employer career sites and 100+ ATS platforms.
Related MCP Servers
AlicenseAqualityAmaintenanceLive open jobs from companies' own Greenhouse, Lever and Ashby boards via their official public APIs, with publish-verified dates, age, long-open and repost signals, filters and change tracking.5MIT- AlicenseAqualityCmaintenanceLive 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.3171 npmMIT

JobsPipe MCP Serverofficial
AlicenseNot gradedqualityBmaintenanceSearch live job postings from 30+ job boards, ATS feeds and public employment services, and watch for new matches.MIT- AlicenseNot gradedqualityBmaintenanceEnables users to find companies hiring by role and geography, qualify them, and monitor them for hiring changes.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.