Find open tech jobs from companies' own job boards, match your skills, and see typical pay.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
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 open tech jobs, 20 a page, with how many it has open, the skills it hires for and its median stated pay.
e.g. "Stripe"
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http careerholo https://careerholo.com/mcp
One employer's open tech jobs, 20 a page, with how many it has open, the skills it hires for and its median stated pay.
| Argument | Type | Description |
|---|---|---|
| page | integer | |
| company* | string | e.g. "Stripe" |
{
"type": "object",
"required": [
"company"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 50,
"minimum": 1
},
"company": {
"type": "string",
"maxLength": 100,
"description": "e.g. \"Stripe\""
}
},
"additionalProperties": false
}One job's details by the id search_jobs gives: whether it is still open, the description (in full where the source allows, else an excerpt), skills, pay, work type and the links.
| Argument | Type | Description |
|---|---|---|
| job_id* | integer | The job's id |
{
"type": "object",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "integer",
"minimum": 1,
"description": "The job's id"
}
},
"additionalProperties": false
}Rank open tech jobs by how well they fit a person's skills, the way CareerHolo's resume match does: a match percentage for each job, the skills they have and miss, and which skill to learn next for more jobs. Send skills only - never a name, email or the resume's text. Nothing is stored.
| Argument | Type | Description |
|---|---|---|
| city | string | A city in that country, e.g. "Berlin" |
| level | string | The person's level |
| roles | array | Kinds of job wanted; jobs next to them count too |
| skills* | array | The person's skills, e.g. ["Python", "Django", "PostgreSQL", "AWS"] |
| country | string | Where the person works from, e.g. "Germany": jobs there and remote jobs open to it |
| work_type | string | Only this way of working |
| visa_sponsorship | boolean | Only jobs that sponsor a visa |
{
"type": "object",
"required": [
"skills"
],
"properties": {
"city": {
"type": "string",
"maxLength": 64,
"description": "A city in that country, e.g. \"Berlin\""
},
"level": {
"enum": [
"intern",
"junior",
"mid",
"senior",
"staff"
],
"type": "string",
"description": "The person's level"
},
"roles": {
"type": "array",
"items": {
"enum": [
"software",
"backend",
"frontend",
"fullstack",
"mobile",
"devops",
"data_engineering",
"data_science",
"data_analysis",
"security",
"qa",
"embedded",
"design",
"product",
"eng_management",
"it_support",
"solutions"
],
"type": "string"
},
"maxItems": 6,
"description": "Kinds of job wanted; jobs next to them count too"
},
"skills": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 40,
"minItems": 2,
"description": "The person's skills, e.g. [\"Python\", \"Django\", \"PostgreSQL\", \"AWS\"]"
},
"country": {
"type": "string",
"maxLength": 64,
"description": "Where the person works from, e.g. \"Germany\": jobs there and remote jobs open to it"
},
"work_type": {
"enum": [
"remote",
"hybrid",
"onsite"
],
"type": "string",
"description": "Only this way of working"
},
"visa_sponsorship": {
"type": "boolean",
"description": "Only jobs that sponsor a visa"
}
},
"additionalProperties": false
}The median and typical range of stated pay for a tech role in a place, from open postings, in US dollars a year. Roles: Software, Backend, Frontend, Full Stack, Data, DevOps, Site Reliability, Machine Learning, Mobile, iOS, Android and Security Engineer, Data Scientist, Data Analyst, Product Manager, Engineering Manager, Technical Program Manager, UX Designer, UI Designer, Solutions Architect. Places: Remote, United States, UK, Germany, Netherlands, Canada, India, San Francisco, New York, London, Berlin, Amsterdam, Toronto, Bangalore.
| Argument | Type | Description |
|---|---|---|
| role* | string | e.g. "Backend Engineer" |
| place* | string | e.g. "Germany" or "Remote" |
{
"type": "object",
"required": [
"role",
"place"
],
"properties": {
"role": {
"type": "string",
"maxLength": 64,
"description": "e.g. \"Backend Engineer\""
},
"place": {
"type": "string",
"maxLength": 64,
"description": "e.g. \"Germany\" or \"Remote\""
}
},
"additionalProperties": false
}Search open tech jobs by keywords, place, skills, level, work type, visa sponsorship, pay and posting date. Returns 20 jobs a page, newest first, or the best title matches first when there are keywords. Each job has `url` (its CareerHolo page) and `apply_url` (the company's own page).
| Argument | Type | Description |
|---|---|---|
| page | integer | |
| sort | string | Default: best title matches first when there are keywords |
| level | string | Seniority: junior includes interns, senior includes leads |
| query | string | Keywords: a role, skill or company, e.g. "data engineer" or "rust" |
| skills | array | Skills every job must ask for, e.g. ["Python", "AWS"] |
| company | string | One employer, e.g. "Stripe" |
| location | string | A city, state or country, e.g. "Berlin", "Texas", "Canada", or "Remote" |
| work_type | string | How the job is worked |
| remote_from | string |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 10, 2026.
| Remote jobs open to people in this region |
| posted_within | string | First seen within this many days |
| salary_stated | boolean | Only jobs that state their pay |
| min_salary_usd | integer | Stated pay of at least this, US dollars a year |
| visa_sponsorship | boolean | Only jobs that say they sponsor a visa |
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 50,
"minimum": 1
},
"sort": {
"enum": [
"relevance",
"newest"
],
"type": "string",
"description": "Default: best title matches first when there are keywords"
},
"level": {
"enum": [
"junior",
"mid",
"senior",
"staff"
],
"type": "string",
"description": "Seniority: junior includes interns, senior includes leads"
},
"query": {
"type": "string",
"maxLength": 200,
"description": "Keywords: a role, skill or company, e.g. \"data engineer\" or \"rust\""
},
"skills": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 10,
"description": "Skills every job must ask for, e.g. [\"Python\", \"AWS\"]"
},
"company": {
"type": "string",
"maxLength": 100,
"description": "One employer, e.g. \"Stripe\""
},
"location": {
"type": "string",
"maxLength": 100,
"description": "A city, state or country, e.g. \"Berlin\", \"Texas\", \"Canada\", or \"Remote\""
},
"work_type": {
"enum": [
"remote",
"hybrid",
"onsite"
],
"type": "string",
"description": "How the job is worked"
},
"remote_from": {
"enum": [
"anywhere",
"us",
"canada",
"uk",
"europe",
"latam",
"apac"
],
"type": "string",
"description": "Remote jobs open to people in this region"
},
"posted_within": {
"enum": [
"3d",
"7d",
"30d",
"90d",
"180d"
],
"type": "string",
"description": "First seen within this many days"
},
"salary_stated": {
"type": "boolean",
"description": "Only jobs that state their pay"
},
"min_salary_usd": {
"type": "integer",
"minimum": 0,
"description": "Stated pay of at least this, US dollars a year"
},
"visa_sponsorship": {
"type": "boolean",
"description": "Only jobs that say they sponsor a visa"
}
},
"additionalProperties": false
}