
Search job postings and employers from company career sites; each result returns its REST call.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Your Jobven API key, free at https://jobven.com/signup
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
One employer's profile by id (GET /v1/public/company-profiles/{id}): what it does, industry, size, founding year, headquarters and social links. Counts as one toward the monthly allowance.
A company id from search_companies
Tool list last changed Oct 25, 2026.
One employer's profile by id (GET /v1/public/company-profiles/{id}): what it does, industry, size, founding year, headquarters and social links. Counts as one toward the monthly allowance.
| Argument | Type | Description |
|---|---|---|
| id* | integer | A company id from search_companies |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "integer",
"maximum": 2147483647,
"minimum": 1,
"description": "A company id from search_companies"
}
}
}One Jobven job posting by id, with the full description (GET /v1/public/jobs/{id}). Counts as one job toward the monthly allowance.
| Argument | Type | Description |
|---|---|---|
| id* | string | A job id from search_jobs |
| descriptionFormat | string | Description as plain text (default) or markdown |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "A job id from search_jobs"
},
"descriptionFormat": {
"enum": [
"plain",
"markdown"
],
"type": "string",
"description": "Description as plain text (default) or markdown"
}
}
}Find employers Jobven collects jobs from by name (GET /v1/public/companies). Returns id, name and website; get_company has the profile. Free: company searches do not count toward the allowance.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1 |
| limit | integer | Companies per page, default 10, at most 25 |
| search | string | Company name contains this text |
| sortBy | string | Sort field |
| status | string | "active" or "inactive"; both when unset |
| sortOrder | string | |
| isVerified | boolean | Only verified, or only unverified, companies |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"maximum": 100000,
"minimum": 1,
"description": "Page number, from 1"
},
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "Companies per page, default 10, at most 25"
},
"search": {
"type": "string",
"maxLength": 200,
"description": "Company name contains this text"
},
"sortBy": {
"enum": [
"name",
"foundedYear",
"totalJobsPosted",
"activeJobsCount",
"createdAt"
],
"type": "string",
"description": "Sort field"
},
"status": {
"enum": [
"active",
"inactive"
],
"type": "string",
"description": "\"active\" or \"inactive\"; both when unset"
},
"sortOrder": {
"enum": [
"ASC",
"DESC"
],
"type": "string"
},
"isVerified": {
"type": "boolean",
"description": "Only verified, or only unverified, companies"
}
}
}Search Jobven job postings with the filters of GET /v1/public/jobs. Returns 10 jobs by default (at most 25) with a plain-text excerpt of each description; get_job has the full text. Pass nextCursor back as cursor, with the same filters, for the next page. Each job returned counts toward the monthly allowance.
| Argument | Type | Description |
|---|---|---|
| q | string | Search job titles by whole word. Words are ANDed in any order; "double quotes" match an exact phrase, OR matches either side, and a leading - excludes a word. Case-insensitive. Does not search descriptions (see descriptionQuery). |
| city | string | City, comma-separated; case and accents are ignored |
| limit | integer | Jobs per page, default 10, at most 25 |
| order | string | Default DESC |
| state | string | State, province or region, comma-separated: full name ("Ontario") or, for the US and Canada, the postal code ("ON") |
| cursor | string | nextCursor from the previous search_jobs result, same filters |
| skills | array | Skills, any of (up to 10), e.g. ["typescript", "react"] |
| sortBy |
A sample Jobven webhook delivery for one event: the raw body and headers exactly as a receiver gets them, signed with an example secret, plus the signature verifier from the webhook docs in TypeScript, Python or Go. The verifier accepts the sample, so a receiver can be tested end to end. No API call, no key needed, free.
| Argument | Type | Description |
|---|---|---|
| event* | string | The event to show a delivery of |
| language* | string | Language of the signature verifier |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"event",
"language"
],
"properties": {
"event": {
"enum": [
"job.created",
"job.updated",
"job.closed",
"job.deleted"
],
"type": "string",
"description": "The event to show a delivery of"
},
"language": {
"enum": [
"typescript",
"python",
"go"
],
"type": "string",
"description": "Language of the signature verifier"
}
}
}| string |
| Sort field (default postedAt) |
| status | string | "active" (the default) or "closed" |
| country | string | ISO 3166-1 alpha-2 country code, e.g. "US", "CA", "GB". "XX" matches jobs with no location at all. |
| industry | array | Industries, any of (up to 10) |
| language | string | Required spoken language, ISO 639-1 code, e.g. "fr" |
| location | string | Free-text location: city, region or country |
| maxSalary | number | Maximum stated salary |
| minSalary | number | Minimum stated salary |
| remoteType | array | Remote type, any of |
| listedAfter | integer | Listed at or after (Unix seconds), by listedAt: for incremental sync |
| postedAfter | integer | Posted at or after (Unix seconds) |
| includeTotal | boolean | Also count every match (slower) |
| postedBefore | integer | Posted before (Unix seconds) |
| hasRelocation | boolean | true: postings that offer relocation help; false: postings that say they do not |
| employmentType | array | Employment type, any of |
| experienceLevel | array | Experience level, any of |
| descriptionQuery | string | Search job descriptions for a whole-word phrase, matched literally, case-insensitive. Slower than the other filters; pair it with postedAfter. |
| hasVisaSponsorship | boolean | true: postings that offer visa sponsorship; false: postings that say they do not |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": "string",
"maxLength": 200,
"description": "Search job titles by whole word. Words are ANDed in any order; \"double quotes\" match an exact phrase, OR matches either side, and a leading - excludes a word. Case-insensitive. Does not search descriptions (see descriptionQuery)."
},
"city": {
"type": "string",
"maxLength": 500,
"description": "City, comma-separated; case and accents are ignored"
},
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "Jobs per page, default 10, at most 25"
},
"order": {
"enum": [
"ASC",
"DESC"
],
"type": "string",
"description": "Default DESC"
},
"state": {
"type": "string",
"maxLength": 500,
"description": "State, province or region, comma-separated: full name (\"Ontario\") or, for the US and Canada, the postal code (\"ON\")"
},
"cursor": {
"type": "string",
"maxLength": 1000,
"description": "nextCursor from the previous search_jobs result, same filters"
},
"skills": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 10,
"minItems": 1,
"description": "Skills, any of (up to 10), e.g. [\"typescript\", \"react\"]"
},
"sortBy": {
"enum": [
"postedAt",
"listedAt",
"title",
"company"
],
"type": "string",
"description": "Sort field (default postedAt)"
},
"status": {
"enum": [
"active",
"closed"
],
"type": "string",
"description": "\"active\" (the default) or \"closed\""
},
"country": {
"type": "string",
"maxLength": 2,
"description": "ISO 3166-1 alpha-2 country code, e.g. \"US\", \"CA\", \"GB\". \"XX\" matches jobs with no location at all."
},
"industry": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 10,
"minItems": 1,
"description": "Industries, any of (up to 10)"
},
"language": {
"type": "string",
"maxLength": 2,
"minLength": 2,
"description": "Required spoken language, ISO 639-1 code, e.g. \"fr\""
},
"location": {
"type": "string",
"maxLength": 200,
"description": "Free-text location: city, region or country"
},
"maxSalary": {
"type": "number",
"minimum": 0,
"description": "Maximum stated salary"
},
"minSalary": {
"type": "number",
"minimum": 0,
"description": "Minimum stated salary"
},
"remoteType": {
"type": "array",
"items": {
"enum": [
"onsite",
"remote",
"hybrid",
"flexible"
],
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "Remote type, any of"
},
"listedAfter": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Listed at or after (Unix seconds), by listedAt: for incremental sync"
},
"postedAfter": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Posted at or after (Unix seconds)"
},
"includeTotal": {
"type": "boolean",
"description": "Also count every match (slower)"
},
"postedBefore": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Posted before (Unix seconds)"
},
"hasRelocation": {
"type": "boolean",
"description": "true: postings that offer relocation help; false: postings that say they do not"
},
"employmentType": {
"type": "array",
"items": {
"enum": [
"full_time",
"part_time",
"contract",
"internship",
"seasonal",
"volunteer",
"temporary",
"per_diem",
"other"
],
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "Employment type, any of"
},
"experienceLevel": {
"type": "array",
"items": {
"enum": [
"entry",
"mid",
"senior",
"lead",
"executive"
],
"type": "string"
},
"maxItems": 10,
"minItems": 1,
"description": "Experience level, any of"
},
"descriptionQuery": {
"type": "string",
"maxLength": 200,
"description": "Search job descriptions for a whole-word phrase, matched literally, case-insensitive. Slower than the other filters; pair it with postedAfter."
},
"hasVisaSponsorship": {
"type": "boolean",
"description": "true: postings that offer visa sponsorship; false: postings that say they do not"
}
}
}