Overview
Job Search keeps its own index of the open jobs on public company career boards, refreshed through the day, so a search never waits on a company's website. Every job has the same shape whichever company posted it. Keyword search matches every word you give against the job title, with plurals and accents folded, so data engineers finds Senior Data Engineer. Results are newest first; pass a job's id to get its full description on a paid plan.
The tool
Once your client is connected to the VerveKit server, this appears in its tool list as JobSearch. It is read-only and open-world — it fetches and never mutates anything on your side — so most clients call it without asking you to confirm.
{
"name": "JobSearch",
"arguments": {
"keyword": "software engineer"
}
}You do not name the tool yourself; the model picks it. Asking about software engineer in the terms this skill covers is enough for it to reach for JobSearch on its own — naming it explicitly also works, and is the way to force the call.
Connecting
One server URL covers every skill in the catalog, including this one. Authorization is OAuth: the client opens a browser once, and there is no key to paste into a config file.
{
"mcpServers": {
"vervekit": {
"url": "https://api.vervekit.com/v1/mcp"
}
}
}https://api.vervekit.com/v1/mcpPer-client setup — Claude, Cursor, VS Code, ChatGPT — is on the MCP setup page.
Arguments
These are the properties on the tool's inputSchema, so a well-behaved client validates them before the call is made. Premium arguments are accepted on every plan but only take effect on plans that include them.
| Argument | Type | Description |
|---|---|---|
keywordRequired | string | Words that must all appear in the job title, for example data engineer or product designer. length 0–100 |
locationOptional | string | Return only jobs with a location containing this text, for example London, New York or Bavaria. length 0–100 |
countryOptional | string | Return only jobs in this country: an ISO 3166 code or a name, for example US, GB or Germany. length 0–60 |
remoteOptional | boolean | true returns only jobs open to remote work; false only jobs that are not. |
employmentTypeOptional | string | Return only jobs of this employment type. Jobs that give no employment type are kept, since many companies leave it blank; only jobs of another type are left out.full-timepart-timecontractinternshiptemporary |
postedSinceOptional | string | Return only jobs first published at or after this date or date-time (ISO 8601, for example 2026-10-01), or within this age: a number followed by h, d or w, for example 12h, 7d or 2w. length 0–30 |
companyOptional | string | Return only jobs at this company, by its career board name, usually the company name in lowercase, for example airbnb. length 0–100 |
minSalaryOptionalPremium | number | Return only jobs whose salary range reaches at least this amount, in the job's own currency and pay period. Jobs that publish no salary are left out when this is set. range 0–∞ |
pageOptional | integer | Page of results: 10 jobs per page up to page 5 on the free plan, 50 per page up to page 10 on paid plans. default 1 · range 1–10 |
What the model gets back
The result carries a structuredContent object matching the tool's declared outputSchema, so a client reads fields without parsing prose. status is "ok" and error is null on success; a null field means the value was not available for that input, not that the call failed.
{
"status": "ok",
"error": null,
"data": {
"page": 1,
"count": 2,
"hasMore": true,
"jobs": [
{
"id": "b4f50cb0115efeef41cb",
"title": "Senior Network and Cloud Engineer",
"company": "Acturis",
"location": "London, England, United Kingdom",
"locations": [
"London, England, United Kingdom"
],
"country": "GB",
"remote": false,
"workplaceType": "hybrid",
"employmentType": "full-time",
"postedAt": "2026-10-14T15:37:26.000Z",
"url": "https://careers.acturis.com/o/senior-network-and-cloud-engineer",
"applyUrl": "https://careers.acturis.com/o/senior-network-and-cloud-engineer/c/new",
"salary": {
"min": null,
"max": null,
"currency": null,
"interval": null
}
},
{
"id": "43175a4af41a8c5a9a3b",
"title": "Senior AI Engineer in Computer Vision",
"company": "Faktion BV",
"location": "Antwerp, Vlaams Gewest, Belgium",
"locations": [
"Antwerp, Vlaams Gewest, Belgium"
],
"country": "BE",
"remote": false,
"workplaceType": "hybrid",
"employmentType": "full-time",
"postedAt": "2026-08-24T13:17:35.000Z",
"url": "https://talent.faktion.com/o/senior-ai-engineer-in-computer-vision",
"applyUrl": "https://talent.faktion.com/o/senior-ai-engineer-in-computer-vision/c/new",
"salary": {
"min": null,
"max": null,
"currency": null,
"interval": null
}
}
]
}
}
Response fields
Paths are relative to data. Premium fields are absent rather than zeroed on plans that do not include them, so check for presence instead of comparing to 0.
| Field | Type | Example | Description |
|---|---|---|---|
page | number | 1 | Page of results returned |
count | number | 2 | Number of jobs on this page |
hasMore | boolean | true | true when another page may hold more matching jobs |
jobs | array[2] | Matching jobs on this page, newest first | |
jobs.0.id | string | b4f50cb0115efeef41cb | Job id; pass it as id for the job's full description |
jobs.0.title | string | Senior Network and Cloud Engineer | Job title |
jobs.0.company | string | Acturis | Company hiring for the job |
jobs.0.location | string | London, England, United Kingdom | Primary location of the job |
jobs.0.locations | array | ["London, England, United Kingdom"] | Locations the job is offered in, primary first (up to 5) |
jobs.0.country | string | GB | ISO 3166-1 alpha-2 country of the primary location; null when the location names none, such as Remote |
jobs.0.remote | boolean | false | true when the job is open to remote work |
jobs.0.workplaceType | string | hybrid | remote, hybrid or onsite; null when the company does not say |
jobs.0.employmentType | string | full-time | full-time, part-time, contract, internship, temporary or volunteer; null when the company does not say |
jobs.0.postedAt | string | 2026-10-14T15:37:26.000Z | When the job was first published (ISO 8601) |
jobs.0.url | string | https://careers.acturis.com/o/senior-network-and-cloud-engineer | URL of the job's posting page |
jobs.0.applyUrl | string | https://careers.acturis.com/o/senior-network-and-cloud-engineer/c/new | URL to apply for the job |
jobs.0.salary | object | {…} | Salary range as the company publishes it; every value is null when it publishes none |
jobs.0.salary.minPremium | object | null | Lower end of the salary range |
jobs.0.salary.maxPremium | object | null | Upper end of the salary range |
jobs.0.salary.currencyPremium | object | null | ISO 4217 currency of the salary range |
jobs.0.salary.intervalPremium | object | null | Period the salary is paid per: year, month, week, day or hour |
Failure modes
Errors come back as tool errors carrying a sentence the model can act on, not a bare status code. Error handling covers the full list.
| Status | What it means |
|---|---|
400 / 422 | The arguments did not validate. The message names the offending one. |
401 | The OAuth session is invalid or expired — reconnect the server. |
403 | Blocked by a key restriction or an IP allow-list. Never a bad identity. |
404 | This skill is not part of VerveKit. Check the catalog. |
429 | Out of credits, or a brief rate limit. The message tells them apart. |
A call costs 20 credits each time the tool actually runs; a model that reasons about the tool without calling it costs nothing.
Use cases
- Job Boards
- Niche job sites and aggregators fill their listings by keyword, location and remote filters without integrating each company's careers system.
- Job Alerts
- Alert services run saved searches with postedSince to send only jobs published since the last run.
- Hiring Signals
- Sales and investment tools watch which companies are hiring for which roles and where.
- Career Tools
- Resume and career apps suggest open roles that match a candidate's title and location.
Other ways to use Job Search
Set up Job Search on VerveKit, or reach the same source a different way. Your VerveKit account and credits work on all of them — one key, one balance.
Related
More in data: