Verified AI/tech jobs from company ATSs: search, fit matching, salary stats; employer job posting
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional — employer mode. Value "Bearer entra_live_…" with a key from https://entracareers.com/employer/profile?tab=api-keys. Omit for candidate tools.
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.
Which companies are hiring for a role right now: aggregates ENTRA search results (up to 300 most recent roles) into companies with open-role counts, sample titles, latest post date, verified flag and profile URLs.
Role query, e.g. "AI engineer"
Max companies (default 15, max 25)
ISO-2 country code or country name
Only remote roles
Which companies are hiring for a role right now: aggregates ENTRA search results (up to 300 most recent roles) into companies with open-role counts, sample titles, latest post date, verified flag and profile URLs.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max companies (default 15, max 25) |
| query* | string | Role query, e.g. "AI engineer" |
| country | string | ISO-2 country code or country name |
| remote_only | boolean | Only remote roles |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 25,
"minimum": 1,
"description": "Max companies (default 15, max 25)"
},
"query": {
"type": "string",
"minLength": 1,
"description": "Role query, e.g. \"AI engineer\""
},
"country": {
"type": "string",
"description": "ISO-2 country code or country name"
},
"remote_only": {
"type": "boolean",
"description": "Only remote roles"
}
},
"additionalProperties": false
}Full details of one ENTRA job by id: description, requirements, skills, salary band, company, apply link.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | Job id from search_jobs / match_jobs |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"description": "Job id from search_jobs / match_jobs"
}
},
"additionalProperties": false
}List companies hiring on ENTRA (OpenAI, Anthropic, SpaceX, Stripe and 300+ more) with open-role counts and profile links.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results (default 20) |
| query | string | Filter by company name |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Max results (default 20)"
},
"query": {
"type": "string",
"description": "Filter by company name"
}
},
"additionalProperties": false
}AI matching, live: pass resume_text (free text) or skills[] plus optional target_role / remote_only / country / min_salary. Extracts skills, role and seniority deterministically, runs 2–4 searches, dedupes and ranks with an explainable fit_score (0–100), why[], matched_skills, skill_gaps, salary and a qualitative interview_chance_hint. ENTRA finds and ranks; the human applies.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max matches (default 10, max 20) |
| skills | array | Key skills if you have no resume text, e.g. ["python","llm","rag"] |
| country | string | ISO-2 country code or country name |
| min_salary | number | Minimum ANNUAL salary in USD |
| remote_only | boolean | Only remote roles |
| resume_text | string | Free-text resume / profile (≤8000 chars). Skills, role and seniority are extracted deterministically. |
| target_role | string | Target role, e.g. "machine learning engineer" (overrides the role detected in resume_text) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Max matches (default 10, max 20)"
},
"skills": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 50,
"description": "Key skills if you have no resume text, e.g. [\"python\",\"llm\",\"rag\"]"
},
"country": {
"type": "string",
"description": "ISO-2 country code or country name"
},
"min_salary": {
"type": "number",
"minimum": 0,
"description": "Minimum ANNUAL salary in USD"
},
"remote_only": {
"type": "boolean",
"description": "Only remote roles"
},
"resume_text": {
"type": "string",
"maxLength": 8000,
"description": "Free-text resume / profile (≤8000 chars). Skills, role and seniority are extracted deterministically."
},
"target_role": {
"type": "string",
"description": "Target role, e.g. \"machine learning engineer\" (overrides the role detected in resume_text)"
}
},
"additionalProperties": false
}Backward-compatible alias of match_jobs: skills[] (+ role_hint, remote_only, limit) → ranked verified roles with fit explanation.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| skills* | array | Key skills / technologies, e.g. ["python","llm","rag"] |
| role_hint | string | Target role, e.g. "ML engineer" |
| remote_only | boolean |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"skills"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 15,
"minimum": 1
},
"skills": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Key skills / technologies, e.g. [\"python\",\"llm\",\"rag\"]"
},
"role_hint": {
"type": "string",
"description": "Target role, e.g. \"ML engineer\""
},
"remote_only": {
"type": "boolean"
}
},
"additionalProperties": false
}Prepare an application for an ENTRA job: returns the direct apply link and a short checklist. The human reviews and applies — no auto-submission.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | Job id from search_jobs / match_jobs |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"description": "Job id from search_jobs / match_jobs"
}
},
"additionalProperties": false
}Salary statistics for a role query from ENTRA listings that publish a band (up to 150 most recent): count_with_salary, min / p25 / median / p75 / max per currency (annualized; USD reported as USD-equivalent, other currencies as-is), top 5 companies by count. Listed bands only — no estimates.
| Argument | Type | Description |
|---|---|---|
| query* | string | Role query, e.g. "machine learning engineer" |
| country | string | ISO-2 country code or country name |
| experience | string | Experience level |
| remote_only | boolean | Only remote roles |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"minLength": 1,
"description": "Role query, e.g. \"machine learning engineer\""
},
"country": {
"type": "string",
"description": "ISO-2 country code or country name"
},
"experience": {
"enum": [
"no_experience",
"1_3_years",
"3_6_years",
"6_plus_years"
],
"type": "string",
"description": "Experience level"
},
"remote_only": {
"type": "boolean",
"description": "Only remote roles"
}
},
"additionalProperties": false
}Search thousands of verified AI & tech jobs on ENTRA (aggregated directly from company hiring systems — zero ghost jobs). Filters: work location, country, company, annual salary, experience, posted_within_days. rank_by date | salary | fit (fit needs profile_keywords). Returns total_found and live roles with salary bands and apply links.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max results (default 10, max 50) |
| query* | string | Free-text search, e.g. "machine learning engineer" |
| remote | boolean | Shorthand for work_location="remote" |
| company | string | Company slug or name, e.g. "openai" or "Stripe" |
| country | string | ISO-2 country code (US, GB, DE, AE…) or country name |
| rank_by | string | date (default) · salary (listed bands only, high→low) · fit (needs profile_keywords) |
| experience | string | Experience level |
| salary_min | number | Minimum ANNUAL salary (default currency USD; ENTRA converts other currencies) |
| work_location | string | Filter by work location |
| sort_by_salary | boolean | Deprecated — use rank_by="salary" |
| salary_currency | string | Currency for salary_min (default USD) |
| profile_keywords | array | Candidate skills for rank_by="fit", e.g. ["python","pytorch","llm"] |
| posted_within_days | integer | Only roles published in the last N days |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Max results (default 10, max 50)"
},
"query": {
"type": "string",
"minLength": 1,
"description": "Free-text search, e.g. \"machine learning engineer\""
},
"remote": {
"type": "boolean",
"description": "Shorthand for work_location=\"remote\""
},
"company": {
"type": "string",
"description": "Company slug or name, e.g. \"openai\" or \"Stripe\""
},
"country": {
"type": "string",
"description": "ISO-2 country code (US, GB, DE, AE…) or country name"
},
"rank_by": {
"enum": [
"date",
"salary",
"fit"
],
"type": "string",
"description": "date (default) · salary (listed bands only, high→low) · fit (needs profile_keywords)"
},
"experience": {
"enum": [
"no_experience",
"1_3_years",
"3_6_years",
"6_plus_years"
],
"type": "string",
"description": "Experience level"
},
"salary_min": {
"type": "number",
"minimum": 0,
"description": "Minimum ANNUAL salary (default currency USD; ENTRA converts other currencies)"
},
"work_location": {
"enum": [
"remote",
"onsite",
"hybrid"
],
"type": "string",
"description": "Filter by work location"
},
"sort_by_salary": {
"type": "boolean",
"description": "Deprecated — use rank_by=\"salary\""
},
"salary_currency": {
"type": "string",
"maxLength": 3,
"minLength": 3,
"description": "Currency for salary_min (default USD)"
},
"profile_keywords": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 30,
"description": "Candidate skills for rank_by=\"fit\", e.g. [\"python\",\"pytorch\",\"llm\"]"
},
"posted_within_days": {
"type": "integer",
"maximum": 365,
"minimum": 1,
"description": "Only roles published in the last N days"
}
},
"additionalProperties": false
}