# Qualified.io MCP

> Qualified.io connects your AI agent directly to technical hiring workflows. You'll manage assessments, send candidate invitations, and retrieve detailed performance results without leaving your chat environment. Use tools like `list_assessments` to see active tests, or run `get_assessment_result_exhibit` to analyze a candidate's code immediately.

## Overview
- **Category:** developer-tools
- **Price:** Free
- **Tags:** technical-assessment, coding-tests, hiring-automation, candidate-evaluation, skills-testing

## Description

This Qualified.io MCP Server connects your AI agent right into your technical hiring pipeline. You can manage everything from setting up new coding tests to digging deep into candidate performance metrics—all without leaving your chat window.

*You'll find tools that let you control the full assessment lifecycle.* Use `list_assessments` to pull a list of every available assessment type, regardless of whether it’s currently active. Need details on one? Call `get_assessment` for all the settings related to a specific test.

To get started, you build the test with `create_assessment`, which initiates an entirely new coding assessment within the system. Once that's set up and you’ve checked the components using `list_challenges` or `get_challenge` for individual challenge details, you can make it live by calling `publish_assessment`. Don't forget to call `unpublish_assessment` when you need to pull it back offline.

You manage test visibility with archiving. You can move an existing assessment into a paused state using `archive_assessment`, and if you change your mind, you restore it—but only viewable again through `unarchive_assessment`. If an assessment needs updating without changing its core status, you've got the `update_assessment_result_review` tool to modify or refresh any pre-existing review document associated with a result.

*Controlling candidate participation is another big chunk of what this server handles.* To send out tests, your agent can invite candidates individually using `invite_candidates`, or you can manage whole groups by calling `list_assessment_cohorts` and sending bulk invites via `invite_candidates_via_cohort`. If a candidate drops out before starting, you use `cancel_invitation` to stop or revoke their specific test invitation. For managing the larger hiring flow, your agent pulls up all existing assessment groups using `list_assessment_cohorts`, letting you keep track of everyone in a particular hiring cycle.

*Analyzing what candidates actually do is where this server shines.* You pull the core data and overall score for any completed test by running `get_assessment_result`. For a comprehensive deep dive into performance, use `get_assessment_result_exhibit`; this retrieves detailed, structured exhibit data so you can analyze specific code quality points. To see how multiple people did against each other, your agent pulls up the scores and status for groups of completed tests using `list_assessment_results`. You even get a simple overview of all available challenges by calling `list_challenges`.

*Need to adjust a candidate's test status? No sweat.* If a candidate needs another shot at it, you use `schedule_retry_assessment_result` to reset their result for a later attempt. Conversely, if they cheated or the test was invalid, you can immediately invalidate and close out their specific performance record using `terminate_assessment_result`. You also have access to `get_challenge` which retrieves detailed component information for any challenge used in an assessment.

Here's what your agent does when it runs: It combines these tools. For example, you tell it to list the open assessments and then invite a group of people from a specific cohort. Or, you ask it to pull Candidate X’s results, run `get_assessment_result` for the score, and then use `get_assessment_result_exhibit` to get the technical proof of how they performed on the code challenges.

## Tools

### archive_assessment
Moves an existing assessment into an archived state.

### cancel_invitation
Stops or revokes a specific assessment invitation for a candidate.

### create_assessment_result_review
Generates and saves a specific review document for an existing assessment result.

### create_assessment
Builds and initiates a new coding assessment within the system.

### get_assessment_result_exhibit
Retrieves detailed, structured exhibit data to analyze specific code performance on a result.

### get_assessment_result
Pulls the core data and overall score for an individual candidate's completed test.

### get_assessment
Retrieves all details about a specified coding assessment, including its settings.

### get_challenge
Gets the details for a single challenge component used within an assessment.

### invite_candidates
Sends assessment invitations to specific, named candidates.

### invite_candidates_via_cohort
Bulk invites multiple candidates using a pre-defined group (cohort).

### list_assessment_cohorts
Retrieves a list of existing assessment groups or cohorts.

### list_assessment_results
Lists the scores and status for multiple completed assessments across candidates.

### list_assessments
Retrieves a list of all available assessment types, regardless of their current status.

### list_challenges
Gets a comprehensive list of all available coding challenges in the system.

### publish_assessment
Makes an assessment live and active for candidates to take.

### schedule_retry_assessment_result
Resets a candidate's result, allowing them to retake the assessment at a later date.

### terminate_assessment_result
Immediately invalidates and closes out a specific candidate's test result.

### unarchive_assessment
Restores an archived assessment, making it viewable again without publishing it.

### unpublish_assessment
Reverses the publication status of an assessment.

### update_assessment_result_review
Modifies or updates a pre-existing review document for an assessment result.

## Prompt Examples

**Prompt:** 
```
List all active assessments and their IDs.
```

**Response:** 
```
I've retrieved your assessments. You have 3 active ones: 'Senior Fullstack Engineer' (ID: asmt_123), 'Junior Frontend' (ID: asmt_456), and 'Python Data Science' (ID: asmt_789).
```

**Prompt:** 
```
Invite candidate 'John Doe' (john@example.com) to the 'Senior Fullstack' assessment.
```

**Response:** 
```
I've sent the invitation to John Doe for the Senior Fullstack assessment (ID: asmt_123). The invitation ID is inv_987.
```

**Prompt:** 
```
Show me the performance exhibit for result ID res_555.
```

