cv.json — open CV data

Search people open to work and fetch their machine-readable cv.json, from any AI assistant.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
73%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~825Tokens (tool definitions)
~1.6 KBTypical response size
Moderate attention impact (0.64% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "cvjson": {
      "command": "npx",
      "args": [
        "cvjson-mcp"
      ]
    }
  }
}

Runnable packages

npmcvjson-mcp1.1.1stdio

Remote endpoints

https://freecv.org/api/mcpstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_open_to_work(query, skills, title, location, workType, ...)

Search FreeCV's LIVE index of real people who are open to work — by skills, role/title, location, and recruiter facets (work type, employment type, visa sponsorship, languages, minimum experience). Returns lean candidate cards (name, current role @ company, location, top skills, languages, and the full availability preferences) plus each person's cv.json URL and portfolio URL — enough to shortlist WITHOUT a fetch_cv per candidate. Call fetch_cv on a result to read the complete structured CV. Only already-public profiles are indexed; contact details are never returned (reach candidates via their portfolio).

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Free-text query matched across name, title, skills and experience (e.g. \"senior react developer\")."
    },
    "skills": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Specific skills to match, e.g. [\"React\",\"TypeScript\"]."
    },
    "title": {
      "type": "string",
      "description": "Target role/title, e.g. \"Product Designer\"."
    },
    "location": {
      "type": "string",
      "description": "Country-aware location filter, e.g. \"UK\" (matches London/Manchester), \"Berlin\", \"Gaza\"."
    },
    "workType": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "remote",
          "hybrid",
          "onsite"
        ]
      },
      "description": "Only candidates who OFFER one of these work arrangements."
    },
    "employmentType": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "full-time",
          "part-time",
          "contract",
          "internship",
          "temporary",
          "volunteer"
        ]
      },
      "description": "Only candidates open to one of these employment types."
    },
    "languages": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Languages the candidate must speak, e.g. [\"German\",\"Arabic\"]."
    },
    "sponsorship": {
      "type": "boolean",
      "description": "Filter by visa-sponsorship need: false = does NOT need sponsorship, true = needs it. Candidates who never answered are excluded from this filter."
    },
    "minYearsExp": {
      "type": "integer",
      "minimum": 1,
      "description": "Minimum years of experience."
    },
    "sort": {
      "type": "string",
      "enum": [
        "best",
        "fresh",
        "exp"
      ],
      "description": "Ranking: best match (default), most recently updated, or most experienced."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "Max results per page (default 20)."
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "description": "Result offset for paging through a large shortlist (default 0). Use with `total` in the response."
    }
  }
}
🟢fetch_cv(slug, url)

Fetch a person's cv.json — their full machine-readable CV — by FreeCV slug or livelink.cv URL. Returns structured JSON: basics, work, education, skills, languages, availability, ats, verification, i18n.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "The slug, e.g. \"ashley\" (from livelink.cv/ashley)."
    },
    "url": {
      "type": "string",
      "description": "Full cv.json URL (alternative to slug)."
    }
  }
}
🟢validate_cv(cvjson, slug, url)

Validate a cv.json document against the official cv.json schema. Provide the document (cvjson, object or JSON string) OR a slug/url to fetch and validate. Returns { valid, errors[] }.

Input Schema

{
  "type": "object",
  "properties": {
    "cvjson": {
      "description": "The cv.json document to validate (object or JSON string)."
    },
    "slug": {
      "type": "string",
      "description": "Fetch and validate this slug's live cv.json."
    },
    "url": {
      "type": "string",
      "description": "Fetch and validate this cv.json URL."
    }
  }
}
🟢get_cvjson_schema

Return the official cv.json JSON Schema (the format spec) — use it to understand or generate a compliant cv.json.

Input Schema

{
  "type": "object",
  "properties": {}
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools
verifiedversion not recorded4 tools