# TechJobs.vn (remote · techjobs.vn)

Search open tech jobs and companies hiring in Vietnam, refreshed hourly. No key needed to search.

- Trust score: 66/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `techjobs.vn`: 66/100 (this document), [markdown](https://verifymcp.io/servers/vn-techjobs-techjobs/techjobs.md), [page](https://verifymcp.io/servers/vn-techjobs-techjobs/techjobs)

## Channel facts

- Endpoint: `https://techjobs.vn/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (update_cv_variant).
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 67/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 8420 tokens (~187/item across 45 items; 45 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 7/100
  - Stability observed for 2 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 99% of tool parameters carry a description.
  - Structured output schemas are declared (71% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 46 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a current MCP spec version (2026-07-28).

## Install

### How do I install the TechJobs.vn MCP server?

TechJobs.vn is a hosted endpoint at https://techjobs.vn/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http vn-techjobs-techjobs 'https://techjobs.vn/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "vn-techjobs-techjobs": {
      "url": "https://techjobs.vn/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "vn-techjobs-techjobs": {
      "type": "http",
      "url": "https://techjobs.vn/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.vn-techjobs-techjobs]
url = "https://techjobs.vn/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "vn-techjobs-techjobs": {
      "type": "remote",
      "url": "https://techjobs.vn/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add vn-techjobs-techjobs --url 'https://techjobs.vn/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  vn-techjobs-techjobs:
    url: "https://techjobs.vn/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "vn-techjobs-techjobs": {
      "Transport": "http",
      "Url": "https://techjobs.vn/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add vn-techjobs-techjobs -t streamable-http -u 'https://techjobs.vn/mcp'
```

### Other

```json
{
  "mcpServers": {
    "vn-techjobs-techjobs": {
      "type": "http",
      "url": "https://techjobs.vn/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 66, +1)

- [security] Tool “claim_referral_request” rewrote its description, which is the text the model reads
- [security] Tool “decline_referral_request” rewrote its description, which is the text the model reads
- [security] Tool “follow_company” rewrote its description, which is the text the model reads
- [security] Tool “get_application_insights” rewrote its description, which is the text the model reads
- [security] Tool “get_company” rewrote its description, which is the text the model reads
- [security] Tool “list_interviews” rewrote its description, which is the text the model reads
- [security] Tool “list_my_cvs” rewrote its description, which is the text the model reads
- [security] Tool “list_referral_requests” rewrote its description, which is the text the model reads
- [security] Tool “list_referrer_requests” rewrote its description, which is the text the model reads
- [security] Tool “mark_referral_request_referred” rewrote its description, which is the text the model reads
- [security] Tool “match_cv” rewrote its description, which is the text the model reads
- [security] Tool “release_referral_request” rewrote its description, which is the text the model reads
- [security] Tool “request_cv_changes” rewrote its description, which is the text the model reads
- [security] Tool “save_interview_retro” rewrote its description, which is the text the model reads
- [security] Tool “update_application” rewrote its description, which is the text the model reads
- [functional improvement] Stability: unverified → 0.03
- [cosmetic] “search_jobs” reworded the description of “response_format”

### 2026-11-03 (score 65)

First indexed and scored.

## MCP tools (45)

### `search_jobs` (~305 tokens)

Search tech jobs in Vietnam

Search open tech jobs at companies hiring in Vietnam, refreshed hourly by techjobs.vn. Use when the user looks for jobs by role, skill, seniority, city or company. Returns the best matches, newest first, each with a techjobs.vn link to share with the user.

Input parameters:

- `city` (string): hcm = Ho Chi Minh City, hanoi = Hà Nội; remote covers remote-vn and remote-global.
- `company` (string): Company slug or exact name, e.g. "grab" or "OPSWAT".
- `limit` (integer): Maximum jobs to return (default 10): up to 10 without sign-in, 50 when signed in.
- `page` (integer): Page of `limit` results, starting at 1; up to page 3 without sign-in.
- `posted_within_days` (integer): Only jobs first posted within this many days.
- `query` (string): Free-text words matched against job title, company and skills, e.g. "react frontend". Title matches rank first.
- `response_format` (string): concise (default) returns title, company and link; detailed adds cities, seniority, work mode, stated pay and skills.
- `seniority` (array): Seniority levels, any of: intern, junior, mid, senior, lead.
- `skills` (array): Every listed skill must be required by the job, e.g. ["react", "typescript"].

Output parameters:

- `jobs` (array)
- `notice` (string)
- `total` (integer)

### `get_job` (~117 tokens)

Get a tech job's summary

Short summary, key skills and techjobs.vn link of one open job, by its id from search_jobs or its techjobs.vn link. Use when the user wants to know more about a specific job. Share the link so the user can read the full description and apply.

Input parameters:

- `id` (integer): Job id from search_jobs results. Pass either id or url.
- `url` (string): techjobs.vn job link, e.g. https://techjobs.vn/companies/grab/jobs/12345. Pass either id or url.

Output parameters:

- `cities` (array): Every city slug the job is posted for; city is the first.
- `city` (string|null)
- `company` (string)
- `company_slug` (string)
- `employment_type` (string|null)
- `id` (integer)
- `key_skills` (array)
- `location` (string|null)
- `nice_to_have_skills` (array)
- `posted_at` (string|null)
- `referral_available` (boolean)
- `referrers_count` (integer)
- `salary`: Pay stated in the JD (gross/net often unsaid); null when not stated.
- `seniority` (string|null)
- `summary` (string)
- `title` (string)
- `url` (string)
- `workplace_type` (string|null): remote, hybrid or onsite; null when the JD does not say.
- `years_of_experience` (string|null)

### `search_companies` (~138 tokens)

Search companies hiring in Vietnam

Find companies tracked by techjobs.vn by name, with their number of open jobs and referrers. Use to look up a company's slug, then get_company for its profile or search_jobs for its jobs.

Input parameters:

- `limit` (integer): Maximum companies to return (default 10): up to 10 without sign-in, 50 when signed in.
- `page` (integer): Page of `limit` results, starting at 1; up to page 3 without sign-in.
- `query` (string): Part of the company name or slug, e.g. "grab". Omit to list companies with the most open jobs.

Output parameters:

- `companies` (array)
- `notice` (string)
- `total` (integer)

### `get_company` (~125 tokens)

Get a company's profile

Profile of a company hiring in Vietnam: introduction, industry, size, tech stack, number of open jobs on techjobs.vn, whether employees there refer candidates and, for a few companies, a positive TechJobs estimate from public sources (not an official ranking; no label means not enough public data, never that the company is bad). Use when the user asks about an employer; find the slug with search_companies, and list its open jobs with search_jobs (company).

Input parameters:

- `slug` (string, required): Company slug from search_jobs or search_companies, e.g. "grab".

Output parameters:

- `company_type` (string|null)
- `country` (string|null)
- `highlights` (array)
- `industry` (string|null)
- `name` (string)
- `open_jobs` (integer)
- `overtime_policy` (string|null)
- `rating`: TechJobs' estimate from public sources, not an official ranking. Null when there is not enough public data or the company does not qualify: null says nothing about the company being good or bad.
- `referral_program` (object)
- `size` (string|null)
- `slug` (string)
- `summary_vi` (string|null): Short introduction in Vietnamese.
- `tech_stack` (array)
- `url` (string)
- `website` (string|null)
- `working_days` (string|null)

### `search_programs` (~265 tokens)

Search internship and student programs in Vietnam

Find internship, fresher, graduate, management-trainee and scholarship programs for students and new graduates in Vietnam, in tech and other fields: whether applications are open, the deadline and the career field. Open programs come first, soonest deadline first. Use when a student asks about internships or programs; for individual job postings use search_jobs. Then get_program for one program's details.

Input parameters:

- `field` (string): Career field, one of: tech, finance, audit-consulting, business, operations, engineering, hr, general.
- `limit` (integer): Maximum programs to return (default 10): up to 10 without sign-in, 50 when signed in.
- `page` (integer): Page of `limit` results, starting at 1; up to page 3 without sign-in.
- `query` (string): Part of the program name, company or track, accents optional, e.g. "kiem toan" or "backend".
- `status` (string): open = accepting applications now, upcoming = opens soon, closed = reopens on a later cycle, unknown = no dates yet.
- `type` (string): Kind of program, one of: internship, fresher, graduate, management_trainee, ambassador, scholarship.

Output parameters:

- `notice` (string)
- `programs` (array)
- `total` (integer)

### `search_remote_jobs` (~172 tokens)

Search remote jobs at foreign companies

Remote roles at foreign companies (techjobs.vn /remote), by default only those someone living in Vietnam can take. For companies hiring in Vietnam use search_jobs.

Input parameters:

- `limit` (integer): Maximum jobs to return (default 10): up to 10 without sign-in, 50 when signed in.
- `open_to_vietnam` (boolean): Default true: only roles someone in Vietnam can take. false adds country-restricted ones.
- `page` (integer): Page of `limit` results, starting at 1; up to page 3 without sign-in.
- `query` (string): Words in title, company or location, e.g. "backend" or "apac".
- `role` (string): Part of the role name, e.g. "Backend" or "Product Manager".

Output parameters:

- `jobs` (array)
- `notice` (string)
- `total` (integer)

### `get_program` (~88 tokens)

Get an internship or student program

Details of one internship, fresher, graduate or scholarship program in Vietnam: overview, who can apply, benefits, selection process, locations, deadlines of each cycle and the official application link. Use after search_programs when the user wants to know more about a program.

Input parameters:

- `slug` (string, required): Program slug from search_programs, e.g. "ey-vietnam-summer-internship".

Output parameters:

- `apply_url` (string): The program's official page, where applications are submitted.
- `benefits` (array)
- `company` (string)
- `confidence`
- `cycles` (array)
- `duration` (string|null)
- `eligibility` (array)
- `faq` (array)
- `fields` (array)
- `locations` (array)
- `name` (string)
- `overview` (string|null): Researched overview in Vietnamese; null when no details were researched yet.
- `selection_process` (array)
- `slug` (string)
- `sources` (array): Pages the facts were taken from.
- `status` (string)
- `stipend` (string|null)
- `tracks` (array)
- `type` (string)
- `updated_at` (string|null)
- `url` (string): techjobs.vn page for this program; share this link.

### `list_my_cvs` (~78 tokens)

List my CVs

Requires techjobs.vn sign-in. Lists the signed-in user's CVs on techjobs.vn: the primary CV (used for job matching and referral requests) and their other CVs, each with a link to open it. Use it to pick a cv_id; read a CV's content with get_cv and rate it with score_cv.

Output parameters:

- `other_cvs` (array)
- `primary_cv`: The CV chính: the one CV used for job matching and sent with referral requests.

### `score_cv` (~104 tokens)

Score my CV

Requires techjobs.vn sign-in. Gives the basic score (0–100, fixed rules, no AI) of the signed-in user's primary CV, or of one of their other CVs by cv_id, with the score per criterion and short suggestions to fix, plus a link to edit the CV on techjobs.vn.

Input parameters:

- `cv_id` (string): Id of one of the user's other CVs, from list_my_cvs. Omit to score the primary CV.

Output parameters:

- `band` (string): great ≥85, good ≥70, fair ≥50.
- `capped`: A missing basic (e.g. email) holds the score at this cap until it is fixed.
- `criteria` (array)
- `cv` (object)
- `score` (integer): Basic score (Điểm cơ bản), 0–100, from fixed rules.
- `suggestions` (array): Open issues, biggest point loss first.

### `get_cv` (~112 tokens)

Read one of my CVs

Requires techjobs.vn sign-in. Reads the sections of the user's primary CV (or of another of their CVs by cv_id): language, name, contact details, headline, summary, experience, projects, achievements, skills, education, certifications, languages, in the shape update_cv_variant takes. Read a CV with this before rewriting it with update_cv_variant.

Input parameters:

- `cv_id` (string): Id of one of the user's other CVs, from list_my_cvs. Omit to read the primary CV.

### `create_cv_variant` (~203 tokens)

Copy my CV into a new editable CV

Requires techjobs.vn sign-in. Copies the user's primary CV (or another of their CVs by from_cv_id) into a new editable CV on techjobs.vn (at most 5 per user on Free, 20 on Pro), optionally tailored to one job by job_id. Returns the copy's content and a link for the user to review it. The primary CV is not changed by this tool. Then use update_cv_variant to edit it, and set_primary_cv if the user wants it as their primary CV.

Input parameters:

- `from_cv_id` (string): Id of one of the user's other CVs to copy, from list_my_cvs. Omit to copy the primary CV.
- `job_id` (integer): Job id from search_jobs or get_job: makes a copy tailored to that job (Bản theo job).
- `title` (string, required): Name of the new CV as the user sees it, e.g. "CV Backend — Grab".

### `update_cv_variant` (~210 tokens)

Edit one of my CVs

Requires techjobs.vn sign-in. Saves new content into one of the user's editable CVs (made with create_cv_variant): headline, summary, experience, projects, skills and other sections. Each section given replaces that section (name, email, phone, location, links, language, title and the template and accent color too); the rest stays. The primary CV (CV chính) is not changed by this tool (see set_primary_cv). Returns a link where the user reviews the saved CV.

Input parameters:

- `changes` (object): Only the fields and sections to change, in the CV's language. Change name, email, phone, location and links only to values the user gave you.
- `cv_id` (string, required): Id of the CV to edit: one made by create_cv_variant, or another CV from list_my_cvs.
- `design` (object): Look of the CV; what is not given stays.
- `title` (string): New name of the CV in the user's list.

### `set_primary_cv` (~142 tokens)

Make one of my CVs the primary CV

Requires techjobs.vn sign-in. Makes one of the user's editable CVs their primary CV (CV chính), used for matching and referrals. Replaces the current primary CV file, which is not kept: call it only when the user asked. If a primary CV exists, the first call changes nothing and says what would be replaced; ask the user, then repeat with confirm_replace true.

Input parameters:

- `confirm_replace` (boolean): true only after the user agreed, in their own reply, to replace their current primary CV file.
- `cv_id` (string, required): Id of the editable CV to make the primary CV, from list_my_cvs or create_cv_variant.

### `delete_cv_variant` (~116 tokens)

Delete one of my CVs

Requires techjobs.vn sign-in. Moves one of the user's editable CVs to the trash (restorable for 30 days). Only when the user asked: the first call changes nothing and says what would go; ask the user, then repeat with confirm_delete true. The primary CV file is never deleted.

Input parameters:

- `confirm_delete` (boolean): true only after the user agreed, in their own reply, to delete this CV.
- `cv_id` (string, required): Id of the editable CV to delete, from list_my_cvs.

### `list_applications` (~124 tokens)

List my tracked applications

Requires techjobs.vn sign-in. Lists the jobs in the signed-in user's Apply Tracker on techjobs.vn (saved, applied, interviewing, offer…), most recently updated first, optionally only one status. Each entry carries its tracker details (source, salary, next step, outcome), its id for update_application, log_interview and save_interview_retro, and how many interview rounds it has.

Input parameters:

- `status` (string): Only entries in this Apply Tracker status, one of: wishlist, clicked, applied, screening, interviewing, offer, rejected, withdrawn, accepted.

Output parameters:

- `applications` (array)
- `total` (integer)
- `tracker_url` (string)

### `list_referral_requests` (~64 tokens)

List my referral requests

Requires techjobs.vn sign-in. Lists the referral requests the signed-in user sent on techjobs.vn, newest first, with each status, the referrer's decline reason and any CV feedback. Requests the user received as a referrer are in list_referrer_requests.

Output parameters:

- `requests` (array)
- `requests_url` (string)
- `total` (integer)

### `match_cv` (~104 tokens)

Score my CV against a job

Requires techjobs.vn sign-in. Scores how well the signed-in user's primary CV fits one open job (0–100, rule-based), with the required skills they match and miss. Limited to 30 matches per day per account, so use it for a job the user names; score_cv rates the CV itself and suggest_jobs_for_me finds jobs that fit it.

Input parameters:

- `job_id` (integer, required): Job id from search_jobs, get_job or suggest_jobs_for_me results.

Output parameters:

- `detailed_review_url` (string): Job page tab where the user can ask for a detailed AI review.
- `job` (object)
- `matched_must_have_skills` (array)
- `matched_nice_to_have_skills` (array)
- `missing_must_have_skills` (array)
- `missing_nice_to_have_skills` (array)
- `primary_cv` (object): The CV chính that was scored: the one CV used for matching and referrals.
- `reasons` (array)
- `score` (integer): Rule-based fit, 0–100.

### `suggest_jobs_for_me` (~81 tokens)

Suggest jobs for my CV

Requires techjobs.vn sign-in. Suggests open jobs that fit the signed-in user's primary CV, best fit first, each with a 0–100 fit score and a techjobs.vn link (same ranking as techjobs.vn/for-you).

Input parameters:

- `limit` (integer): How many jobs to suggest (default 10, at most 50).

Output parameters:

- `for_you_url` (string): The same suggestions on techjobs.vn.
- `jobs` (array)
- `total` (integer)

### `track_job` (~881 tokens)

Track a job in my Apply Tracker

Requires techjobs.vn sign-in. Adds a techjobs.vn job to the signed-in user's Apply Tracker or moves it to another status (e.g. applied, interviewing), optionally with a note and tracker details (source, salary, next step, outcome reason). Calling it again with the same arguments changes nothing. The change shows on techjobs.vn right away. To edit an entry by id (including jobs added by hand), use update_application.

Input parameters:

- `clear_fields` (array): Details to remove from the entry, by name, e.g. ["salary_min", "excitement"].
- `cover_letter` (boolean): Whether a cover letter was sent. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `cv_variant_id` (string): Id of the CV (from list_my_cvs) sent with this application. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `excitement` (integer): How much the user wants the job, 1-5. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `job_id` (integer, required): Job id from search_jobs, get_job, list_applications or suggest_jobs_for_me.
- `location` (string): Job location. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `next_action` (string): The user's next step, e.g. "Follow up with the recruiter". Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `next_action_at` (string): ISO date or datetime the next step is due, e.g. 2026-10-12. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `note` (string): The user's own note. Replaces the current note; omit to keep it, empty string to clear it.
- `outcome_note` (string): Free text about the outcome. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `outcome_reason` (string): Why the process ended (rejected, withdrawn, accepted…). Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `recruiter_name` (string): Recruiter or hiring contact. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `salary_currency` (string): Currency of the salary. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `salary_max` (integer): Highest salary offered or expected. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `salary_min` (integer): Lowest salary offered or expected. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `salary_period` (string): month or year. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `source_channel` (string): Where the user found or applied to the job. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `status` (string, required): Apply Tracker status: wishlist (saved), clicked (opened the apply link), applied, screening, interviewing, offer, rejected, withdrawn, accepted (took the offer).
- `work_mode` (string): onsite, hybrid or remote. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).

### `update_application` (~856 tokens)

Update a tracked application

Requires techjobs.vn sign-in. Edits one entry of the signed-in user's Apply Tracker by its id: status, note and tracker details (source, CV used, salary, work mode, excitement, next step and its due date, outcome reason). Only the fields you pass change. Take the id from list_applications; to add a job or only move its status, track_job is simpler.

Input parameters:

- `application_id` (integer, required): Apply Tracker entry id: the `id` of an entry from list_applications or track_job.
- `clear_fields` (array): Details to remove from the entry, by name, e.g. ["salary_min", "excitement"].
- `cover_letter` (boolean): Whether a cover letter was sent. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `cv_variant_id` (string): Id of the CV (from list_my_cvs) sent with this application. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `excitement` (integer): How much the user wants the job, 1-5. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `location` (string): Job location. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `next_action` (string): The user's next step, e.g. "Follow up with the recruiter". Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `next_action_at` (string): ISO date or datetime the next step is due, e.g. 2026-10-12. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `note` (string): The user's own note. Replaces the current note; omit to keep it, empty string to clear it.
- `outcome_note` (string): Free text about the outcome. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `outcome_reason` (string): Why the process ended (rejected, withdrawn, accepted…). Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `recruiter_name` (string): Recruiter or hiring contact. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `salary_currency` (string): Currency of the salary. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `salary_max` (integer): Highest salary offered or expected. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `salary_min` (integer): Lowest salary offered or expected. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `salary_period` (string): month or year. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `source_channel` (string): Where the user found or applied to the job. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `status` (string): Move the entry to this status. Omit to keep the current status.
- `work_mode` (string): onsite, hybrid or remote. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).

### `list_interviews` (~145 tokens)

List my interview rounds

Requires techjobs.vn sign-in. Lists the interview rounds in the signed-in user's Apply Tracker with their time, format, link and result, optionally for one application (application_id) or only the upcoming ones (upcoming_only, next 14 days unless days is set). Add or change a round with log_interview.

Input parameters:

- `application_id` (integer): Only the rounds of this Apply Tracker entry (id from list_applications).
- `days` (integer): With upcoming_only: how many days ahead. Default 14.
- `upcoming_only` (boolean): Only scheduled rounds from now on, soonest first. Use it for "what interviews do I have coming up".

Output parameters:

- `interviews` (array)
- `total` (integer)
- `tracker_url` (string)

### `log_interview` (~531 tokens)

Log or schedule an interview round

Requires techjobs.vn sign-in. Adds an interview round to a tracked application (type, date and time, format, link, interviewers, preparation notes), or edits one with interview_id: mark it done, passed or failed, reschedule or cancel it. Adding the same type and time twice edits that round instead of duplicating it. Shows on techjobs.vn right away.

Input parameters:

- `application_id` (integer, required): Apply Tracker entry id from list_applications or track_job.
- `clear_fields` (array): Fields of the round to remove, by name, e.g. ["scheduled_at"].
- `duration_min` (integer): Length in minutes. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `format` (string): phone, video, onsite or async. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `interview_id` (integer): Edit this round (id from list_interviews). Omit to add a new round.
- `interviewers` (string): Names and roles. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `location_or_link` (string): Address or meeting link. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `prep_note` (string): The user's preparation notes. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `result` (string): pending, passed or failed.
- `round_no` (integer): Round number; omit to use the next one.
- `scheduled_at` (string): ISO date and time, e.g. 2026-10-12T09:00+07:00 (include the offset, or pass timezone). Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty st…
- `status` (string): scheduled, done, cancelled or no_show.
- `timezone` (string): IANA zone such as Asia/Ho_Chi_Minh. Omit to keep the current value; to remove it, name it in clear_fields (text can also be cleared with an empty string).
- `type` (string): Kind of round. Required when adding a new round.

### `save_interview_retro` (~431 tokens)

Save lessons learned from an interview

Requires techjobs.vn sign-in. Records the user's lessons learned for an interview round, or for a whole application: questions asked, what went well, what to improve, red flags, what to prepare next, a 1-5 confidence and improvement tags. There is one entry per round; saving again updates it, and only the fields you pass change. Save what the user said; the round's time and result belong in log_interview.

Input parameters:

- `application_id` (integer, required): Apply Tracker entry id from list_applications.
- `clear_fields` (array): Fields to remove, by name, e.g. ["red_flags"]. Tags are cleared by passing tags: [].
- `confidence` (integer): How the user feels it went, 1-5. Omit to keep it; clear it with clear_fields.
- `interview_id` (integer): The round these lessons are about (id from list_interviews). Omit for lessons about the whole application.
- `my_answers` (string): How the user answered, in their own words. Omit to keep the current text; an empty string clears it.
- `next_prep` (string): What to prepare before the next round. Omit to keep the current text; an empty string clears it.
- `questions_asked` (string): The questions the interviewers asked. Omit to keep the current text; an empty string clears it.
- `red_flags` (string): Worries about the company or role. Omit to keep the current text; an empty string clears it.
- `surprises` (string): Anything unexpected about the company, role or process. Omit to keep the current text; an empty string clears it.
- `tags` (array): Areas to improve (replaces the current tags). Pass [] to clear.
- `to_improve` (string): What to do better next time. Omit to keep the current text; an empty string clears it.
- `went_well` (string): What went well. Omit to keep the current text; an empty string clears it.

### `get_application_insights` (~94 tokens)

My application funnel and lessons

Requires techjobs.vn sign-in. How the signed-in user's job search is going, from their own Apply Tracker (not market benchmarks): funnel and conversion, days per stage, response and interview rates by source and CV, where each application ended, stalled entries, overdue next steps, outcome reasons, repeated lessons and saved snapshots. For the entries themselves use list_applications; to keep today's numbers use save_insights_snapshot.

### `save_insights_snapshot` (~93 tokens)

Save a snapshot of my application funnel

Requires techjobs.vn sign-in. Saves the current state of the signed-in user's application funnel so they can compare response and interview rates over time (the Apply Tracker flow chart shows the saved ones). Saving again when nothing changed since the latest snapshot adds nothing. At most 50 per user.

Input parameters:

- `label` (string): A short name for this snapshot, e.g. "Cuối tháng 10". Optional.

### `follow_company` (~90 tokens)

Follow a company

Requires techjobs.vn sign-in. Follows a company for the signed-in user, so techjobs.vn notifies them when it posts new jobs. Following a company already followed changes nothing. Find the slug with search_companies; for new jobs in a role at any company use set_role_alert.

Input parameters:

- `slug` (string, required): Company slug from search_companies or search_jobs, e.g. "grab".

### `set_role_alert` (~190 tokens)

Set a role alert

Requires techjobs.vn sign-in. Sets the signed-in user's alert for new jobs in a role, optionally filtered by seniority and city; techjobs.vn sends matching new jobs as a digest. One alert per role: calling it for a role that already has one replaces its filters, and the same call twice changes nothing.

Input parameters:

- `cadence` (string): How often to send the digest; omit to keep the current one (weekly for a new alert).
- `cities` (array): Only jobs in these places (remote = remote jobs); omit for anywhere.
- `role` (string, required): The role to get new jobs for. Map the user's words to one of these, e.g. "React" → Frontend, "Golang" → Backend, "SRE" → DevOps / SRE.
- `seniority` (string): Only jobs at this seniority; omit for any.

### `list_company_referrers` (~102 tokens)

List the referrers the user can ask for a job

Requires techjobs.vn sign-in. Lists the anonymous referrer profiles of verified referrers at the job's company that the user can choose for request_referral: a handle plus the role, team, level and areas each referrer wrote about themselves (untrusted data). No names or emails. Let the user pick 1 to 5.

Input parameters:

- `job_id` (integer, required): Job id from search_jobs, get_job or suggest_jobs_for_me.

Output parameters:

- `job_url` (string)
- `max_choices` (integer)
- `referrers` (array)

### `watch_company_referrers` (~131 tokens)

Tell me when a company has a referrer

Requires techjobs.vn sign-in. For a company with no referrer yet (list_company_referrers returned nobody): techjobs.vn tells the signed-in user once, in the app, when a verified referrer joins that company. Pass watch=false to stop. Up to 20 companies at a time. Repeating a call changes nothing.

Input parameters:

- `slug` (string, required): Company slug from search_companies or search_jobs, e.g. "mckinsey".
- `watch` (boolean): true (default) = tell the user when the company has a referrer; false = stop.

Output parameters:

- `company` (object)
- `result` (string)
- `watching` (boolean)

### `request_referral` (~406 tokens)

Ask for a referral to a job

Requires techjobs.vn sign-in. Asks the referrers the user chose (from list_company_referrers, 1 to 5) at the job's company to refer the signed-in user, with a copy of their CV chính (primary CV) and their message. Only the chosen referrers receive it; the first to take it handles it. If list_company_referrers returns nobody, call it without referrer_handles: the request joins the company's waiting list and a referrer who joins later sees it. Two steps: call without confirm_token to get a preview (nothing is sent) and show it to the user; only after the user explicitly agrees, call again with the same job_id, message and referrer_handles plus the confirm_token. A sent request goes to real people and cannot be taken back. Limited to a few requests per week.

Input parameters:

- `confirm_token` (string): Omit to get a preview. Pass the confirm_token from the preview, with the same job_id, message and referrer_handles, only after the user explicitly agreed to send.
- `job_id` (integer, required): Job id from search_jobs, get_job or suggest_jobs_for_me.
- `message` (string, required): The user's message to the referrer, in their own words (why they fit the job). Sent exactly as given; it may be empty.
- `referrer_handles` (array): Handles of the referrers the user chose from list_company_referrers (1 to 5). Only these referrers receive the request; the first one to take it handles it. Omit it only when list_company_referrers r…
- `share_outcome` (boolean): true = the referrer who refers the user is told later, without details, when the user records being contacted, interviewing, an offer or the job in their tracker (never rejections). Default false; as…

Output parameters:

- `confirm_token` (string): Valid 10 minutes, for this user, job, message and chosen referrers.
- `preview` (object): What would be sent (result preview). Nothing was sent yet.
- `request` (object): The request that was sent (result sent).
- `requests_url` (string): Where the user follows their referral requests on techjobs.vn.
- `result` (string)

### `register_as_referrer` (~155 tokens)

Register as a referrer at a company

Requires techjobs.vn sign-in. Use when the user says they work at a company and want to refer candidates. Registers the signed-in user as a referrer for the company and sends a verification link to their work email; the email domain must belong to that company. They become a referrer only after clicking the link.

Input parameters:

- `company_slug` (string, required): Company slug from search_companies or get_company (the company the user works at).
- `note` (string): Optional note for the techjobs.vn team, e.g. which teams or roles the user can refer for.
- `work_email` (string, required): The user's own work email at that company (not Gmail/Yahoo). The verification link is sent there.

Output parameters:

- `company` (object)
- `registrations_url` (string): Where the user sees their referrer registrations on techjobs.vn.
- `result` (string)
- `work_email` (string)

### `list_referrer_registrations` (~86 tokens)

List my referrer registrations

Requires techjobs.vn sign-in. Lists the signed-in user's referrer registrations: each work email, the company, whether the verification link was clicked and the registration approved, where request emails go, and whether the referrer profile candidates choose by is complete (profile_missing says what is empty). Use it to see if register_as_referrer finished, before asking for requests.

Output parameters:

- `registrations` (array)
- `registrations_url` (string)
- `total` (integer)

### `set_referrer_email_notifications` (~151 tokens)

Choose where referrer request emails go

Requires techjobs.vn sign-in. For one of the user's referrer registrations, chooses whether new referral request emails go to their techjobs.vn account email or to the work email, and optionally whether they arrive one per request or as one daily summary. Calling it again with the same values changes nothing.

Input parameters:

- `daily_digest` (boolean): true = one summary email at 09:00 ICT instead of one per request; false = one per request. Omit to keep.
- `registration_id` (integer, required): Registration id from list_referrer_registrations.
- `to_account_email` (boolean, required): true = email new requests to the techjobs.vn account email; false = to the work email.

Output parameters:

- `daily_digest` (boolean|null): The frequency set by this call; null when it was left unchanged.
- `registration_id` (integer)
- `registrations_url` (string)
- `to_account_email` (boolean)

### `update_referrer_profile` (~162 tokens)

Edit my referrer profile

Requires techjobs.vn sign-in. Saves the anonymous referrer profile candidates see when they choose which referrers to ask: role, team, level and the role areas the user can refer for. The profile never shows the user's name, email or work email; text with emails, phone numbers, links or @handles is refused. Omitted fields are cleared, so send the whole profile.

Input parameters:

- `areas` (array): Role areas the referrer can refer for.
- `level` (string)
- `registration_id` (integer, required): Registration id from list_referrer_registrations.
- `team` (string): Optional team, e.g. "Payments".
- `title` (string): The referrer's role, e.g. "Backend Engineer".

Output parameters:

- `profile` (object): The anonymous referrer profile candidates see when they choose referrers; no name or email is shown.
- `registration_id` (integer)
- `registrations_url` (string)

### `set_referrer_availability` (~137 tokens)

Pause referral requests or cap how many I hold

Requires techjobs.vn sign-in. For one of the user's referrer registrations: pause or resume new referral requests (while paused, candidates do not see the user's referrer profile) and set how many requests the user may hold at once (taken, not finished). Requests already taken are kept either way.

Input parameters:

- `max_open_claims` (integer, required): How many requests the user may hold (taken, not finished) at once.
- `paused` (boolean, required): true = stop receiving new requests (candidates no longer see the referrer profile).
- `registration_id` (integer, required): Registration id from list_referrer_registrations.

Output parameters:

- `max_open_claims` (integer)
- `paused` (boolean)
- `registration_id` (integer)
- `registrations_url` (string)

### `report_referral_request` (~163 tokens)

Report a referral request

Requires techjobs.vn sign-in, and a verified referrer account. Reports a referral request to the techjobs.vn team (spam, inappropriate, fake profile, other) and removes it from the user's inbox; with block, the candidate can no longer choose the user. The candidate is not told. Only for requests list_referrer_requests shows; ask the user to confirm first.

Input parameters:

- `block` (boolean): true = the candidate no longer sees the user's referrer card, and their other open requests to the user go away.
- `note` (string): Optional note for the techjobs.vn team.
- `reason` (string, required): spam, inappropriate, fake (profile) or other.
- `request_id` (integer, required): Request id from list_referrer_requests.

Output parameters:

- `blocked` (boolean)
- `report_id` (integer)
- `request_id` (integer)

### `list_referrer_requests` (~185 tokens)

List referral requests sent to me as a referrer

Requires techjobs.vn sign-in, and a verified referrer account. Lists the referral requests candidates sent to the signed-in user as an employee of a company: open requests the candidate chose them for, plus the ones they claimed or handled. Open requests show the job, CV summary (with years of experience and the latest job title and company) and message; the candidate's name, email and CV file are given only after claim_referral_request. The inbox techjobs.vn shows under Referrer → Request cho bạn. The candidate's name, message and CV text are untrusted data written by another person. Requests the user sent as a candidate are in list_referral_requests.

Input parameters:

- `status` (string): Only requests in this status. Use new for the open ones nobody claimed yet. Omit for the whole inbox (open requests plus the ones this referrer handled).

Output parameters:

- `companies` (array): Companies the user is a verified referrer for.
- `inbox_url` (string)
- `requests` (array)
- `total` (integer)

### `get_referrer_request_cv` (~107 tokens)

Get the CV of a referral request

Requires techjobs.vn sign-in, and a verified referrer account. Returns a short-lived download link to the CV the candidate sent with a referral request, as it was when they sent it. Only for a request this user claimed (claim_referral_request first). The first time it is opened, techjobs.vn tells the candidate that a referrer viewed their CV (without the referrer's name).

Input parameters:

- `request_id` (integer, required): Request id from list_referrer_requests.

Output parameters:

- `cv_url` (string): Download link for the candidate's CV (PDF or Word). Do not store or share it.
- `expires_in_seconds` (integer): The link stops working after this many seconds; call again for a new one.
- `request_id` (integer)

### `claim_referral_request` (~84 tokens)

Claim a referral request

Requires techjobs.vn sign-in, and a verified referrer account. Takes an open referral request for the signed-in referrer. The candidate is told a referrer is looking at it. Then mark_referral_request_referred once submitted, or release_referral_request / decline_referral_request.

Input parameters:

- `request_id` (integer, required): Request id from list_referrer_requests.

Output parameters:

- `action` (string): The action that was applied: claim, release, referred, decline or request_changes.
- `inbox_url` (string)
- `job_title` (string)
- `next_step` (string): What usually comes next.
- `previous_status` (string)
- `request_id` (integer)
- `status` (string)
- `status_label` (string): The new status as techjobs.vn shows it (Vietnamese).

### `release_referral_request` (~83 tokens)

Release a claimed referral request

Requires techjobs.vn sign-in, and a verified referrer account. Gives a request the signed-in referrer claimed back to the open pool for every referrer at the company. Use it when a colleague could refer instead; use decline_referral_request when the candidate is not a fit.

Input parameters:

- `request_id` (integer, required): Request id from list_referrer_requests.

Output parameters:

- `action` (string): The action that was applied: claim, release, referred, decline or request_changes.
- `inbox_url` (string)
- `job_title` (string)
- `next_step` (string): What usually comes next.
- `previous_status` (string)
- `request_id` (integer)
- `status` (string)
- `status_label` (string): The new status as techjobs.vn shows it (Vietnamese).

### `mark_referral_request_referred` (~86 tokens)

Mark a referral request as referred

Requires techjobs.vn sign-in, and a verified referrer account. Marks a claimed request as referred, meaning the referral was submitted in the company's own system. The candidate is told to watch their email for the company. Only for a request this referrer claimed, after the submission really happened.

Input parameters:

- `request_id` (integer, required): Request id from list_referrer_requests.

Output parameters:

- `action` (string): The action that was applied: claim, release, referred, decline or request_changes.
- `inbox_url` (string)
- `job_title` (string)
- `next_step` (string): What usually comes next.
- `previous_status` (string)
- `request_id` (integer)
- `status` (string)
- `status_label` (string): The new status as techjobs.vn shows it (Vietnamese).

### `decline_referral_request` (~107 tokens)

Decline a referral request

Requires techjobs.vn sign-in, and a verified referrer account. Declines a request because the candidate is not a fit. The candidate is told, by email too, with the reason if one is given. If only the CV needs work use request_cv_changes; for spam use report_referral_request.

Input parameters:

- `decline_reason` (string): Optional reason shown to the candidate, up to 300 characters.
- `request_id` (integer, required): Request id from list_referrer_requests.

Output parameters:

- `action` (string): The action that was applied: claim, release, referred, decline or request_changes.
- `inbox_url` (string)
- `job_title` (string)
- `next_step` (string): What usually comes next.
- `previous_status` (string)
- `request_id` (integer)
- `status` (string)
- `status_label` (string): The new status as techjobs.vn shows it (Vietnamese).

### `request_cv_changes` (~201 tokens)

Ask a candidate to fix their CV

Requires techjobs.vn sign-in, and a verified referrer account. Asks the candidate to fix their CV before the request goes on. The candidate is notified with the tags and note given and can send a fixed CV back. Use it instead of decline_referral_request when the candidate fits but the CV does not show it.

Input parameters:

- `feedback_note` (string): Optional note for the candidate, up to 300 characters.
- `feedback_tags` (array): Required: 1 to 3 of missing_keywords (Thiếu từ khoá theo mô tả job); missing_impact (Thiếu số liệu hoặc kết quả cụ thể); seniority_mismatch (Kinh nghiệm chưa khớp level của job); too_long_or_messy (C…
- `request_id` (integer, required): Request id from list_referrer_requests.

Output parameters:

- `action` (string): The action that was applied: claim, release, referred, decline or request_changes.
- `inbox_url` (string)
- `job_title` (string)
- `next_step` (string): What usually comes next.
- `previous_status` (string)
- `request_id` (integer)
- `status` (string)
- `status_label` (string): The new status as techjobs.vn shows it (Vietnamese).

### `resubmit_referral_request` (~88 tokens)

Send a fixed CV back to the referrers

Requires techjobs.vn sign-in. For a referral request the signed-in user sent and a referrer asked to change (status needs_changes): sends the user's current primary CV (CV chính) back to the referrers at the company. This emails the referrers.

Input parameters:

- `request_id` (integer, required): Id of one of the user's own requests, from list_referral_requests.

Output parameters:

- `action` (string): The action that was applied: resubmit or confirm_contact.
- `contact_answer`
- `request_id` (integer)
- `status` (string|null): The request's new status, when the action changed it.
- `status_label` (string|null)
- `tracker_url` (string)

### `confirm_referral_contact` (~95 tokens)

Record whether the company got in touch

Requires techjobs.vn sign-in. For a referral request the signed-in user sent that a referrer already referred (status referred): records whether the company got in touch with the user. Saving again updates the answer.

Input parameters:

- `answer` (string, required): yes = the company contacted the user, no = it did not.
- `request_id` (integer, required): Id of one of the user's own requests, from list_referral_requests.

Output parameters:

- `action` (string): The action that was applied: resubmit or confirm_contact.
- `contact_answer`
- `request_id` (integer)
- `status` (string|null): The request's new status, when the action changed it.
- `status_label` (string|null)
- `tracker_url` (string)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/vn-techjobs-techjobs/techjobs#diagnostics

## Score history

- 2026-11-05: 66
- 2026-11-04: 66
- 2026-11-03: 65

## Common questions

### What is the TechJobs.vn MCP server?

TechJobs.vn is an MCP server listed in the public MCP registry as vn.techjobs/techjobs. Search open tech jobs and companies hiring in Vietnam, refreshed hourly. No key needed to search. This page covers its hosted endpoint (https://techjobs.vn/mcp).

### Is the TechJobs.vn MCP server safe to use?

TechJobs.vn scores 66 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the TechJobs.vn MCP server expose?

TechJobs.vn exposes 45 tools: search_jobs, get_job, search_companies, get_company, search_programs, and 40 more. Their descriptions and schemas cost roughly 8,388 tokens of context every time the server is loaded.

### Does the TechJobs.vn MCP server require authentication?

No. We connected to TechJobs.vn without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the TechJobs.vn MCP server still maintained?

TechJobs.vn is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://techjobs.vn/mcp
- Website: https://techjobs.vn/developers
- Changelog RSS feed: https://verifymcp.io/servers/vn-techjobs-techjobs/techjobs.xml
- Changelog JSON feed: https://verifymcp.io/servers/vn-techjobs-techjobs/techjobs.json
- HTML version of this page: https://verifymcp.io/servers/vn-techjobs-techjobs/techjobs