**Response:** 
```
For result res_555, the candidate scored 85%. They excelled in 'Algorithm Efficiency' but struggled slightly with 'Unit Test Coverage'. Would you like to see the full metadata?
```

## Capabilities

### Manage Assessment Lifecycle
Create, list, publish, or archive coding tests using functions like `create_assessment`.

### Control Candidate Invitations
Send invitations to candidates individually or via a defined group (cohort) using the `invite_candidates` tool.

### Retrieve Performance Exhibits
Get detailed, analyzed data on a candidate's performance and code quality using `get_assessment_result_exhibit`.

### Adjust Assessment Status
Terminate results or schedule retakes for candidates who need another attempt via `terminate_assessment_result` or `schedule_retry_assessment_result`.

### Analyze Groups of Candidates
List and organize assessments into groups (cohorts) to manage large hiring cycles efficiently using `list_assessment_cohorts`.

## Use Cases

### The Candidate Needs a Re-Test
A candidate failed the initial coding exam but needs to demonstrate improvement. Instead of emailing the recruiter and asking for an extension, you prompt your agent: "Schedule a retry for John Doe on the 'Senior Fullstack' assessment." The server runs `schedule_retry_assessment_result` and updates the status immediately.

### Auditing Assessment Status
The team needs to know which assessments are active, archived, or pending. You ask your agent to run `list_assessments`. It returns a list of all types, allowing you to quickly identify if the 'Junior Frontend' assessment was accidentally set to archived.

### Analyzing Code Weaknesses
A candidate scored 75%, but you suspect a weakness in unit testing. You run `get_assessment_result_exhibit` for that result ID. The output doesn't just say 'low score'; it highlights the specific sections where 'Unit Test Coverage' was weak, pointing out exactly what needs improvement.

### Stopping a Bad Lead
A candidate turns out to be a bad fit and should not proceed. Instead of manually changing their status in three different tools, you tell your agent: "Terminate the result for Candidate X." The server runs `terminate_assessment_result`, instantly removing the data from active review.

## Benefits

- Get granular data instantly: Instead of just seeing a score, use `get_assessment_result_exhibit` to get the raw performance metrics and code analysis. You know exactly *why* they scored what they did.
- Control the flow: Need to pause a candidate or let them retake it? Use `schedule_retry_assessment_result`. You manage the assessment lifecycle, not just the score—this gives you full governance.
- Scale your outreach: When running large hiring drives, use `invite_candidates_via_cohort` and `list_assessment_cohorts`. This lets you scale invitations to hundreds of people with a single command.
- Keep data clean: Use `terminate_assessment_result` when a candidate withdraws early. You prevent stale or inaccurate results from polluting your historical data, keeping the pipeline accurate.
- Visibility on demand: Need a list of all available tests? Run `list_assessments`. This gives you a quick audit of every assessment type you've built without needing to navigate any UI tabs.

## How It Works

The bottom line is, you stop switching between your ATS and your assessment platform; your AI handles the entire technical hiring pipeline from one spot.

1. Subscribe to the Qualified.io MCP Server and provide your API key.
2. Your AI client uses natural language prompts (e.g., "Send assessment to Jane Doe").
3. The server executes the necessary tools (like `invite_candidates`), retrieving structured data directly into your chat.

## Frequently Asked Questions

**How do I get performance details using get_assessment_result_exhibit?**
You must provide the specific result ID for `get_assessment_result_exhibit`. This function pulls detailed, structured data—like algorithm efficiency scores and unit test coverage—which is much more useful than just the overall percentage.

**Can I make an assessment visible to candidates using publish_assessment?**
Yes. `publish_assessment` changes the status of a draft, making it live for candidates to take. If you need to take it down later, use `unpublish_assessment`.

**What is the difference between list_assessments and list_challenges?**
`list_assessments` shows every container assessment (e.g., 'Fullstack Test'). `list_challenges` only lists the individual, granular coding tasks that make up those larger assessments.

**If a candidate withdraws, should I use terminate_assessment_result?**
Yes. Running `terminate_assessment_result` immediately invalidates their score in the system. This prevents inaccurate data from skewing your hiring metrics later on.

**How do I get a list of all assessment types? Use list_assessments.**
`list_assessments` retrieves every defined assessment type you have built, regardless of whether they are currently published or archived. This is great for auditing.

**I need to reschedule a candidate's attempt. How do I use the `schedule_retry_assessment_result` tool?**
It updates the result status and sets a new window for the retake. You just pass the original assessment ID, the candidate's identifier, and the desired date/time frame. The system handles reopening their test access.

**A candidate shouldn't take the test anymore; how do I use `cancel_invitation`?**
It immediately revokes the invitation link and notifies the user that their assessment access is terminated. You only need to provide the specific invitation ID for it to work.

**I'm starting a new hiring cycle and need to create an assessment first. How do I use `create_assessment`?**
It generates the unique assessment record before you publish anything. You provide the initial title, description, and basic settings; that returns the Assessment ID needed for all future actions.

**Can I see a summary of a candidate's test performance without pulling the full raw data?**
Yes. Use the `get_assessment_result_exhibit` tool. It provides a streamlined view of the candidate's performance, making it easier for your AI to summarize the results for you.

**How do I invite multiple candidates to a specific assessment at once?**
You can use the `invite_candidates` tool. Simply provide the assessment ID and the candidate data payload, and the server will handle the invitations through the Qualified.io API.

**Is it possible to reopen a test for a candidate who had technical issues?**
Yes, you can use the `schedule_retry_assessment_result` tool with the specific Result ID to allow the candidate to retake or continue their assessment.