# Troops MCP

> Troops connects your AI agent directly to your HRIS backend. It manages everything from job posting creation (`create_job`) and candidate profile registration (`create_candidate`) to contract drafting, e-signature triggering, and time sheet submission. You handle the entire talent lifecycle—recruiting, contracting, and payroll tracking—all through natural conversation.

## Overview
- **Category:** productivity
- **Price:** Free
- **Tags:** job-management, candidate-tracking, timesheets, hr-automation, recruitment-workflow

## Description

You connect your AI agent straight into your HRIS backend with Troops. This MCP Server manages the entire employee lifecycle—from posting a job to submitting payroll hours—all through natural conversation. You handle recruiting, contracting, and time tracking without leaving your chat window.

**Managing Job Listings:**
You can check out all the open roles right now using `list_jobs`, which lets you filter results by current status. Need a new opening? Just call `create_job` and define every parameter for an entirely brand-new job posting. This keeps your listings updated fast.

**Building Out Your Candidate Pipeline:**
When someone applies, you register them into the system as a candidate record using `create_candidate`. You never have to worry about tracking down old data because you can grab the full profile and history for any existing ID instantly with `get_candidate`. This keeps your talent pool clean and up-to-date.

**Processing Contracts:**
The hiring process moves into gear when you draft a formal contract using `generate_contract`. You just feed it the specific employee data, and it spits out a legally sound document. Once that's ready, you initiate the e-signature flow by calling `sign_contract`, which triggers the entire electronic signing process for everyone involved.

**Tracking Time & Pay:**
Finally, when an employee is working against an active contract, you use `submit_timesheet`. This tool manages and updates recorded hours worked directly into their payroll records. It ensures every hour is logged correctly against the right agreement.

When your agent uses these tools together—say, calling **`list_jobs`** to find a role, then using **`create_candidate`** on a promising applicant, followed by **`get_candidate`** to review their history, generating the contract with **`generate_contract`**, getting signatures via **`sign_contract`**, and finally logging hours with **`submit_timesheet`**—you’re handling the entire employee lifecycle in one go. You don't have to jump between five different systems just to hire someone or pay them.

## Tools

### create_candidate
Registers a person into your system as a candidate record.

### create_job
Creates an entirely new job opening with defined parameters.

### generate_contract
Drafts and prepares a formal contract document based on specific employee data.

### get_candidate
Retrieves the complete profile and history for an existing candidate ID.

### list_jobs
Lists all job offers currently active in your system, allowing filtering by status.

### sign_contract
Initiates the electronic signature process for a generated contract.

### submit_timesheet
Submits and updates recorded hours worked against an employee's active contract.

## Prompt Examples

**Prompt:** 
```
List all published job offers in the system.
```

**Response:** 
```
I've retrieved the published jobs. There are currently 3 active offers: 'Senior Frontend Developer' (ID: job_001), 'Product Manager' (ID: job_002), and 'HR Specialist' (ID: job_003).
```

**Prompt:** 
```
Register a new candidate: Alice Smith, alice.smith@email.com.
```

**Response:** 
```
Alice Smith has been successfully registered as a candidate with ID: cand_987. You can now use this ID to generate contracts or view her profile.
```

**Prompt:** 
```
Generate a contract for candidate cand_987 for job job_001 with a salary rate of 55.
```

**Response:** 
```
The contract has been generated for Alice Smith for the Senior Frontend Developer position. Contract ID: ct_456. Would you like me to trigger the electronic signature process now?
```

## Capabilities

### Manage Job Listings
Retrieve a list of open jobs with `list_jobs`, or create brand-new job postings with specific details using `create_job`.

### Onboard Candidates
Register new people into your system using `create_candidate`, and fetch their full history and profile data instantly via `get_candidate`.

### Process Contracts
Draft a legally sound contract with `generate_contract`, then initiate the e-signature process by calling `sign_contract`.

### Report Hours Worked
Submit and manage time sheets for employees associated with active contracts using `submit_timesheet`.

## Use Cases

### Hiring an urgent role.
The manager needs a new Product Manager immediately. Instead of logging into the job board to manually fill out every field, they tell their agent: 'Create a job for a PM in NYC.' The agent runs `create_job`, getting the ID back so the manager can then use that ID to track related candidate applications.

