VeritaHire live jobs
Live US jobs from employers' own career sites, still-open checks, competitive hiring reports.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"jobs": {
"url": "https://veritahire.com/mcp"
}
}
}Remote endpoints
https://veritahire.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (7)
🟢search_live_jobs(what, where, radius_miles, min_pay, employment_type, ...)
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 or keywords) and where (City, ST or ZIP), or remote_only. 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.
Input Schema
{
"type": "object",
"properties": {
"what": {
"type": "string",
"description": "Job title or keywords, e.g. \"registered nurse\", \"forklift\""
},
"where": {
"type": "string",
"description": "\"City, ST\" or a 5-digit ZIP"
},
"radius_miles": {
"type": "integer",
"enum": [
10,
25,
30,
50,
100
],
"default": 25
},
"min_pay": {
"type": "number",
"description": "Minimum pay: annual, or hourly if under 300. Jobs that do not post pay are kept, listed last."
},
"employment_type": {
"type": "string",
"enum": [
"full_time",
"part_time",
"contract",
"seasonal",
"temporary"
]
},
"remote_only": {
"type": "boolean"
},
"posted_within_days": {
"type": "integer",
"enum": [
1,
3,
7,
14,
30
]
},
"title_exclude": {
"type": "string",
"description": "Comma-separated words; jobs whose title contains any of them are left out, e.g. \"senior, travel\""
},
"sort": {
"type": "string",
"enum": [
"new",
"pay",
"near"
],
"description": "Default: best match"
},
"page": {
"type": "integer",
"minimum": 1,
"description": "25 jobs a page; pass next_page from the previous result"
}
}
}🟢get_job(job_id, url)
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.
Input Schema
{
"type": "object",
"properties": {
"job_id": {
"type": "integer",
"description": "VeritaHire job id, as returned in search results"
},
"url": {
"type": "string"
}
}
}🟢save_search(what, where, radius_miles, employment_type, remote_only)
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.
Input Schema
{
"type": "object",
"properties": {
"what": {
"type": "string"
},
"where": {
"type": "string",
"description": "\"City, ST\" or ZIP"
},
"radius_miles": {
"type": "integer",
"enum": [
10,
25,
30,
50,
100
]
},
"employment_type": {
"type": "string",
"enum": [
"full_time",
"part_time",
"contract",
"seasonal",
"temporary"
]
},
"remote_only": {
"type": "boolean"
}
}
}🟢report_problem(kind, job_id, detail, search)
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.
Input Schema
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"job_closed",
"wrong_location",
"wrong_pay",
"wrong_employer",
"irrelevant_results",
"missing_jobs",
"duplicate",
"other"
]
},
"job_id": {
"type": "integer"
},
"detail": {
"type": "string",
"description": "What was wrong, in a sentence or two"
},
"search": {
"type": "object",
"description": "The search arguments that produced the problem"
}
},
"required": [
"kind"
]
}🟢benchmark_role(job_url, job_id, employer, title, city, ...)
Competitive Hiring Report, free summary, for the employer of one US healthcare, finance, IT, engineering, science, HR, legal or marketing 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 retry_after_seconds, the time until it is ready.
Input Schema
{
"type": "object",
"properties": {
"job_url": {
"type": "string",
"description": "The posting's URL on the employer's careers site, or a veritahire.com/j/ URL"
},
"job_id": {
"type": "integer",
"description": "VeritaHire job id"
},
"employer": {
"type": "string"
},
"title": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string",
"description": "Two-letter US state"
}
}
}🟢request_full_report(job_url, job_id, employer, title, city, ...)
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.
Input Schema
{
"type": "object",
"properties": {
"job_url": {
"type": "string"
},
"job_id": {
"type": "integer"
},
"employer": {
"type": "string"
},
"title": {
"type": "string"
},
"city": {
"type": "string"
},
"state": {
"type": "string"
}
}
}🟢is_job_still_open(url, job_id)
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.
Input Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The posting URL (careers site or veritahire.com/j/)"
},
"job_id": {
"type": "integer"
}
}
}Community
Evidence