### Bringing a new hire onboard.
The recruiter has signed the offer. They ask their agent, 'Get Alice's profile and generate her contract for job_001.' The agent runs `get_candidate`, pulls necessary details, then calls `generate_contract` using that data, saving hours of manual record-keeping.

### End-of-quarter payroll cleanup.
The Ops team needs to reconcile time logs. They prompt their agent: 'Submit timesheets for all employees under contract ct_456.' The agent runs `submit_timesheet`, ensuring every worker's hours are logged and ready for the accounting system.

### Checking candidate eligibility.
The hiring manager is reviewing a final-round candidate. They tell their agent, 'What's the full history for cand_987?' The agent calls `get_candidate` and returns the entire profile, letting the manager make an informed decision without checking multiple tabs.

## Benefits

- Need a full picture of all open roles? Call `list_jobs`. You get an immediate, filtered report without visiting the job board dashboard and clicking through filters. It's instant visibility into your current hiring capacity.
- Ending the employment process is clean: Use `generate_contract` to draft the legal document, then follow up with `sign_contract`. Your agent handles that two-step workflow seamlessly, eliminating manual file transfers between systems.
- Candidate data stays accurate. When you use `get_candidate`, your AI client gets a complete profile history—not just the last few entries. This ensures every hiring decision is based on full context, not partial views.
- Keep payroll compliant by automating time entry. With `submit_timesheet`, you ensure hours are logged directly against active contracts, minimizing billing errors and making timesheet review fast.
- Job creation is simple: Instead of navigating a form with 15 required fields, just ask your agent to call `create_job`. It handles the API payload construction for location, dates, and titles automatically.

## How It Works

The bottom line is that you talk naturally to your AI client, and it handles the technical API sequence of interacting with Troops, so you never have to leave your chat window.

1. Subscribe to the Troops server and enter your unique API key.
2. Connect your preferred AI client (Claude, Cursor, etc.) to the MCP endpoint.
3. Start talking. Your agent translates your intent into specific tool calls—like 'List all open roles' or 'Sign contract for cand_123'—and executes them against your HR system.

## Frequently Asked Questions

**How do I list all open jobs using the Troops MCP Server?**
You call `list_jobs`. This tool pulls a comprehensive list of current job openings, letting you check active roles without visiting the main dashboard. You can even filter this list by status.

**What information does `get_candidate` retrieve?**
`get_candidate` retrieves all stored data for a specific candidate ID. This includes their full profile history and any associated records, giving you complete context on the person.

**Does Troops MCP Server handle contract signing automatically?**
No. `generate_contract` only drafts the document. You must follow up by calling `sign_contract`, which is what actually triggers the e-signature process and finalizes the agreement.

**How do I submit timesheets using the Troops MCP Server?**
To log hours, you use `submit_timesheet`. This tool requires an active contract ID to ensure that the submitted time sheets are accurately mapped against a live employment record for payroll purposes.

**When I use `create_job`, what specific details must I provide for a job offer?**
You need to specify the role title, location, and expected start date. The tool requires these parameters so it can correctly structure the new listing in your HR system.

**What data is captured when I run `create_candidate`? Does it save more than just a name?**
It captures comprehensive details, including full legal name, primary email, and candidate source. This initial registration allows you to build a complete profile for later use in contract generation.

**Does `generate_contract` create the final legally binding document?**
No, it generates a structured draft using your company's template and specified job details. This output requires manual review before you trigger the electronic signature process via `sign_contract`.

**How can I filter my results when listing jobs with `list_jobs`?**
You can filter by status, such as 'active' or 'draft'. This lets your agent pull only the job openings you need to see without going through every entry.

**How can I see all currently published job offers?**
You can use the `list_jobs` tool. You can also filter the results by status, such as 'published', to see only active listings.

**Is it possible to register a new candidate directly through the AI?**
Yes! Use the `create_candidate` tool by providing the candidate's first name, last name, and email address to add them to your Troops database.

**How do I submit hours worked for a specific contract?**
Use the `submit_timesheet` tool. You will need to provide the `contract_id` and a JSON array representing the daily hours worked.